Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> CSS

Cách ngăn Flexbox Child Elements Stretch Vertically trong CSS

Giả sử bạn có container flexbox với button bên trong:

<div class="container"> <button class="button">Button</button> </div>

Nếu bạn thử căn giữa button (child element) ngang với property justify-content như sau:

.container { height: 300px; display: flex; justify-content: center; }

Thì height của button (child element) sẽ stretch bằng height của parent element (trong trường hợp này 300px):

Cách ngăn Flexbox Child Elements Stretch Vertically trong CSS

Điều này có thể không phải bạn muốn!

Có vài cách ngăn flex items (children của flex container) stretch vertically.

Nếu bạn căn giữa flex items dọc với property align-items, stretch tự động biến mất:

.container { height: 300px; display: flex; justify-content: center; /* Vertical center alignment: */ align-items: center; }
Cách ngăn Flexbox Child Elements Stretch Vertically trong CSS

Nhưng nếu bạn không muốn vertically align flex items của flex container?

Thì bạn có thể dùng giá trị max-content của CSS property height trên flex item:

.button { height: max-content; }
Cách ngăn Flexbox Child Elements Stretch Vertically trong CSS

Bây giờ height của flex item sẽ được quyết định bởi height của content nó, trong ví dụ button này là text, 14px (+ padding mặc định của button):

Bạn cũng có thể dùng property align-self trên flex item:

.button { align-self: flex-start; }

Điều này cho cùng kết quả như dùng max-content trong use cases đơn giản, nhưng tùy context cụ thể (thử cả hai).