html - 保持网格字段为 100% 屏幕宽度
问题描述
在此示例中,我只想创建一个包含 4 个大小相同的框的网格,并且当屏幕尺寸变小时应该重新缩放。但是我没有想法了。我在完整代码中的其他网格中也使用了几乎相同的属性,并且它们可以正常重新缩放。有什么想法吗?
.four-images{
width: 100%;
grid-column: 1/5;
grid-row: 2/3;
display:grid;
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: auto;
}
.four-images-image{
width: 100%;
grid-column: 1/2
}
.four-images-image1{
grid-column: 2/3
}
.four-images-image2{
grid-column: 3/4
}
.four-images-image3{
grid-column: 4/5
}
.four-images img{
object-fit: cover;
overflow: hidden;
}
<div class="four-images">
<div class="four-images-image">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
<div class="four-images-image1">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
<div class="four-images-image2">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
<div class="four-images-image3">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
</div>
解决方案
如果我理解您的问题,您希望在缩小视口宽度时缩小图像的大小,以便在保持图像纵横比的同时不会溢出/剪切屏幕。为此,您需要实际修改图像的宽度,而不仅仅是对象拟合。Object-fit 适合它在某个维度内,但不修改所述维度。我已经将您的代码压缩了一点,但您仍然可以在您认为合适的情况下将其与您自己的类/ID 一起使用。
.four-images{
width: 100%;
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-rows: auto;
}
.four-images-image img{
display: block;
max-width: 100%;
height: auto
}
<div class="four-images">
<div class="four-images-image">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
<div class="four-images-image">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
<div class="four-images-image">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
<div class="four-images-image">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
</div>
为了进一步详细说明,这里我为网格父级添加了一个边框并使图像透明。如您所见,object-fit 实际上并没有改变图像的大小,它会溢出网格。
/* Just modifying the object-fit */
.parent-grid {
width: 5%;
grid-template-columns: 1fr;
grid-template-rows: auto;
border: 2px solid red;
}
.parent-grid > .parent-img > img {
opacity: .5;
object-fit: cover;
}
/* If the width of the image is modified */
.parent-grid-2 {
width: 5%;
grid-template-columns: 1fr;
grid-template-rows: auto;
border: 2px solid red;
}
.parent-grid-2 > .parent-img > img {
width: 100%;
}
<div class="parent-grid">
<div class="parent-img">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
</div>
<br>
<div class="parent-grid-2">
<div class="parent-img">
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOEAAADhCAMAAAAJbSJIAAAACVBMVEX///8DAQQAAABKx2UUAAABG0lEQVR4nO3PQQ3AMBDAsLb8QY9Bf9PkW4wgWXu69XXA6zr0dejr0Nehr0Pf7w7PBLfDsyY4HfI69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69HXo69DXoa9DX4e+Dn0d+jr0dejr0Nehr0Nfh74OfR36OvR16OvQ16GvQ1+Hvg59Hfo69N0O95lg3w4H6tDXoa9DX4e+Dn0d+h6tMzE9MLfjigAAAABJRU5ErkJggg==">
</div>
</div>
推荐阅读
- ios - 当无法找到故事板或尚未创建故事板时,如何防止 SWIFT 4.2 运行时错误?
- c - 为 C 安装 libavl
- bash - Bash - 在已打开多个实例的程序的特定实例上打开文件
- docker - Docker似乎包括操作系统?
- ios - Cordova Nativestorage 插件是否在 Xcode 模拟器中工作?
- php - Wordpress foreach if 语句显示所有用户,其中只有一个?
- haskell - freer-simple - 如何在运行时生成效果成员列表?
- c# - 如何让控制台读取所有条件
- laravel - Laravel 本地停止工作,所有 artisan 命令和 composer 命令都不起作用
- makefile - 在 Makefile 中的命令替换中插入变量