你不知道的CSS霓虹灯文字总结,前端开发模式

143 阅读6分钟

font-size: 4.2rem;

}

h2 {

font-size: 1.8rem;

}

.container {

margin-top: 20vh;

}

复制代码

效果图:

截屏2021-05-24 下午9.31.32.png

那所有的这些值是什么?我是怎么得到的,为什么这么多?首先,我们将白色发光效果添加到具有较小模糊半径的文本字母的外边缘。

.neonText {

color: #fff;

text-shadow:

/* 扩散白光 */

0 0 7px #fff,

0 0 10px #fff,

0 0 21px #fff,

}

复制代码

最后五个值是模糊半径较大的较宽文本阴影,形成绿色发光

.neonText {

color: #fff;

text-shadow:

/* 扩散白光 */

0 0 7px #fff,

0 0 10px #fff,

0 0 21px #fff,

/* 扩散绿光 */

0 0 42px #0fa,

0 0 82px #0fa,

0 0 92px #0fa,

0 0 102px #0fa,

0 0 151px #0fa;

}

复制代码

如果可以用少于五个阴影完成此操作,那将是很好的选择,但是我们需要所有这些阴影,以便可以将它们彼此堆叠以增加发光的深度。如果我们改用单个text-shadow效果,则效果将无法达到使效果看起来逼真的深度。

继续尝试各种色调和颜色以及模糊半径大小!可以创建多种冷光效果,因此请尝试不同的变化-甚至可以混合和匹配一种颜色混合成另一种颜色的颜色。

“闪烁”效果

======

我们知道有一些霓虹灯是有闪烁效果的,尤其是较旧的标志。我们可以用CSS动画做同样的事情!让我们@keyframes来制作一个动画,看似随机的闪烁方式来开启和关闭灯光的效果。

@keyframes flicker {

0%, 18%, 22%, 25%, 53%, 57%, 100% {

text-shadow:

0 0 4px #fff,

0 0 11px #fff,

0 0 19px #fff,

0 0 40px #0fa,

0 0 80px #0fa,

0 0 90px #0fa,

0 0 100px #0fa,

0 0 150px #0fa;

}

20%, 24%, 55% {

text-shadow: none;

}

}

复制代码

我们采用了与以前完全相同的text-shadow属性和值,将它们包装在@keyframes名为的动画中flicker,并在时间轴中选择点以应用阴影,以及完全去除阴影的点。

剩下的就是在动画希望我们闪烁的地方调用动画。在这种情况下,我们仅将其添加到<h1>元素中。与我们将闪烁应用于所有文本相比,拥有整个符号闪烁的一部分感觉要现实一些。2021-05-24 21.47.21.gif

h1 {

animation: flicker 1.5s infinite alternate;

}

复制代码

注意,如果希望整个符号闪烁,那么我们可以从技术上删除类text-shadow上的值.neonText,向其添加动画,然后@keyframes改为应用阴影。

这是一个很酷的效果,并为我们的霓虹灯文字增添了更多的真实感!当然,您还可以尝试其他效果,本文还将对此进行进一步探讨。例如,更多的是脉动动画还是更细微的闪烁?

脉动的光芒

=====

我们对此一目了然。就像前面的示例一样,它使用关键帧,其中我们在动画的开始和结束处指定模糊半径的大小。

我们希望模糊半径的大小在动画结束时最小,因此我们只需减小关键帧中每个text-shadow值的模糊半径值即可0%。这样,模糊的大小逐渐起伏并流动,从而产生脉动效果。

@keyframes pulsate {

100% {

text-shadow:

0 0 4px #fff,

0 0 11px #fff,

0 0 19px #fff,

0 0 40px #0fa,

0 0 80px #0fa,

0 0 90px #0fa,

0 0 100px #0fa,

0 0 150px #0fa;

}

0% {

text-shadow:

0 0 2px #fff,

0 0 4px #fff,

0 0 6px #fff,

0 0 10px #0fa,

0 0 45px #0fa,

0 0 55px #0fa,

0 0 70px #0fa,

0 0 80px #0fa;

}

}

复制代码

再一次,我们将动画添加到某个元素。我们将再继续<h1>

h1 {

animation: pulsate 2.5s infinite alternate;

}

复制代码

这是所有这些放在一起的地方:2021-05-24 21.50.46.gif

微妙的闪烁

=====

我们需要做的只是稍微减小0%关键帧中模糊半径的大小,只是不达到上一个示例中看到的程度。

@keyframes pulsate {

100% {

text-shadow:

0 0 4px #fff,

0 0 11px #fff,

0 0 19px #fff,

0 0 40px #f09,

0 0 80px #f09,

0 0 90px #f09,

0 0 100px #f09,

0 0 150px #f09;

}

0% {

text-shadow:

0 0 4px #fff,

0 0 10px #fff,

0 0 18px #fff,

0 0 38px #f09,

0 0 73px #f09,

0 0 80px #f09,

0 0 94px #f09,

0 0 140px #f09;

}

}

复制代码

由于闪烁更加细微,模糊半径的减小也没有那么大,因此我们应该增加每秒动画播放次数,以模拟更频繁的闪烁。这可以通过减少动画的持续时间来完成,例如0.11s:

h1 {

animation: pulsate 0.11s ease-in-out infinite alternate;

}

复制代码

2021-05-24 21.51.53.gif

使用背景图片

======

如果文字只是在一个黑黑的背景上面,那真的很单调,所以我们要使用砖纹理或其他东西:

body {

background-image: url(wall.jpg);

}

复制代码

2021-05-24 21.52.59.gif

添加边框

====

我们可以添加的最后一个细节是标志周围的某种圆形或矩形边框。这只是框住文本并使其看起来像一个实际符号的一种好方法。通过在边框上添加阴影,我们可以为其提供与文本相同的霓虹效果!

无论文本的容器是元素是什么,都需要边框。假设我们只使用一个<h1>元素。这就是边界。我们将border简写属性称为标题周围的纯白色边框,外加一点填充以使文本有一定的呼吸空间:

h1 {

border: 0.2rem solid #fff;

padding: 0.4em;

}

复制代码

我们可以在边框的拐角处稍微变圆一些,因此border-radius在标题上应用a可以使事情变得不那么尖锐。您可以使用最适合您的值来获得所需的精确度。

h1 {

border: 0.2rem solid #fff;

总结:

  • 函数式编程其实是一种编程思想,它追求更细的粒度,将应用拆分成一组组极小的单元函数,组合调用操作数据流;

  • 它提倡着 纯函数 / 函数复合 / 数据不可变, 谨慎对待函数内的 状态共享 / 依赖外部 / 副作用;

Tips:

其实我们很难也不需要在面试过程中去完美地阐述出整套思想,这里也只是浅尝辄止,一些个人理解而已。博主也是初级小菜鸟,停留在表面而已,只求对大家能有所帮助,轻喷🤣;

我个人觉得: 这些编程范式之间,其实并不矛盾,各有各的 优劣势

理解和学习它们的理念与优势,合理地 设计融合,将优秀的软件编程思想用于提升我们应用;

所有设计思想,最终的目标一定是使我们的应用更加 解耦颗粒化、易拓展、易测试、高复用,开发更为高效和安全

开源分享:docs.qq.com/doc/DSmRnRG…