2012-12-21 29 views
5

Tôi bắt đầu chơi xung quanh với hộp CSS3 flex gần đây, tôi đã đọc qua nhiều tài nguyên và chơi xung quanh với nó bản thân mình. Tôi đã nhìn qua: http://www.w3.org/TR/css3-flexbox/CSS3 flexbox negative-flex hoạt động như thế nào?

Cụ thể là tôi đang gặp rắc rối với tài sản flex trên yếu tố con:

flex: <positive-flex> <negative-flex> <preferred-size> 

tôi dường như không thể hiểu được cách thức hoạt động tham số tiêu cực-flex. Tích cực-flex có ý nghĩa vì nó phân phối không gian tương ứng từ các yếu tố cha mẹ cho trẻ em.

Phủ định flex, từ những gì tôi hiểu là nghĩa vụ phải thu nhỏ các phần tử khi chúng tràn phụ huynh. Tuy nhiên, tôi không thể làm được điều này. Bất kỳ sự hiểu biết trợ giúp nào cũng sẽ được đánh giá cao!

Dưới đây là đoạn code tôi đã thử nghiệm với: http://jsfiddle.net/nxzQQ/2/

HTML:

<!DOCTYPE html> 
<html> 
<head> 

</head> 
<body> 

<div id="container"> 
    <div></div> 
    <div></div> 
    <div></div> 
</div> 
</body> 
</html> 

CSS:

#container { 
    width: 100%; 
    height: 200px; 

    display: -webkit-flex; 
    display: flex; 

    -webkit-flex-direction: row; 
    flex-direction: row; 
} 

#container > :nth-child(1) { 
    background-color: red; 

    -webkit-flex: 1 0 0px; 
    flex: 1 0 0px; 
} 

#container > :nth-child(2) { 
    background-color: blue; 

    -webkit-flex: 2 0 0px; 
    flex: 2 0 0px; 
} 

#container > :nth-child(3) { 
    background-color: orange; 

    -webkit-flex: 1 0 0px; 
    flex: 1 0 0px; 
} 

Trả lời

6

Trong một bài báo từ Opera trên flexbox, flex tiêu cực được mô tả như chẳng hạn:

#first { 
    flex: 1 1 400px; 
} 

#second { 
    flex: 2 3 600px; 
} 

#third { 
    flex: 1 2 400px; 
} 

Giá trị flex âm, mặc dù tên của chúng, là giá trị dương - giá trị đơn vị thứ hai trong các khai báo ở trên. Những điều này chỉ đến để phát khi trẻ em tràn bộ chứa chính của chúng theo hướng trục chính . Chúng cũng hoạt động như các giá trị tỷ lệ, nhưng lần này là chúng chỉ định tỷ lệ "số tiền tràn" (số tiền trẻ em tràn container của chúng), sẽ được khấu trừ khỏi kích thước của mỗi trẻ, để giảm kích thước tổng thể xuống bằng với kích thước của phụ huynh - có hiệu lực, để ngăn chặn tràn.

Giả sử rằng vùng chứa chính là 1100 pixel dọc theo trục chính . Đây là trường hợp, các trẻ em trên của chúng tôi sẽ tràn nó bởi 300 pixel (chúng bằng 1400 pixel dọc theo trục chính, trong tổng số). Bởi vì của các giá trị flex âm được đặt trên chúng:

  • Đứa trẻ đầu tiên sẽ nhận được 1/6 số tiền tràn được loại bỏ, là 50 pixel. Do đó, giá trị được tính của nó sẽ là 350 pixel.
  • Đứa trẻ thứ hai sẽ nhận được 3/6 số tiền tràn được xóa khỏi nó, là 150 pixel. Do đó, giá trị được tính của nó sẽ là 450 pixel.
  • Đứa trẻ thứ ba sẽ nhận được 2/6 số tiền tràn được xóa khỏi nó, là 100 pixel. Do đó, giá trị được tính của nó sẽ là 300 pixel.

Vì vậy, giá trị flex âm cao hơn thực sự dẫn đến yếu tố nhỏ hơn!

Nguồn: http://dev.opera.com/articles/view/flexbox-basics/

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