如何使网格行可折叠

问题描述 投票:0回答:1

我正在尝试创建内部有可折叠项目的网格。当我缩小一个项目时,我们会看到该项目与其底部的项目之间存在空白。当顶部项目收缩时,我需要底部项目上升。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
  .grid-container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-gap: 10px;
  }

  .grid-item {
    background-color: #3498db;
    color: white;
    text-align: center;
    padding: 20px;
    font-size: 1.5rem;
    height: 150px;
    transition: all 0.3s ease; /* Smooth transition animation */
  }

  .grid-item.small {
    height: 50px;
  }

  .grid-item:nth-child(2n) {
    background-color: #e74c3c;
  }

  .grid-item:nth-child(3n) {
    background-color: #2ecc71;
  }

  .grid-item:nth-child(4n) {
    background-color: #f39c12;
  }
</style>
</head>
<body>
  <div class="grid-container">
    <div class="grid-item">1</div>
    <div class="grid-item">2</div>
    <div class="grid-item">3</div>
    <div class="grid-item">4</div>
    <div class="grid-item">5</div>
    <div class="grid-item">6</div>
    <div class="grid-item">7</div>
    <div class="grid-item">8</div>
  </div>

  <script>
    const gridItems = document.querySelectorAll('.grid-item');

    gridItems.forEach(item => {
      item.addEventListener('click', () => {
        item.classList.toggle('small');
      });
    });
  </script>
</body>
</html>

总而言之,我需要网格行与其内容具有相同的高度,以避免缩小网格项时出现空白。

html css grid
1个回答
0
投票

要实现让网格行根据网格项的内容调整其高度的所需行为,您可以使用 grid-auto-rows 属性。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
  .grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
  grid-auto-rows: min-content; /* Set rows to adjust based on content */
  }

  .grid-item {
  background-color: #3498db;
  color: white;
  text-align: center;
  padding: 20px;
  font-size: 1.5rem;
  transition: all 0.3s ease; /* Smooth transition animation */
   }

  .grid-item.small {
  height: 50px;
   }

  .grid-item:nth-child(2n) {
  background-color: #e74c3c;
  }

  .grid-item:nth-child(3n) {
  background-color: #2ecc71;
  }

  .grid-item:nth-child(4n) {
  background-color: #f39c12;
  }
 </style>
 </head>
 <body>
 <div class="grid-container">
 <div class="grid-item">1</div>
 <div class="grid-item">2</div>
 <div class="grid-item">3</div>
 <div class="grid-item">4</div>
 <div class="grid-item">5</div>
 <div class="grid-item">6</div>
 <div class="grid-item">7</div>
 <div class="grid-item">8</div>
 </div>

 <script>
 const gridItems = document.querySelectorAll('.grid-item');

 gridItems.forEach(item => {
   item.addEventListener('click', () => {
    item.classList.toggle('small');
  });
 });
 </script>
</body>
</html>

通过将 grid-auto-rows 设置为 min-content,您可以允许每行根据其包含的项目的内容自动调整其高度。当您缩小网格项目时,这将防止出现空白,因为行将调整大小以匹配内容的高度。

© www.soinside.com 2019 - 2024. All rights reserved.