2013-07-04 27 views
6

Tôi đang cố gắng sắp xếp bố cục flexbox của mình để nó tương thích với các phiên bản mới nhất của IE/Firefox/Safari và tôi gặp sự cố với Firefox/Safari.vấn đề tương thích với css3 flexbox với Firefox và Safari

Đề xuất bố trí:

----------------- 
    header 
----------------- 
    | 
    | 
    | 
nav | section 
    | 
    | 
    | 
    | 

Trong Firefox và Safari <section> là bên dưới nav

CSS:

body { 
    width:50%; 
    height:100%; 
    display: -ms-flexbox; 
    -ms-box-orient: horizontal; 

    display: -webkit-flex; 
    display: -moz-flex; 
    display: -ms-flexbox; 
    display: flexbox; 

    -webkit-flex-flow: row wrap; 
    -moz-flex-flow: row wrap; 
    -ms-flex-flow: row wrap; 
    flex-flow: row wrap; 
} 

header { 
    padding-top:100px; 
    -webkit-flex: 1 100%; 
    -moz-flex: 1 100%; 
    -ms-flex: 1 100%; 
    flex: 1 100%; 
} 

nav { 
    -webkit-flex: 1; 
    -moz-flex: 1; 
    -ms-flex: 1; 
    flex: 1; 
    width:10%; 
    height:100%; 
} 

section { 
    -webkit-flex: 4; 
    -moz-flex: 4; 
    -ms-flex: 4; 
    flex: 4; 
    width:40%; 
    height:100%; 
} 

Trả lời

9

Trước hết, điều này:

body { 
    display: -webkit-flex; 
    display: -moz-flex; 
    display: -ms-flexbox; 
    display: flexbox; 
} 

nên là thế này:

body { 
    display: -ms-flexbox; 
    display: -webkit-flex; 
} 
@supports (flex-wrap: wrap) { /* hide from the incomplete Flexbox implementation in Firefox */ 
    body { 
     display: flex; 
    } 
} 

này không làm bất cứ điều gì vì IE không có một thực hiện các dự thảo 2009 Flexbox:

body { 
    -ms-box-orient: horizontal; 
} 

Bạn cũng đã thêm tiền tố MOZ trên các thuộc tính từ bản nháp Flexbox tiêu chuẩn, nhưng Firefox đã thực thi các tiền tố đó miễn phí (chỉ các thuộc tính năm 2009 phải có tiền tố moz).

Ngay cả khi bạn khắc phục tất cả những việc này, nó vẫn không hoạt động trong Safari hoặc Firefox. Tại sao?

  • Cho đến khi iOS7 xuất hiện, Safari chỉ thực hiện dự thảo Flexbox 2009. Không thể triển khai box-lines: multiple, đó là những gì cho phép gói trong bản nháp đó
  • Firefox có triển khai cho dự thảo năm 2009 bản nháp chuẩn, nhưng không hỗ trợ triển khai gói.
+0

Cảm ơn sự giúp đỡ của bạn. Bạn đề nghị tôi xử lý với Firefox/Safari như thế nào? Polyfills? – Neeta

+0

Thành thật mà nói, tôi khuyên bạn không nên sử dụng Flexbox để bố trí. Windows XP là quá nổi bật của một hệ điều hành (nó là # 2 phổ biến) và họ không thể nâng cấp vượt ra ngoài IE8. Nếu bạn vẫn muốn sử dụng Flexbox anyway, sau đó bạn phải nhóm nav và phần cùng với một container flex thêm và làm đi với gói (xem: http://codepen.io/cimmanon/pen/rifzt). – cimmanon

+0

Nếu tôi rời khỏi Flexbox, tôi có nên sử dụng đánh dấu bảng bình thường không? – Neeta

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