2015-02-23 24 views
24

Tôi đang cố gắng tạo bố cục khối ngang chỉ sử dụng CSS và flexbox. Vấn đề tôi đang gặp là có những khoảng trống theo chiều dọc giữa các phần tử, mà không sử dụng align-left: stretch; là nó có thể đóng các khoảng trống?Bố cục nề ngang với CSS hộp thư chỉ

.card-container { 
    display: flex; 
    flex-direction: row; 
    flex-wrap: wrap; 
    align-items: flex-start; 
} 


.card { 
    width: 25%; 
    flex: 1 0 auto; 
} 

full codepen here

+0

khoảng trống dọc giữa yếu tố nào? – tubes

+0

Giữa thẻ 2 và 5. Tôi đang cố gắng sắp xếp chúng như sau: [codepen masonry] (http://codepen.io/desandro/pen/ClgeH) –

+0

Chỉ là một gợi ý để cải thiện câu hỏi và khả năng đọc của bạn : bao gồm các phần có liên quan của mã của bạn. –

Trả lời

18

Dưới đây là một tùy chọn sử dụng các cột được bao bọc, nhưng nó đòi hỏi chiều cao cố định.

.card-container { 
    display: flex; 
    flex-flow: column wrap; 
    height:100vh; 
    align-items: center; 
    background-color: #888; 
} 

Một lựa chọn tốt hơn cho bố trí CSS nề là sử dụng cột, một ví dụ là về bài viết trên blog này http://w3bits.com/css-masonry/

.masonry { /* Masonry container */ 
    -moz-column-count: 4; 
    -webkit-column-count: 4; 
    column-count: 4; 
    -moz-column-gap: 1em; 
    -webkit-column-gap: 1em; 
    column-gap: 1em; 
} 

.item { /* Masonry bricks or child elements */ 
    background-color: #eee; 
    display: inline-block; 
    margin: 0 0 1em; 
    width: 100%; 
} 
+1

Tôi thích các giải pháp của bạn! Tôi đã giả định các khối đã chảy từ trái sang phải. Trong trường hợp của bạn, chúng chảy từ trên xuống dưới. – joerideg

+28

Cột không phải là giải pháp tốt hơn vì cột làm cho các mục mới nhất đi xuống cột bên trái trái ngược với các mục mới nhất được liệt kê bên trái và sau đó đi xuống – comu

+0

Đây là giải pháp cho vấn đề (CSS, không có khoảng cách dọc, bố cục xây) https://stackoverflow.com/a/25668648/871781 – JoeCodeCreations

17

Flex hộp bọc kết thúc tốt đẹp các yếu tố tràn vào một hàng mới. Hàng mới này có, giống như hàng trước đó, chiều cao của con flex cao nhất trong đó. Nó sẽ không cho phép các phần tử trong hàng đi ra ngoài ranh giới các hàng đó.

Rất tiếc, không bạn không thể đóng các khoảng trống theo chiều dọc bằng flexbox.

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