2013-11-26 23 views
5

vì vậy, tôi đã tạo thanh tiến trình hoạt hình đơn giản trong jQuery. you can view it here.thay đổi hành vi ẩn CSS tràn

Tôi cần một số mã trong bài viết này, vì vậy đây là CSS của tôi:

.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; 
} 

câu hỏi của tôi: như thanh tiến trình đạt đến cuối cùng, các yếu tố "pop" ra khỏi sự tồn tại khi họ tràn div và được ẩn, thay vì ở trạng thái hiển thị cho đến khi chúng hoàn toàn nằm ngoài div. cụ thể, khi mũi tên CSS biến mất khi nó đến cuối, kết thúc của thanh tiến trình thay đổi từ một tam giác thành một đường thẳng, điều này thực sự là chói tai trực quan. là có cách nào để thay đổi hành vi này, hoặc trong CSS hoặc jQuery, để có các yếu tố ẩn "trơn tru"?

+0

Một điều cần đề cập đến, đó là không cần phải có 'màn hình : inline-block; 'và' float: left; 'trên cùng một phần tử. Trừ khi có một số lý do cho điều đó? –

+0

@JoshPowell Tôi đã từng thấy điều tương tự nhiều lần trong quá khứ. Nếu nó được thực hiện trên mục đích nó có thể là vì IE7 không hỗ trợ inline-block, do đó nó có thể phục vụ như một dự phòng? Chỉ là một đoán, mặc dù tôi không biết nếu nó hỗ trợ phao hoặc .. –

+0

@JoshC Hmm đó là giá trị xem xét. Tôi không phải là người hỗ trợ IE7 nhưng nó sẽ là một điều tốt để ghi nhớ nếu tôi đã từng có. –

Trả lời

5

Altenatively để trả lời JoshC của,

bạn có thể bọc nó trong một container như 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 */ 
} 

Chỉ cần chắc chắn rằng chiều rộng .progess lớn hơn những gì bạn cần (văn bản, mũi tên, và thanh)

+0

Điều này thực sự được loại bỏ các mũi tên giật, mà làm cho nó tốt hơn. – gotohales

+0

đây cũng là một giải pháp tuyệt vời.cảm ơn – amagumori

+0

điều này thực sự đã kết thúc được một giải pháp tốt hơn cho tôi do jerk mũi tên nói trên với việc thực hiện của joshC. cảm ơn. – amagumori

5

Bạn đang tìm kiếm white-space: pre.

Here is an updated example - nó hoạt động như thế nào bạn muốn nó ngay bây giờ.

.filename { 
    white-space: pre; 
} 

EDIT

Nếu bạn muốn loại bỏ các trục trặc ở phần cuối của phim hoạt hình (nơi mũi tên nhảy đến một dòng sản phẩm mới), sử dụng đánh dấu sau/CSS:

jsFiddle example - ít HTML bây giờ, vì mũi tên là một phần tử giả.

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

kinh nghiệm luôn luôn đếm :) – thenewseattle

+1

@JoshC Điều này là mát mẻ, tôi không nghĩ rằng không gian trắng trước, có thể ... – PSL

+0

yeah, đây là một giải pháp rất mát mẻ. cảm ơn bạn! tôi không biết gì về thuộc tính không gian trắng. – amagumori

Các vấn đề liên quan