gpt4 book ai didi

html - 网格元素具有不同的高度

转载 作者:行者123 更新时间:2023-11-27 22:56:32 29 4
gpt4 key购买 nike

我正在尝试创建一个简单的网格布局,但有一件事对我不起作用。所有图像都有不同的宽度和高度,它们的宽度不会超出单元格但高度会超出单元格,如下所示:

.grid__container {
display: grid;
width: 1200px;
margin: 50px auto;
grid-template-columns: repeat(12, [col] 1fr);
grid-template-rows: [row] 150px [row] 165px [row] 150px [row] 185px [row] 135px;
grid-gap: 1rem;
}

.grid__item__1 {
grid-column: col 1 / span 6;
grid-row: row 1;
}

.grid__item__2 {
grid-column: col 7 / span 6;
grid-row: row 1;
}

.grid__item__3 {
grid-column: col 1 / span 6;
grid-row: row 2 / span 2;
}

.grid__item__4 {
grid-column: col 7 / span 2;
grid-row: row 2;
}

.grid__item__5 {
grid-column: col 9 / span 2;
grid-row: row 2;
}

.grid__item__6 {
grid-column: col 11 / span 2;
grid-row: row 2;
}

.grid__item__7 {
grid-column: col 7 / span 3;
grid-row: row 3;
}

.grid__item__8 {
grid-column: col 10 / span 3;
grid-row: row 3;
}

.grid__item__9 {
grid-column: col 1 / span 4;
grid-row: row 4 / span 2;
}

.grid__item__10 {
grid-column: col 5 / span 4;
grid-row: row 4 / span 2;
}

.grid__item__11 {
grid-column: col 9 / span 2;
grid-row: row 4 / span 2;
}

.grid__item__12 {
grid-column: col 11 / span 2;
grid-row: row 4 / span 2;
}

.grid__item__13 {
grid-column: col 1 / span 2;
grid-row: row 5;
}

.grid__item__14 {
grid-column: col 3 / span 6;
grid-row: row 5;
}

