我正在尝试创建内部有可折叠项目的网格。当我缩小一个项目时,我们会看到该项目与其底部的项目之间存在空白。当顶部项目收缩时,我需要底部项目上升。
<!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>
总而言之,我需要网格行与其内容具有相同的高度,以避免缩小网格项时出现空白。
要实现让网格行根据网格项的内容调整其高度的所需行为,您可以使用 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,您可以允许每行根据其包含的项目的内容自动调整其高度。当您缩小网格项目时,这将防止出现空白,因为行将调整大小以匹配内容的高度。