超炫酷的赛博按钮和弹窗

很久之前就发现了一个非常心动的效果,一路从qq追到了tg,再追到了x,最后到了codepen,感觉一定很复杂,现在看来也没什么难度。 原链接


按钮

原作者的代码非常详尽,还用了很多高级技巧,但是我只在乎动画本身,简化后,按钮也不过是clip-path和transform位移的巧妙结合,手动实现一下吧,首先是基本的按钮

准备工作

为了方便,用了tailwindcss(是的,我就是觉得tailwindcss的可读性很高,比跳转去看实现方便的多),可以直接用cdn引入,然后定义全局变量

html
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
<style>
  body {
    display: grid;
    place-items: center;
    min-height: 100vh;
    background: #000;
    color: white;
  }
  :root {
    --accent: hsl(183 38% 57%);
    --shadow: hsl(10 100% 60%);
    --corner: 12px;
    --border: 2px;
    --clip: polygon(
      0 0,
      100% 0,
      100% calc(100% - var(--corner)),
      calc(100% - var(--corner)) 100%,
      0% 100%
    );
  }
</style>

按钮的结构和基础样式

简单的说,按钮有两层,正常显示看到的那层,Hover时另外一层glitch从隐藏变为显示

Glitch 动画

这部分是整个效果的灵魂。glitch 动画通过在极短的时间内快速切换不同的 clip-path 和 transform 位移,模拟出数字信号干扰的视觉效果。它将 glitch 层切割成不规则的碎片并使其抖动,从而产生炫酷的故障感。

不得不佩服原作者的耐心,能把动画的每一帧都调校得如此精细,我暂且不想管这是怎么弄出来的。到这里,我们的赛博朋克按钮就完成了!

模态框

接下来,我们为这个按钮创建一个与之匹配的模态框。模态框的动画运用了类似的 CSS 属性,但更侧重于通过 transition 和不同的 transition-delay 来营造一种元素逐个登场的序列感。

HTML和JS

动画效果 CSS

1.模态框容器:淡入淡出。 2.侧边装饰条:利用 ::before 和 ::after 伪元素实现,从左侧滑入。 3.标题下划线:从左到右展开。 4.背景:同样从左到右展开。

总结

这个例子给我最大的启示就是,看似复杂的动画,只是由一些基础的CSS属性的组合以及精密控制实现的,

我的Visual Studio Code配置和插件推荐
我能离开了吗

评论区

评论加载中...(永远不会加载完成的)

© 2025 shenley