关于前端:基于一段神奇的CSS渐变制作噪点效果

41次阅读

共计 1987 个字符,预计需要花费 5 分钟才能阅读完成。

提及噪点成果,首先想到的就是以前的旧电视机信号不稳固时或者画面不稳固时的成果。如果你没有看过那种旧电视,能够看上面的 gif 动图,实在的状况噪点的变动速度会快很多,这里为了 gif 的大小,截取的工夫较短供参考。

这就是明天文章的主题,咱们要基于 CSS 来实现这个成果。当然除了 CSS 之外,应用 SVG,canvas 之类的也是能够实现的,本文应用 CSS 突变的一个技巧,但在理论的我的项目中要斟酌应用,且此成果在不同的浏览器中会所不同。

锯齿成果

首先通过 radial-gradient 画两个圆,有发现两个圆有什么不同吗,通过仔细观察能够看到右边的有锯齿,左边的很平滑。这也是在理论开发中解决锯齿的一种形式,就是将数值减少一点到小数位即可。

background: radial-gradient(#000 60%,#0000 60.5%)

反复圆锥突变

基于这个小数的成果来实现另一种突变的成果,反复圆锥突变,通过有限的放大小数的值发现其中的神秘。能够看到下图数值越小的时候两头局部的内容产生了变动。

.one {background: repeating-conic-gradient(#000 0 5%,#0000 0 10%)
}
.two {background: repeating-conic-gradient(#000 0 2%,#0000 0 4%)
}
.three {background: repeating-conic-gradient(#000 0 1%,#0000 0 2%)
}

基于此咱们失去一个奇怪的扭曲的视觉,此时离咱们想要的颗粒状成果还很远,因为咱们依然能够看到理论的二次曲线突变。但咱们能够将这些值减小到十分十分小的值(如 0.0001%),而后忽然之间就没有梯度了,只有纯正的颗粒感,如下图所示。

background: 
    repeating-conic-gradient(#000 0 0.0001%,#0000 0 0.0002%) 

但在实在的电视噪点时还会随同着一些条纹的成果,这时咱们能够减少 repeating-radial-gradient 并联合混合模式 background-blend-mode: difference 使成果进一步的实在。

background: 
    repeating-radial-gradient(#000 0 0.0001%,#fff 0 0.0002%) 
    60% 60%/3000px 3000px,
    repeating-conic-gradient(#000 0 0.0001%,#fff 0 0.0002%) 
    40% 40%/3000px 3000px;
background-blend-mode: difference;

动画成果

以上仅是生成了动态的成果,如果要模仿电视没有信号的话还须要减少动画的成果,基于下面的代码咱们设置了 background-position,那么能够在动画中批改这个值,让每次动画显示的值都是绝对随机呈现。

animation: b .2s infinite alternate;
@keyframes b{100% {background-position: 50% 0, 60% 50%}
}

再配合减少电视机的元素,就能进一步感觉到实在的成果了。

利用成果

基于此咱们能够利用到其余的场景,将噪点利用到图片中,通过鼠标悬停由噪点变为清晰的成果。

将噪点利用到文字中,这里次要还用到了文字背景裁剪,background-clip: text,联合下面的代码就能生成以下的成果。

  background: 
    repeating-radial-gradient(#000 0 0.0001%,#fff 0 0.0002%) 50% 0/2500px 2500px,
    repeating-conic-gradient(#000 0 0.0001%,#fff 0 0.0002%) 50% 50%/2500px 2500px;
  background-blend-mode: difference;
  mix-blend-mode: lighten;
  -webkit-background-clip: text;
          background-clip: text;

艺术成果,通过调整不同的小数值能产生不同的成果。

background:
    repeating-conic-gradient(#BF4D28 0 .00005%,#E1F5C4 0 .00017%) 0 0/5000px 4000px

减少滤镜成果。

filter: blur(10px) contrast(150) brightness(80);

最初来一个怪物成果。

在线成果:https://code.juejin.cn/pen/71…

最初

联合混合模式及滤镜能产生各种不同的成果,看到这你是不是也想尝试看看呢,有很多的新大陆等着你去发现。看完如果感觉有用记得点个赞再走,珍藏起来说不定哪天就用上啦~

参考

https://css-tricks.com/making…

正文完
 0