html - 在没有容器溢出的情况下,将容器内的元素定位到任何指定百分比的最简单方法是什么?
问题描述
有没有办法以类似的方式在容器中定位元素,就像定位背景图像一样?
CSSimage-position
的效果绝对惊人:
.container {
width: 100%;
height: 250px;
border: 1px solid black;
background-image:
url('http://placekitten.com/100/100'),
url('http://placekitten.com/100/100'),
url('http://placekitten.com/100/100'),
url('http://placekitten.com/100/100'),
url('http://placekitten.com/100/100');
background-repeat: no-repeat;
background-position: 0% 0%, 25% 25%, 50% 50%, 75% 75%, 100% 100%;
}
<div class="container"></div>
无论您设置什么百分比,这将是您的背景图像的位置,没有容器溢出。
但是,当您使用属性定位元素时left, right, top, bottom
,这种类型的定位并不相同。试图达到与上述相同的结果可能非常麻烦:
.container {
width: 100%;
height: 250px;
border: 1px solid black;
position: relative;
}
.container img {
position: absolute;
}
<div class="container">
<img src="http://placekitten.com/100/100" alt="kitten" style="left: 0%; top: 0%;">
<img src="http://placekitten.com/100/100" alt="kitten" style="left: 25%; top: 25%; transform: translate(-25%, -25%);">
<img src="http://placekitten.com/100/100" alt="kitten" style="left: 50%; top:50%; transform: translate(-50%, -50%);">
<img src="http://placekitten.com/100/100" alt="kitten" style="left: 75%; top: 75%; transform: translate(-75%, -75%);">
<img src="http://placekitten.com/100/100" alt="kitten" style="left: 100%; top: 100%; transform: translate(-100%, -100%);">
</div>
所以我的问题是 - 将容器内的元素定位到任何指定百分比的最简单方法是什么?有没有比我展示的更好的方法?
解决方案
使用 CSS 变量:
.container {
width: 100%;
height: 250px;
border: 1px solid black;
position: relative;
}
.container img {
position: absolute;
left: var(--x);
top: var(--y);
transform: translate(calc(-1*var(--x)), calc(-1*var(--y)));
}
<div class="container">
<img src="http://placekitten.com/100/100" alt="kitten" style="--x: 0%; --y: 0%;">
<img src="http://placekitten.com/100/100" alt="kitten" style="--x: 25%; --y: 25%;">
<img src="http://placekitten.com/100/100" alt="kitten" style="--x: 50%; --y:50%;">
<img src="http://placekitten.com/100/100" alt="kitten" style="--x: 75%; --y: 75%">
<img src="http://placekitten.com/100/100" alt="kitten" style="--x: 100%; --y: 100%;">
</div>
推荐阅读
- springdoc - 我已经使用 springdoc 安装了 OpenAPI 3,但是 URL 很奇怪。我可以将其更改为预期值吗?
- java - 杰克逊注释问题
- windows - 通过 bat 文件或 cmd 远程启动/停止 Windows 服务
- google-bigquery - 在 Google bigquery 中创建多列数组
- javascript - 如何准确地使用 Java Script JSON.parse() 函数来平面显示文本?
- airflow - 云作曲家气流插件使用
- javascript - 在python文件中导入java.lang和java.util时没有识别机器人框架关键字
- javascript - 在角材料中调用属性吸气剂
- python - pandas groupby 一天中的时间,带 15 分钟的垃圾箱
- python - 如何在python中调用列表的特定索引处的值?