如何创建故障效果🤖 纯 CSS 介绍 演示 HTML CSS 结束

2025-05-25

如何创建故障效果 🤖 纯 CSS

介绍

演示

HTML

CSS

结束

介绍

今天我想讲讲如何使用 CSS 制作故障艺术效果。为此,我将使用最常用的选项之一。这是我们pseudo-elements在创建copies主要元素时使用的。

演示

HTML

在 HTML 部分,我们只需要创建 1 个标签,在其中写入文本,并在data-text属性中复制它。

就像这样:

<h1 class="glitch" data-text="Glitch">Glitch</h1>
Enter fullscreen mode Exit fullscreen mode

您可以指定任何标签。不必使用文本标签。

替代文本

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;
    }
}
Enter fullscreen mode Exit fullscreen mode

现在我们的文本和它的副本彼此重叠。

在我们继续创建 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;
}
Enter fullscreen mode Exit fullscreen mode

结果:
替代文本

改变伪元素

现在我们需要将每个伪元素向不同的方向移动。为了实现文本移动的效果,就像故障期间发生的那样,这很有必要。

为了做到这一点,我们需要将move每个伪元素从相反的方向拉出each other几个pixels

  &::before {
    left: 7px;
    text-shadow: 1px 0 #fd5f00;
  }

  &::after {
    left: 3px;
    text-shadow: -1px 0 #fd5f00;
  }
Enter fullscreen mode Exit fullscreen mode

我决定让伪元素阴影的颜色与主阴影的颜色相同,但你可以让它们不同,以达到使用blackblue颜色的坏电视的效果。

夹子

接下来,我们需要使用 clip 属性。

clip 属性定义了定位元素内容的显示区域。超出该区域的内容将被截断,变得不可见。

替代文本

我们使用此属性来交替显示cropped parts我们的伪元素。

句法:

剪辑:矩形(Y1,X1,Y2,X2);

这些值是从元素边缘到剪辑区域的距离。

剪辑:矩形top/// rightbottomleft

因此,为了我们的伪元素,我们在右侧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;
  }
Enter fullscreen mode Exit fullscreen mode

伪元素的background属性要和背景完全一致,这样才能融合,显示上不会出现问题,这一点很重要。

替代文本

剪辑动画

为了定性地为我们的元素制作动画,我们需要创建一个分步动画,其中我们将改变属性中的first和值,以便我们的伪元素在从上到下的动画过程中仅部分显示。thirdclip

在这种情况下,属性second和值必须保持不变。fourthclip

$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);
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

我个人使用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;
  }
Enter fullscreen mode Exit fullscreen mode

就这些了。

结束

好了,就是这样。这是一个非常简单且非常流行的纯 CSS 故障效果创建方法。非常感谢你花时间阅读我的文章。

不要切换。
替代文本

文章来源:https://dev.to/kerthin/how-create-pure-css-glitch-effect-530p
PREV
🧑‍💻 我如何在一个月内开发我的投资组合🗓 + 演示🍿 完整投资组合演示介绍设计技术主页主页 CodePen 演示:我的天哪投资组合页面最后的润色响应式总结结果结束完整投资组合演示
NEXT
8 Great Developer Extensions ⚙️ for Your Browser 🧑‍💻 Introduction 1. ColorZilla 2. PerfectPixel 3. Window Resizer 4. Wappalyzer 5. FireShot 6. Pinterest Save Button 7. Vue.js devtools 8. JSON Formatter The End