【发布时间】:2020-11-08 15:00:48
【问题描述】:
图像大小因.container 处的position:relative; 和.container img(child) 处的position:absolute; 的存在与否而不同。
下面的代码工作正常(图像没有弄乱同样大小的网格)。但是,当两个位置都被删除时,网格不遵循编码大小(在本例中为 repeat(3,1fr) 和 repeat(4, 1fr))
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="issue.css">
</head>
<body>
<main>
<div class="container">
<img src="./assets/pic/pic.jpg" alt="">
</div>
</main>
</body>
</html>
CSS:
*,
html,
body {
width: 100%;
height: 100%;
box-sizing: border-box;
margin: 0;
padding: 0;
}
main {
width: 100%;
height: 100%;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(4, 1fr);
}
.container {
grid-row: 2/3;
grid-column: 1/2;
width: 100%;
height: 100%;
position: relative;
}
.container img {
position: absolute;
height: 100%;
width: auto;
display: block;
}
编辑:
当我使用object-fit:contain; 时,overflow:hidden; 是必须的。
我的问题是为什么overflow:hidden; 需要控制图像的大小? (HTML代码同上,CSS代码如下)
CSS:
*,
html,
body {
width: 100%;
height: 100%;
box-sizing: border-box;
margin: 0;
padding: 0;
}
main {
width: 100%;
height: 100%;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: repeat(4, 1fr);
}
.container {
grid-row: 2/3;
grid-column: 1/2;
width: 100%;
height: 100%;
overflow: hidden;
}
.container img {
object-fit: contain;
height: 100%;
width: auto;
display: block;
}
注意: 1.这很可能不是浏览器错误,因为 Mozilla 和 Chrome 会产生相同的结果。 2.图片可以是任意宽高比,只要比容器大(我用的是512px×768px)
【问题讨论】:
标签: html css css-position css-grid