- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想构建一个具有以下布局的无限画廊: 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>
最佳答案
TL-DR:简而言之,从包装器中删除 background-color
和 clip-path
规范并创建一个::after
伪元素放置边框。
您不应该为了获得边框而指定背景颜色。不要将背景颜色设置为黑色:
.wrapper-clippath {
background: black;
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}
删除该规范,因为默认背景颜色是透明
:
.wrapper-clippath {
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}
在你的包装器上移除 clip-path
的使用:
.wrapper-clippath { }
这里不需要。相反,它应该只在你的 img
上指定,直到你可以证明在你的包装器上需要它:
.wrapper-clippath img {
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
animation: opacity 1s infinite alternate;
}
由于需要添加边框,因此应使用border
指定。这可以通过利用 :after
pseudo-element 来完成。 :
In CSS,
::after
creates a pseudo-element that is the last child of the selected element. It is often used to add cosmetic content to an element with the content property. It is inline by default.
在您的情况下,您不需要 content
属性中的任何内容。相反,您想创建一些东西,在您的 clip-path
周围放置一个边框:
.wrapper-clippath::after {
content: '';
position: absolute;
top: 0;
left: 25px;
width: calc(100% - 50px);
height: calc(100% - 2px);
border: 1px solid black;
transform: skewX(-25deg);
}
此外,要相对于包装器进行绝对定位,您需要将 wrapper-clippath
类标记为具有相对定位:
.wrapper-clippath { position: relative; }
div[class*="wrapper"] {
height: 100px;
width: 200px;
margin: 1em;
}
img {
width: 100%;
height: 100%;
}
.wrapper-clippath {
position: relative;
}
.wrapper-clippath:after {
content: '';
position: absolute;
top: 0;
left: 25px;
width: calc(100% - 50px);
height: calc(100% - 2px);
border: 1px solid black;
transform: skewX(-25deg);
}
.wrapper-clippath img {
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
animation: opacity 1s infinite alternate;
}
@keyframes opacity {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
<div class="wrapper-clippath">
<img src="https://www2.tuhh.de/zll/wp-content/uploads/placeholder.png">
</div>
关于html - 具有半透明背景的移位 CSS 边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69164637/
我想将这个无符号数:1479636484000 向右移动 7 位。这在 JavaScript 中可能吗? 两者 1479636484000 >> 7 和 1479636484000 >>> 7 返回错
鉴于以下代码: import matplotlib.pyplot as plt import numpy as np x = [1.0, 1.1, 2.0, 5.7] y = np.arange(le
我有一个低级键盘钩子(Hook),目前允许我从任何应用程序(包括游戏)中控制媒体播放器。 它通过查看捕获的特定击键来工作。 我想扩展它以查找键的组合。我可以对一些逻辑进行硬编码,但我觉得必须有一种更合
我需要一些帮助来理解这段C代码。我不知道这里的“L”和“\”是什么?请也说明一点:) #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>2
我正在查看一段代码: int result = 0 ; char byte = foo[j] for (i = 7 ; i>0 ; i--) { byte = (byte & ~0x1)>>1
我们有一个项目要求我们编写一个程序,允许用户输入一系列数字“将数字读入数组以进行进一步处理,用户通过输入负数表示他们已完成(负数不用于计算),在读取所有数字后执行以下操作,总结输入的#,计算输入的#,
锁定。有disputes about this question’s content正在解决中。它目前不接受新的答案或互动。 def menu(): choice = input("Pres
为什么如果 int x = -1 // binary: 11111111111111111111111111111111 x = x >>> 31; 我们有 000000000000000000000
我的问题其实应该很简单:我有一个玩家对象数组。(玩家[])我想要一个函数来旋转这个数组直到一个索引: public void rotateArray(Object[] array, int index
我有一个编码为 boost 动态位集的数字列表。我根据此列表中的任何数字可以采用的最大值动态选择此位集的大小。所以假设我有从 0 到 7 的数字,我只需要三位,我的字符串 0,2,7 将被编码为000
我能想到一些令人讨厌的低效方法来完成这项任务,但我想知道最好的方法是什么。 例如,我想复制一个字节中从第 3 位开始的 10 个字节,并像往常一样复制到一个指针。 有没有比一次复制一个移位字节更好的方
我正在尝试为该问题添加更多规则,并且该规则一直给我带来这种转变/减少冲突的能力,我不知道为什么会这样做,并且在过去的24小时内我一直在尝试解决问题 FuncDecl : RetTyp
This question already has answers here: Why does it make a difference if left and right shift are us
我在 Perl 中遇到这个问题已经有几天了,在搜索了无数的手册页、perldocs 和谷歌搜索了太多的搜索词之后,希望这里有人能帮助我。 我得到两个表示十六进制值的字符串,即“FFFF”,而不是 Pe
我有一个主 div,两个 div 水平并排放置在这个父 div 中。 .parent{ height: 360px; margin-top: 0px; bo
我想 float 我的元素列表并从第二个元素创建一个移动效果。 如何避免第二个 .item 之后的“清除”行为? .shift { float: right; width: 50%;
我正在使用 SSE3 优化我的代码。代码中有一点迫使我将 vector 中的所有元素移动一个元素 v[0] = 0 //v is some char* and N = v.size() for(i
.file "calcnew.c" .text .globl calcnew .type calcnew, @function calcnew:
我有一个点对象: class Point { final int x,y; ... } 因为这些点将在我的代码中到处使用/创建,所以我想开始使用 guavas 缓存。不幸的是
x = "Foo 890 bar *()" 如何将包括 "*()" 在内的小写字母“未移位”返回到 890?期望的结果: foo 890 bar 890 不需要的: x.lower() => "foo
我是一名优秀的程序员,十分优秀!