.grid__item__15 {
grid-column: col 9 / span 4;
grid-row: row 5;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Test</title>
<link rel="stylesheet" href="styles/grid.css">
<link rel="stylesheet" href="styles/normalize.css">
</head>
<body>

<main>
<div class="grid__container">
<div class="grid__item__1">
<img src="https://via.placeholder.com/600x150.png/b3dfbe">
</div>
<div class="grid__item__2">
<img src="https://via.placeholder.com/600x150.png/75c5b8">
</div>
<div class="grid__item__3">
<img src="https://via.placeholder.com/600x320.png/f16789">
</div>
<div class="grid__item__4">
<img src="https://via.placeholder.com/200x165.png/8d96f3">
</div>
<div class="grid__item__5">
<img src="https://via.placeholder.com/200x165.png/8d96f3">
</div>
<div class="grid__item__6">
<img src="https://via.placeholder.com/200x165.png/8d96f3">
</div>
<div class="grid__item__7">
<img src="https://via.placeholder.com/300x150.png/fac460">
</div>
<div class="grid__item__8">
<img src="https://via.placeholder.com/300x150.png/fac460">
</div>
<div class="grid__item__9">
<img src="https://via.placeholder.com/400x185.png/608cc9">
</div>
<div class="grid__item__10">
<img src="https://via.placeholder.com/400x185.png/608cc9">
</div>
<div class="grid__item__11">
<img src="https://via.placeholder.com/200x195.png/608cc9">
</div>
<div class="grid__item__12">
<img src="https://via.placeholder.com/200x195.png/608cc9">
</div>
<div class="grid__item__13">
<img src="https://via.placeholder.com/200x145.png/6653af">
</div>
<div class="grid__item__14">
<img src="https://via.placeholder.com/600x135.png/6653af">
</div>
<div class="grid__item__15">
<img src="https://via.placeholder.com/400x135.png/6653af">
</div>
</div>
</main>

</body>
</html>

当我查看大量示例时,这种方法应该是有效的。我是否必须向图像添加 overflowobject-fit

最佳答案

您已经根据冗余的图像高度调整了您的网格行:

  • 使您的网格行自动(只需删除grid-template-rows 定义即可 - 同时删除网格线名称[row] 来自 grid-row 定义)
  • 现在使用 object-fit: cover 为图像填充网格项使用:

    img {
    object-fit: cover;
    width: 100%;
    height: 100%;
    display: block; /* removes whitespace characteristic of inline elements */
    }
  • 另请注意,您的最后一个网格行是 6 而不是 5,因为您的第四行元素 跨越 两行(或者您可以删除 span 第四行)

请看下面的演示:

.grid__container {
display: grid;
width: 1200px;
margin: 50px auto;
grid-template-columns: repeat(12, [col] 1fr);
/* grid-template-rows: [row] 150px [row] 165px [row] 150px [row] 185px [row] 135px;*/
grid-gap: 1rem;
}

.grid__item__1 {
grid-column: col 1 / span 6;
grid-row: 1;
}

.grid__item__2 {
grid-column: col 7 / span 6;
grid-row: 1;
}

.grid__item__3 {
grid-column: col 1 / span 6;
grid-row: 2 / span 2;
}

.grid__item__4 {
grid-column: col 7 / span 2;
grid-row: 2;
}

.grid__item__5 {
grid-column: col 9 / span 2;
grid-row: 2;
}

.grid__item__6 {
grid-column: col 11 / span 2;
grid-row: 2;
}

.grid__item__7 {
grid-column: col 7 / span 3;
grid-row: 3;
}

.grid__item__8 {
grid-column: col 10 / span 3;
grid-row: 3;
}

.grid__item__9 {
grid-column: col 1 / span 4;
grid-row: 4 / span 2;
}

.grid__item__10 {
grid-column: col 5 / span 4;
grid-row: 4 / span 2;
}

.grid__item__11 {
grid-column: col 9 / span 2;
grid-row: 4 / span 2;
}

.grid__item__12 {
grid-column: col 11 / span 2;
grid-row: 4 / span 2;
}

.grid__item__13 {
grid-column: col 1 / span 2;
grid-row: 6; /* changed from row 5 to 6 */
}

.grid__item__14 {
grid-column: col 3 / span 6;
grid-row: 6; /* changed from row 5 to 6 */
}

.grid__item__15 {
grid-column: col 9 / span 4;
grid-row: 6; /* changed from row 5 to 6 */
}

img {
object-fit: cover;
width: 100%;
height: 100%;
display: block; /* removes whitespace characteristic of inline elements */
}
<main>
<div class="grid__container">
<div class="grid__item__1">
<img src="https://via.placeholder.com/600x150.png/b3dfbe">
</div>
<div class="grid__item__2">
<img src="https://via.placeholder.com/600x150.png/75c5b8">
</div>
<div class="grid__item__3">
<img src="https://via.placeholder.com/600x320.png/f16789">
</div>
<div class="grid__item__4">
<img src="https://via.placeholder.com/200x165.png/8d96f3">
</div>
<div class="grid__item__5">
<img src="https://via.placeholder.com/200x165.png/8d96f3">
</div>
<div class="grid__item__6">
<img src="https://via.placeholder.com/200x165.png/8d96f3">
</div>
<div class="grid__item__7">
<img src="https://via.placeholder.com/300x150.png/fac460">
</div>
<div class="grid__item__8">
<img src="https://via.placeholder.com/300x150.png/fac460">
</div>
<div class="grid__item__9">
<img src="https://via.placeholder.com/400x185.png/608cc9">
</div>
<div class="grid__item__10">
<img src="https://via.placeholder.com/400x185.png/608cc9">
</div>
<div class="grid__item__11">
<img src="https://via.placeholder.com/200x195.png/608cc9">
</div>
<div class="grid__item__12">
<img src="https://via.placeholder.com/200x195.png/608cc9">
</div>
<div class="grid__item__13">
<img src="https://via.placeholder.com/200x145.png/6653af">
</div>
<div class="grid__item__14">
<img src="https://via.placeholder.com/600x135.png/6653af">
</div>
<div class="grid__item__15">
<img src="https://via.placeholder.com/400x135.png/6653af">
</div>
</div>
</main>

关于html - 网格元素具有不同的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55546936/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com