2015-07-10 15 views
6

Tôi đang cố gắng thiết lập những gì tôi nghĩ là một hộp cơ bản khá đơn giảnTại sao hình ảnh bên trong flexbox không co lại?

Tôi có div chứa. Cho phép nói cho toán dễ dàng rằng nó có một max-width: 1000px;. Tôi đã đặt nó thành display: flex;

Bên trong nó tôi có hai div. div1 và div2. Tôi muốn div2 luôn chiếm đúng 300px, với div1 mở rộng/ký hợp đồng ở bên trái khi cửa sổ trình duyệt được thay đổi kích thước.

Div1 thực sự chứa hình ảnh văn bản được tạo động, dựa trên nội dung người dùng nhập vào (hệ thống CMS cũ, không hỏi). Nói cách khác, nó có thể có một hình ảnh thực sự rộng trong đó, và tôi không biết trước thời gian hình ảnh sẽ thực sự rộng như thế nào. Tôi gặp sự cố khi người dùng đặt nhiều văn bản và hình ảnh quá rộng. IE nếu hình ảnh trong div1 kết thúc lên đến 1500px rộng, nó làm cho div1 rộng 1500px, đẩy div2 ra khỏi div chứa.

#container { 
    max-width: 1000px; 
    display: flex; 
} 

#div1 { 
    flex: 1 1 auto; 
} 

#div1 img { 
    max-width: 100%; /*this doesn't work*/ 
} 

#div2 { 
    width: 300px; 
    flex: 1 0 auto; 
} 

Làm cách nào để bắt buộc div1 luôn tôn trọng kích thước tối đa, bất kể kích thước của hình ảnh lớn như thế nào?

+0

Vấn đề của bạn là [Làm thế nào tôi có thể nhận được hành vi FF 33.x Flexbox trong FF 34.x?] (Http://stackoverflow.com/questions/26895349/how-can-i-get-ff-33-x-flexbox-hành vi-in-ff-34-x) + '# div2 {flex: 1 0 auto}'. – Oriol

Trả lời

6

Để cung cấp một kích thước tối thiểu mặc định hợp lý hơn cho các hạng mục flex, đặc điểm kỹ thuật này giới thiệu một giá trị auto mới là giá trị ban đầu của min-widthmin-height tài sản. - W3C

Chrome chưa triển khai nhưng Firefox đã có. Những gì bạn có thể làm là:

#div1 { 
    flex: 1 1 100%; 
    min-width: 0; /* for Firefox and future Chrome etc. */ 
} 

#div2 { 
    width: 300px; 
    flex: 0 0 auto; /* do not grow or shrink the size */ 
} 

JSFIDDLE DEMO

+0

Nó không phải là một vấn đề với div2 phát triển hoặc thu hẹp. Nó vẫn đúng kích cỡ, div1 chỉ đẩy nó ra khỏi div chứa nếu nó quá bog –

+2

Tôi cập nhật nó, và tôi đoán vấn đề chỉ xuất hiện trên Firefox, đã được sửa ngay bây giờ. – Stickers

+0

Tôi vừa định nói, "vâng tôi vừa thử nghiệm và bạn nói đúng, nó hoạt động, trong Chrome". Cảm ơn! Trình duyệt không ổn định .... –

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