2012-03-30 26 views
5

Tôi có một hình ảnh với float:left và tôi muốn hình ảnh đó tràn vào phụ huynh của nó, nhưng cắt bỏ tình trạng tràn. Đây là những gì có vẻ như không có overflow quy tắc:Tôi có thể sử dụng tràn: ẩn mà không có chiều cao rõ ràng bằng cách nào đó không?

                                    enter image description here

Dưới đây là những gì tôi muốn:

                                    enter image description here

Dưới đây là một fiddle: http://jsfiddle.net/ZA5Lm/

For some reason, nó đã quyết định rằng overflow:hidden mà không có một kết quả chiều cao rõ ràng trong các yếu tố phát triển.

Tôi có thể đạt được hiệu quả sau này mà không cần đặt chiều cao rõ ràng không? Chiều cao rõ ràng không hoạt động vì tôi muốn div này tự động kích thước dựa trên chiều dài nội dung và chiều rộng của trình duyệt.

+0

Hình ảnh có chiều rộng cố định không? – Jon

+2

'overflow: hidden' (hoặc bất kỳ giá trị nào khác ngoài' visible') gây ra một hộp để tạo ra một bối cảnh định dạng khối để chứa các phao. Việc mở rộng của hộp để phù hợp với phao của nó chỉ là một trong những tác dụng phụ khi hộp có 'chiều cao: auto' (không có chiều cao rõ ràng). Tôi không thể tìm thấy bất kỳ lời giải thích cho * tại sao * chính xác một 'tràn 'mà không phải là' có thể nhìn thấy' tạo ra một BFC, nhưng nó không. – BoltClock

+0

Điều đó nghĩa vụ phải làm khi bạn thay đổi kích thước khung nhìn [như ở đây] (http://jsfiddle.net/YvEcK/)? – user123444555621

Trả lời

3

Theo ý kiến ​​của tôi, việc sử dụng tràn: ẩn mà không có thứ nguyên cài đặt không có ý nghĩa. Nếu bạn không muốn để xác định chiều cao của container và nếu hình ảnh của bạn có một chiều rộng cố định bạn có thể sử dụng giải pháp này: http://jsfiddle.net/ZA5Lm/11/

Hình ảnh được định vị theo tuyệt đối, lấy nó ra khỏi giáo khoa lưu lượng. Tuy nhiên - và tôi biết rằng điều này có thể xấu - bạn cần phải chỉ định một padding-left để di chuyển văn bản ra khỏi hình ảnh.

+0

Cảm ơn, tôi nghĩ giải pháp của bạn sẽ được chấp nhận, sẽ thử và xem. Tôi tò mò, tuy nhiên, là lý do tại sao bạn nghĩ rằng tràn: ẩn làm cho không có ý nghĩa mà không có một kích thước _explicit_. Lưu ý rằng phần tử gốc có kích thước xác định _regardless_ của bất kỳ kích thước nào được đặt rõ ràng hay không. –

+0

Với yếu tố cha mẹ, bạn có nghĩa là ** div **? Chiều cao của nó phụ thuộc vào nội dung của nó (nếu không có chiều cao được chỉ định). Div không thể phát triển với văn bản và bỏ qua chiều cao hình ảnh. tràn chỉ có thể ẩn khi nó có một ranh giới, đó là lý do tại sao tôi nói nó không có ý nghĩa. –

+0

Tôi có nghĩa là div. Nếu không có tràn: ẩn nó _does_ phát triển với văn bản và bỏ qua chiều cao hình ảnh. Trong tình huống này, div đã biết biên giới, hình ảnh đã được biết đến biên giới, do đó, điều duy nhất còn lại là giao nhau và cắt hình ảnh cho phù hợp. Điều này có hoàn toàn được xác định rõ ràng không? –

0

Tôi đã xem một bài đăng trên CSS-Tricks và nó đã nói về điều này. Đi check it out tại - http://css-tricks.com/minimum-paragraph-widths/

Nó có thể là hữu ích :) Chúc may mắn

Cũng chỉ nhìn mã của bạn và tôi đã thêm float: right để div của bạn để nó trông như thế này -

div { 
border: 1px solid black; 
padding: 10px; 
float: right 
/*overflow: hidden;*/ 
} 

Bạn không chắc chắn nếu đó là những gì bạn muốn?

+0

Chỉ cần thử điều đó - có vẻ như không làm cho kết quả của tôi được hiển thị trong câu hỏi của tôi, có nghĩa là nó không phải là thứ tôi muốn :) –

2

Đó là một chút khôn lanh (tôi sử dụng tương đối + định vị tuyệt đối và một đệm cụ thể để xác định vị trí văn bản), nhưng nó có tác dụng bạn hỏi mà không thay đổi đánh dấu hoặc thiết height:

body { 
    padding: 10px; 
} 
img { 
    float: left; 
    position: absolute; 
    left : 10px; 
} 
div { 
    border: 1px solid black; 
    padding: 10px 10px 10px 280px; 
    position : relative; 
    overflow: hidden; 
} 

Tôi chỉ phong cách chèn (thậm chí nếu float:left sẽ không còn cần thiết)

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