我已经有几天寻找一个解决方案的CSS或组件,使图像大小(高度和宽度)和图像,元素保持在相同的X和Y坐标的图像的位置。
一个简单的代码,我尝试了:
.img-container {
position: relative;
width: 100%;
height: 100vh;
background-color: antiquewhite;
}
.aspect-ratio-img {
width: 100%;
height: 100%;
object-fit: contain;
}
.overlay {
position: absolute;
top: 30%;
left: 30%;
}
<div class="img-container">
<img src="img.jpg" class="aspect-ratio-img" alt="Your Image">
<div class="overlay">Element</div>
</img>
</div>
结果:
但这是错的在这个例子中,“元素”文本应该保留在网格的同一列和同一行上。但正如我在图像中所示,它保持了相对于浏览器边缘的顶部和左侧,而不是基于图像的位置
什么想有是像下一个gif的东西:
1.背景图像保持比例和水平和垂直调整大小与浏览器窗口
1.前景元素保持在背景图像的相同X,Y坐标中的位置。还可以调整大小(类似于使用transform)
如果我找到了解决方案,我会在这里发布。
2条答案
按热度按时间cyej8jka1#
这是很容易与网格-你可以风格的网格任何方式,你喜欢,但在这里我“超级中心”,并使用一个区域名称,把两个元素在同一个网格象限,然后使用负边距移动文本一点。
我改变了布局,把div放在图像外面,以进一步说明该元素与“flow”的位置,它通常在下面。
请记住,在这个例子中,图像将缩放一点,但这只是风格,可以设置大小,宽高比等。
注意:如果你真的想要一个“网格”,你可以设置容器的背景,然后在你想要的大小的网格上设置行/列,然后把文本放在你想要的任何网格单元格中。
3lxsmp7m2#
我做了一个组件的插槽,所有你的地方将被调整大小。我没有使用JQuery,但我使用vue3-resize库,由于VUE3的观察者功能,您也可以在没有此库的情况下实现它https://css-tricks.com/scaled-proportional-blocks-with-css-and-javascript/#article-header-id-1。
用途: