如何创建故障效果 🤖 纯 CSS
介绍
演示
HTML
CSS
结束
介绍
今天我想讲讲如何使用 CSS 制作故障艺术效果。为此,我将使用最常用的选项之一。这是我们pseudo-elements
在创建copies
主要元素时使用的。
演示
HTML
在 HTML 部分,我们只需要创建 1 个标签,在其中写入文本,并在data-text
属性中复制它。
就像这样:
<h1 class="glitch" data-text="Glitch">Glitch</h1>
您可以指定任何标签。不必使用文本标签。
CSS
我们需要考虑到pseudo-elements
文本的应该与大致位于同一position
位置main text
。
因此,对于pseudo-elements
,我们需要指定position
值为 的属性absolute
。
.glitch {
position: relative;
&::before,
&::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
}
}
现在我们的文本和它的副本彼此重叠。
在我们继续创建 Glitch 效果之前,最好为文本添加样式以使其看起来更美观。
为此,我将制作我们的sans-serif
字体,字体大小为larger
,我们创建shadows
一个linear gradient
完整的copies
文本。
.glitch {
position: relative;
font-family: sans-serif;
font-size: 7em;
text-transform: uppercase;
text-shadow: 6px -6px 0px #fd5f00;
background: repeating-linear-gradient(45deg, #005792, #005792 1px, #fff 2px, #fff 3px);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
改变伪元素
现在我们需要将每个伪元素向不同的方向移动。为了实现文本移动的效果,就像故障期间发生的那样,这很有必要。
为了做到这一点,我们需要将move
每个伪元素从相反的方向拉出each other
几个pixels
。
&::before {
left: 7px;
text-shadow: 1px 0 #fd5f00;
}
&::after {
left: 3px;
text-shadow: -1px 0 #fd5f00;
}
我决定让伪元素阴影的颜色与主阴影的颜色相同,但你可以让它们不同,以达到使用black
和blue
颜色的坏电视的效果。
夹子
接下来,我们需要使用 clip 属性。
clip 属性定义了定位元素内容的显示区域。超出该区域的内容将被截断,变得不可见。
我们使用此属性来交替显示cropped parts
我们的伪元素。
句法:
剪辑:矩形(Y1,X1,Y2,X2);
这些值是从元素边缘到剪辑区域的距离。
剪辑:矩形(
top
/// )right
;bottom
left
因此,为了我们的伪元素,我们在右侧completely crop
设置了缩进。(您可以根据元素的大小使用任意值)900 pixels
&::before,
&::after {
content: attr(data-text);
position: absolute;
top: 0;
left: 0;
right: 0;
background: $secondaryColor;
color: $primaryColor;
clip: rect(0, 900px, 0, 0);
overflow: hidden;
}
伪元素的background属性要和背景完全一致,这样才能融合,显示上不会出现问题,这一点很重要。
剪辑动画
为了定性地为我们的元素制作动画,我们需要创建一个分步动画,其中我们将改变属性中的first
和值,以便我们的伪元素在从上到下的动画过程中仅部分显示。third
clip
在这种情况下,属性的second
和值必须保持不变。fourth
clip
$steps: 20;
@keyframes glitch-effect{
@for $i from 0 through $steps{
#{percentage($i*(1/$steps))}{
clip: rect(random(100) + px, 9999px, random(100) + px, 0);
}
}
}
我个人使用20-step
动画,但您可以指定任意数量的步数,因为动画是静止的,random
并且会改变属性本身的值clip
。您指定的步数越多,faster
动画效果就越好。
现在我们只需要将动画附加到两个伪元素上。还需要为每个伪元素指定不同的动画播放时间。这样就能实现更加混乱的故障动画效果。
&::before {
left: 7px;
text-shadow: 1px 0 #fd5f00;
animation: glitch-effect 3s infinite linear alternate-reverse;
}
&::after {
left: 3px;
text-shadow: -1px 0 #fd5f00;
animation: glitch-effect 2s infinite linear alternate-reverse;
}
就这些了。
结束
好了,就是这样。这是一个非常简单且非常流行的纯 CSS 故障效果创建方法。非常感谢你花时间阅读我的文章。
文章来源:https://dev.to/kerthin/how-create-pure-css-glitch-effect-530p