css实现伪随机背景效果
重现随机性是一个挑战,因为CSS本身没有提供任何随机功能。以条纹为例子。假设得到不同颜色和不同宽度的垂直条纹,并且不能让人看出贴片平铺时的接缝。第一个想法可能就是创建一个具有四种颜色的条纹图案
background:linear-gradient(90deg,#fb3 15%,#655 0, #655 40%,#ab4 0, #ab4 65%, hsl(20,40%,90%) 0); background-size: 80px 100%;
为了更真实地模拟条纹的随机性,把这组条纹从一个平面拆散为多个图层:一种颜色作为底色,另三种颜色作为条纹,然后再让条纹以不同的间隔进行重复平铺
background: hsl(20,40%,90%); background-image:linear-gradient(90deg,#fb3 10px,transparent 0), linear-gradient(90deg,#ab4 20px,transparent 0), linear-gradient(90deg,#655 20px,transparent 0); background-size: 80px 100%,60px 100%,40px 100%;
因为最顶层贴片的重复规律最容易被察觉,应该把平铺间距最大的贴片安排在最顶层
这里贴片的尺寸实际上就是所有background-size的最小公倍数,而40、60和80的最小公倍数正是240
根据这个逻辑,要让这种随机性更加真实,得把贴片的尺寸最大化。为了让最小公倍数最大化,这些数字最好是"相对质数。在这种情况下,它们的最小公倍数就是它们的乘积
下列代码中,平铺贴片的尺寸现在是41×61×83=207583像素,比任何屏幕分辨率都要大。这个技巧被定名为“蝉原则”
background: hsl(20,40%,90%); background-image:linear-gradient(90deg,#fb3 11px,transparent 0), linear-gradient(90deg,#ab4 23px,transparent 0), linear-gradient(90deg,#655 41px,transparent 0); background-size: 41px 100%,61px 100%,83px 100%;
原文链接:https://www.qiquanji.com/post/7070.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。