2015-11-24 10 views
28

mẫu: Ngăn các chi tiết flex từ duỗi

div { 
 
    display: flex; 
 
    height: 200px; 
 
    background: tan; 
 
} 
 
span { 
 
    background: red; 
 
}
<div> 
 
    <span>This is some text.</span> 
 
</div>

Tôi có hai câu hỏi, xin vui lòng:

  1. Tại sao nó về cơ bản xảy ra với span?
  2. Cách tiếp cận đúng để ngăn không cho nó kéo dài mà không ảnh hưởng đến các mặt hàng flex khác trong thùng chứa flex là gì?

Trả lời

47

Bạn không muốn kéo dài nhịp trong chiều cao?
Bạn có khả năng ảnh hưởng đến một hoặc nhiều mục flex để không kéo dài chiều cao đầy đủ của vật chứa.

Để ảnh hưởng đến tất cả flex-mục của container, chọn này:
Bạn phải thiết lập align-items: flex-start;-div và tất cả flex-mục của container này có được chiều cao của nội dung của họ.

div { 
 
    align-items: flex-start; 
 
    background: tan; 
 
    display: flex; 
 
    height: 200px; 
 
} 
 
span { 
 
    background: red; 
 
}
<div> 
 
    <span>This is some text.</span> 
 
</div>

Để chỉ ảnh hưởng đến một đơn flex-mục, chọn này:
Nếu bạn muốn unstretch một đơn flex-item trên thùng sơn, bạn phải thiết lập align-self: flex-start; với mặt hàng flex này. Tất cả các mặt hàng flex khác của thùng chứa không bị ảnh hưởng.

div { 
 
    display: flex; 
 
    height: 200px; 
 
    background: tan; 
 
} 
 
span.only { 
 
    background: red; 
 
    align-self:flex-start; 
 
} 
 
span { 
 
    background:green; 
 
}
<div> 
 
    <span class="only">This is some text.</span> 
 
    <span>This is more text.</span> 
 
</div>

Tại sao điều này xảy ra với span?
Giá trị mặc định của thuộc tính align-itemsstretch. Đây là lý do tại sao các span điền vào chiều cao của div.

Sự khác biệt giữa baselineflex-start?
Nếu bạn có một số văn bản trên các mặt hàng flex, với kích thước phông chữ khác nhau, bạn có thể sử dụng đường cơ sở của dòng đầu tiên để đặt flex-mục theo chiều dọc. Một mặt hàng flex với kích thước phông chữ nhỏ hơn có một số khoảng trống giữa vùng chứa và chính nó ở trên cùng. Với flex-start mặt hàng flex sẽ được đặt ở đầu thùng chứa (không có khoảng trống).

div { 
 
    align-items: baseline; 
 
    background: tan; 
 
    display: flex; 
 
    height: 200px; 
 
} 
 
span { 
 
    background: red; 
 
} 
 
span.fontsize { 
 
    font-size:2em; 
 
}
<div> 
 
    <span class="fontsize">This is some text.</span> 
 
    <span>This is more text.</span> 
 
</div>

+0

Cảm ơn cho câu trả lời, nhưng nó ảnh hưởng đến mục tất cả flex. Và một câu hỏi: sự khác biệt giữa giá trị 'baseline' và' flex-start' là gì? Kết quả của họ dường như giống nhau. Họ có thể khác nhau trong một tình huống không? – Mori

+0

Có vẻ tuyệt vời! Tôi sẽ rất biết ơn nếu bạn cho tôi biết sự khác biệt giữa các giá trị 'baseline' và' flex-start'. – Mori

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