【发布时间】:2021-09-13 23:59:26
【问题描述】:
所以我想用以下布局构建一个无限画廊: Expected result(第一张图也有边框)
如你所见,只有当前活动的图片是可见的,非活动的图片只用边框表示,容器是半透明的。
现在让这有点棘手的是,边框不是常规矩形,而是移动到平行四边形。为了实现这一点,我尝试了以下两种方法:
倾斜
我的第一种方法是只使用 CSS 变换:skewX(deg);
可悲的是,歪斜不仅会移动,还会扭曲图片..
剪辑路径
布局如下
<div class="wrapper">
<img></img>
</div>
风格:
.wrapper {
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
background: black;
}
img {
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
transform: scale(0.95);
}
我能够以意大利面的方式进入转移的边界。这里的问题是,当图片不再处于活动状态并因此应该不可见时,我的假边框会暴露出来,因为整个容器将是黑色的。
所以我想知道什么是移动容器边框并将图像放在里面的最佳方法,以便它可以淡出并且背景是半透明的。
这是一个代码片段:
div[class*="wrapper"] {
height: 100px;
width: 200px;
margin: 1em;
}
img {
width: 100%;
height: 100%;
}
.wrapper-clippath {
background: black;
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}
.wrapper-clippath img {
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
transform: scale(0.985);
animation: opacity 1s infinite alternate;
}
.wrapper-skew {
transform: skewX(-25deg);
border: 1px solid black;
}
@keyframes opacity {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
<h1>With Skew</h1>
<p>Image gets distorted</p>
<div class="wrapper-skew">
<img src="https://www2.tuhh.de/zll/wp-content/uploads/placeholder.png">
</div>
<h1>With clippath</h1>
<p>Background is black and not translucent when image is faded out</p>
<div class="wrapper-clippath">
<img src="https://www2.tuhh.de/zll/wp-content/uploads/placeholder.png">
</div>
【问题讨论】:
-
例如,如何将元素从堆的顶部移动到底部?如果你想要 CSS 而不是 JS,你可以考虑使用背景图片,并在它不在顶部时替换为全白色的线性渐变。
-
@AHaworth 我已经整理好了移动部分。我主要担心的是当图像淡出时容器变得不透明,因此只有边框可见。