2011-12-26 28 views
9

Tôi sử dụng các hộp flexbox trong Google Chrome (chỉ hỗ trợ trình duyệt này) để tạo bố cục động. Tôi đã có các phần tử con n trong một phần tử div nên chia sẻ toàn bộ không gian với tất cả cùng một tỷ lệ. Điều này đang làm việc mà không có vấn đề do các hộp flex mới được giới thiệu. Nhưng tôi cũng phải đặt chiều cao của mỗi div bên trong thành 0. Nếu tôi muốn kéo giãn một phần tử bên trong div này đến 100% chiều cao nó sử dụng giá trị đã cho là 0 thay vì bất kỳ giá trị tính toán nào. Như tôi đã chọn flex-hộp để ngăn chặn bằng cách sử dụng javascript tôi muốn còn lại theo cách đó. Có cách nào khác để làm cho chiều cao của hình ảnh lấp đầy div không?Sử dụng các giá trị phần trăm để điền các mục flexbox

Và đây là đoạn code (chỉ kiểm tra trong Google Chrome):

html

<div class="flexbox"> 
    <div><img src="chrome-logo.png" /></div> 
    <div><img src="chrome-logo.png" /></div> 
    <div><img src="chrome-logo.png" /></div> 
    <div><img src="chrome-logo.png" /></div> 
</div> 

css

  .flexbox { 
       display:-webkit-box; 
       -webkit-box-orient:vertical; 
       height:300px; 
       width:200px; 
      } 
      .flexbox > div { 
       -webkit-box-flex:1; 
       height:0; 
       border:solid 1px #000000; 
      } 
      .flexbox > div > img { 
       height:100%; 
      } 

The code to watch in the browser

+0

Tại sao bạn phải đặt chiều cao là 0? Nếu bạn không định đặt chiều cao một cách rõ ràng, bạn đang mong đợi cái gì '100%' là một trăm phần trăm? – robertc

+0

Tôi đã làm điều đó để chia toàn bộ không gian có sẵn cho các phần có cùng kích thước. Nếu không thì chỉ còn lại khoảng trống (không có nội dung). Đó là hành vi như sử dụng chức năng flex được mô tả trong thư đó: [http://lists.w3.org/Archives/Public/www-style/2011Nov/0770.html](http://lists.w3.org/ Lưu trữ/Public/www-style/2011Nov/0770.html) –

Trả lời

8

Vâng, tôi đã nhận nó làm việc kể từ giờ nghiên cứu. Những thay đổi sau đây để làm:

.flexbox { 
      display:-webkit-box; 
      -webkit-box-orient:vertical; 
      height:300px; 
      width:200px; 
     } 
     .flexbox > div { 
      -webkit-box-flex:1; 
      height:0; 
      border:solid 1px #000000; 
      position:relative; /* CHANGE */ 
     } 
     .flexbox > div > img { 
      height:100%; 
      position:absolute; /* CHANGE */ 
     } 

Nếu bạn Intrested trong bạn có thể làm cho những thay đổi này qua ChromeDevTools với css và bạn sẽ thấy kết quả ngay!

+0

.. và đừng quên đặt 'width: 100%;' cho liên kết :) – BananaAcid

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