2014-11-12 14 views
33

Chúng tôi sử dụng flexbox rất nhiều cho một ứng dụng máy tính để bàn như tìm kiếm ứng dụng web và nó đã được làm việc ra tuyệt vời.Làm cách nào để nhận được hành vi Flexbox FF 33.x trong FF 34.x?

Nhưng với sự mới nhất Developer Edition Firefox (35.0a2) bố trí không như mong đợi (nó phát triển vượt ra ngoài khung nhìn): http://tinyurl.com/k6a8jde

này hoạt động tốt trong Firefox 33.1.

tôi sẽ giả định này có gì để làm với những thay đổi flexbox mô tả ở đây: https://developer.mozilla.org/en-US/Firefox/Releases/34/Site_Compatibility

Nhưng thật đáng buồn tôi chưa thể tìm ra một cách để có được những hành vi FF 33.x trong FF 34 hoặc 35. x.

Bất kỳ trợ giúp nào về cách bố trí hoặc cách tách biệt vấn đề tốt hơn đều được đánh giá cao.

+0

http://stackoverflow.com/q/36247140/3597276 –

Trả lời

59

Sự khác biệt có liên quan là "kích thước tối thiểu ngụ ý của các mục flex", một tính năng mới trong thông số kỹ thuật flexbox. (hoặc đúng hơn, một đối tượng địa lý đã bị xóa và được giới thiệu lại)

Cách đơn giản (ngắn nhất) để khôi phục hành vi cũ là thêm quy tắc kiểu này: * { min-height:0 } (hoặc min-width, nếu bạn lo ngại về tràn flexbox, nhưng có vẻ như testcase của bạn chỉ gặp rắc rối với tràn từ một container flex thẳng đứng).

Cập nhật fiddle, với sự thay đổi đó: http://jsfiddle.net/yoL2otcr/1/

Thực sự, bạn chỉ nên dùng cần phải thiết lập min-height:0 trên các yếu tố cụ thể - đặc biệt, bạn cần nó trên mỗi phần tử rằng:

  1. là một đứa trẻ của một thùng chứa theo định hướng 'cột'

  2. có một hậu duệ cao, mà bạn muốn cho phép tràn (có lẽ sẽ được xử lý một cách duyên dáng bởi một trung gian yếu tố điện tử với "overflow: scroll", như trường hợp ở đây)

(Trong trường hợp của bạn, có thực sự là một đống lồng nhau của các yếu tố này, kể từ khi bạn có một yếu tố cao nhất bên trong nhiều container flex lồng nhau. Vì vậy, bạn có thể cần min-height:0 tất cả mọi cách, thật không may.)

(Nếu bạn tò mò, lỗi này có nhiều thông tin hơn bị hỏng trên web do thay đổi đặc điểm này: https://bugzilla.mozilla.org/show_bug.cgi?id=1043520)

+0

Cảm ơn đã sửa chữa đề nghị. Tôi đã có thể có được những hành vi mong muốn trong FF 33 và FF 35, và bây giờ có thể bình tĩnh nhận được để dưới cùng của điều này và làm cho chuyển sang sử dụng này chỉ khi hoàn toàn cần thiết. – Timm

+0

Tôi có một vấn đề tương tự với một hàng các mặt hàng có chứa một số lượng hình ảnh động. Những hình ảnh được sử dụng để mở rộng quy mô, nhưng kể từ FF 34 họ đã tràn container. Trong trường hợp của tôi, tôi cũng phải thiết lập 'min-width: 0' trên các mặt hàng flex. – beardofprey

+0

Yup - nó phụ thuộc vào cách mà thùng chứa flex của bạn được định hướng. Đối với 'flex-direction: row' (mặc định), bạn muốn đặt' min-width: 0' trên các con của nó, để cho phép chúng co lại bên dưới kích thước nội dung tối thiểu của chúng. Đối với 'flex-direction: column', bạn muốn' min-height: 0' trên con của nó. (Tuy nhiên, khi nghi ngờ, bạn nên đặt cả 'min-width' &' min-height' thành 0, miễn là làm như vậy không bị dẫm lên giá trị 'min-width' mà bạn đặt ở vị trí khác – dholbert

1

không có bản sửa lỗi nào trong số này có hiệu quả đối với tôi, mặc dù chúng hoạt động. Trong trường hợp của tôi, tôi đã cung cấp một dự phòng display: table-cell, dường như đang tiếp quản. Sử dụng Sass, kể cả nó như thế này, dự phòng làm việc cho IE mà không ảnh hưởng FF:

flex: auto; // or whatever 
.ie & { 
    display: table-cell; 
} 
+0

@EvaMadrazo Tôi không đồng ý, nó thực sự trả lời câu hỏi cho một trường hợp sử dụng cụ thể (khi bạn có dự phòng cho IE nhưng vẫn muốn có chức năng mong muốn trong FF) – wpercy

+0

mm bạn nói đúng, xin lỗi! Tôi đang xóa nhận xét trước đó. –

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