纯CSS实现随机效果

特别声明:如果您喜欢小站的内容,可以点击申请会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!或添加QQ:874472854(^_^)

最近在Codepen上看到了@Adir写的随机翻牌找蛋蛋(可以想象是砸金蛋)效果,让我再次刷新了对CSS的认知。看到这两个效果之后我才知道,在CSS中除了可以实现 动态计算逻辑运算状态切换 之外,也可以使用纯CSS实现随机效果。你是否和我一样,听到纯CSS实现随机效果有点不可思议,但这是事实,在CSS中,我们可以借助CSS动画的能力来模拟部分随机效果。如果你也想了解CSS如何实现随机效果的话,那阅读这篇文章你将知道其中的原委。

来自其他语言的随机性

众所周知,CSS是一种声明式的标记语言。在很多同学的认知中,它是静态的,即 在CSS中一旦设置了一个值(给CSS属性设置了值),就不能改变。更不能像其他编程语言,做一些复杂的事情,比如逻辑运算、动态计算、状态切换,甚至是更复杂的事情,比如随机效果。

注意,随着CSS的自定义属性calc()函数的出现,虽然我们可以借助这些特性模拟动态计算逻辑运算状态切换等,但这些和其他编程语言的同类特性相比还是有很大的局限性或者说缺陷。

大家都知道,像生成随机数(在运行时生成随机数)是JavaScript这样程序语言领域的知识,即,使用Math.random()可以随机生成数字

Math.random函数生成随机数

抛开程序语言不说,在一些CSS的处理器,比如Sass,他也提供了一个random()函数,可以实现一些随机效果。比如:

// SCSS
.element {
    width: random(80) + vw;
    height: random(50) + vmin;
}

第一次编译出来的结果是:

/* CSS */
.element {
    width: 30vw;
    height: 41vmin;
}

第二次编译出来的结果可能就是:

/* CSS */
.element {
    width: 38vw;
    height: 23vmin;
}

也正因如此,在使用Sass(或SCSS)编码时,有的时候会借助该特性(random()随机函数)实现一些随机效果,比如下面这个随机的渐变效果:

如果使用Sassmeister这样的Sass Playground可以看到每次编译后的结果:

Sass的随机性

从上面的录屏结果不难发现,使用Sass这样的CSS处理器生成随机值,但一旦CSS代码被编译或导出,这些值就会被固定,它的随机性也就被丢失了。其中的原委@Jake Albaugh做过相应的解释:

random in sass is lik

剩余80%内容付费后可查看

如需转载,烦请注明出处:https://www.w3cplus.com/css/creating-randomness-with-pure-css.html

如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!

赏杯咖啡,鼓励他创作更多优质内容!
返回顶部