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

Giá trị stretch của align-items trong CSS Flexbox

Giá trị stretch (mặc định) của align-items kéo giãn các flex items để lấp đầy chiều cao của dòng (cross-axis size), trừ khi item có kích thước cố định trên trục đó.

Ví dụ: align-items: stretch

<!DOCTYPE html>
<html>
<head>
  <style>
    .mycontainer {
      display: flex;
      height: 200px;
      background-color: #e74c3c;
      align-items: stretch;
      padding: 10px;
      gap: 10px;
    }
    .mycontainer > div {
      background-color: #e67e22;
      text-align: center;
      line-height: 60px;
      font-size: 30px;
      width: 100px;
      margin: 5px;
      border-radius: 4px;
    }
  </style>
</head>
<body>
  <h1>Queue</h1>
  <div class="mycontainer">
    <div>Q1</div>
    <div>Q2</div>
    <div>Q3</div>
    <div>Q4</div>
  </div>
</body>
</html>

Điều kiện stretch hoạt động

  • Item không có height cố định (hoặc height: auto)
  • Item không có align-self ghi đè
  • Container có chiều cao xác định hoặc được stretch bởi parent

So sánh các giá trị align-items

Giá trịHành viKhi nào dùng
stretchKéo giãn lấp đầy (mặc định)Card cùng chiều cao, form inputs
flex-startCăn trênTop-aligned content
flex-endCăn dướiBottom-aligned (footer)
centerCăn giữaIcon + text, avatar
baselineCăn baseline textText size khác nhau

Ngăn chặn stretch cho item cụ thể

.item {
  align-self: flex-start; /* Ghi đè stretch */
  /* Hoặc */
  height: 100px; /* Height cố định */
  /* Hoặc */
  align-self: center;
}

Ứng dụng: Equal Height Cards

.card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1.5rem;
  align-items: stretch; /* Mặc định, card cùng cao */
}
.card {
  flex: 1 1 300px;
  display: flex;
  flex-direction: column;
}
.card-content {
  flex: 1; /* Nội dung đẩy footer xuống dưới */
}