2013-11-26 3 views
5

그래서 jQuery에서 간단한 애니메이션 진행률 표시 줄을 만들었습니다. you can view it here.CSS 오버 플로우 숨김 동작이 변경되었습니다.

나는이 게시물에 몇 가지 코드가 필요합니다, 그래서 여기 내 CSS의 :

.progress { 
    height: 14px; 
    width: 300px; 
    background: #111; 
    border-radius: 5px; 
    vertical-align: middle; 
    display: inline-block; 
    overflow: hidden; 
    color: white;   
} 

.filename { 
    font-size: 10px; 
    color: white; 
    position: relative; 
} 

.progresstop { 
    padding: 4px; 
    width: 40px; 
    border-top-left-radius: 5px; 
    border-bottom-left-radius: 5px; 
    height: 8px; 
    float: left; 
    background: #c44639; 
    vertical-align: middle; 
    display: inline-block; 
} 

.arrow-right { 
    width: 0px; 
    height: 0px; 
    border-style: solid; 
    background: #111; 
    border-width: 7px 7px 7px ; 
    border-color: transparent transparent transparent #c44639; 
    float: left; 
    display: inline-block; 
} 

내 질문 : 진행 표시 줄이 끝에 도달으로, 존재의 밖으로 요소 "팝"그들이 DIV 오버 플로우 때 그들이 div에서 완전히 벗어날 때까지 보이지 않게 숨겨져 있습니다. 특히 CSS 화살표가 끝날 때 사라지면 진행 막대의 끝이 삼각형에서 실제로 시각적으로 들쭉날쭉 한 선으로 바뀝니다. 요소가 "부드럽게"숨겨 지도록 CSS 또는 jQuery에서이 동작을 변경할 수있는 방법이 있습니까?

+0

한 가지를 필요로하는 것보다 더 큰 있는지 확인이 필요하지 않습니다 그냥 확인 : inline-block;과'float : left; '를 같은 엘리먼트에 사용한다. 그 이유가없는 한? –

+0

@ JoshPowell 나는 과거에도 같은 것을 여러 번 보았습니다. IE7이 인라인 블록을 지원하지 않기 때문에 의도적으로 끝난 것이므로 대체로 사용할 수 있습니까? 그냥 짐작할 수 있겠지만, 내가 떠 다니는 것을 지원하는지 모르겠다. .. –

+0

@JoshC 흠. 그럴 가치가있다. 나는 IE7을 지원하는 사람이 아니지만 내가해야한다면 마음에 두는 것이 좋다. –

답변

5

Altenatively JoshC의 대답에,

당신은 this fiddle

HTML

을 같은 용기에 포장 할 수
<div id="progress-container"> 
    <div class='progress'> 
     <div class='progresstop'></div> 
     <div class='arrow-right'></div> 
     <div class='filename'>FILENAME</div> 
    </div> 
</div> 

CSS

#progress-container { 
    height: 14px; 
    width: 300px; 
    background: #111; 
    border-radius: 5px; 
    vertical-align: middle; 
    display: inline-block; 
    overflow: hidden; 
    color: white; 
} 

.progress { 
    height: 14px; 
    width: 500px; /* large value */ 
} 

,`디스플레이를 위해 .progess 폭이 당신이 언급하는 (텍스트, 화살표, 바)

+0

이것은 실제로 화살표 바보를 없애 버려서 더 나아졌습니다. – gotohales

+0

또한 훌륭한 솔루션입니다.덕분에 – amagumori

+0

이 사실 joshC의 구현과 함께 앞선 화살표 얼간이로 인해 더 나은 해결책이되었습니다. 감사. – amagumori

5

당신은 white-space: pre을 찾고 있습니다.

Here is an updated example - 이제 원하는대로 작동합니다.

.filename { 
    white-space: pre; 
} 

편집

당신이 (화살표 새로운 라인으로 이동) 애니메이션의 끝에서 결함을 제거하려면, 다음과 같은 마크 업/CSS 사용

jsFiddle example를 - 이하 화살표는 의사 요소이므로 HTML을 사용하십시오.

HTML

<div class='progress'> 
    <div class='progresstop'></div> 
    <div class='arrow-right'></div> /* Removed this, and made the arrow a psuedo element. */ 
    <div class='filename'>FILENAME</div> 
</div> 

CSS

.filename:before { 
    content:"\A"; 
    width: 0px; 
    height: 0px; 
    border-style: solid; 
    border-width: 7px 7px 7px; 
    border-color: transparent transparent transparent #c44639; 
    position:absolute; 
} 
+0

경험은 항상 카운트 :) – thenewseattle

+1

@ JoshC 이것은 멋지다, 나는 공백 사전을 생각하지 못했습니다. – PSL

+0

예, 이것은 매우 멋진 해결책입니다. 고맙습니다! 나는 공백 속성에 대해 전혀 몰랐습니다. – amagumori