当前位置: 首页 > article >正文

CSS揭秘:7. 伪随机背景

在这里插入图片描述

前置知识:CSS 渐变,5. 条纹背景,6. 复杂的背景图案

前言

本篇主要内容依然是关于背景的,无限平铺的背景会显得整齐美观,但又有些呆板,如何实现背景的多样性和随机性,是本篇的核心。

一、四种颜色的条纹图案

首先我们用4条不同宽度颜色的条纹来平铺一个背景,初步模拟背景条纹的随机性。

  background: linear-gradient(90deg, 
                  #fb3 15%, 
                  #655 0, #655 40%, 
                  #ab4 0, #ab4 65%, 
                  hsl(20, 40%, 90%) 0);
  background-size: 80px 100%; 
  
  width: 400px;
  height: 200px

在这里插入图片描述

乍一看,这些条纹已经具备了一些随机性的视觉效果,但是也很明显能看出每80px,图片就会开始重复,这个规律很容易被发现。

二、更高的随机性

我们以四种颜色中的其中一个为底色,其他三种颜色作为条纹。 再将三个条纹以不同的间隔进行平铺,就可以得到更加”随机“的条纹背景。

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%;

在这里插入图片描述

如果不标记出来,我们目前应该比较难去分辨出平铺的图案连接处了。
如上代码,我们将三个条纹分别以 80px 60px 40px 的宽度平铺在纯色背景上,相当于三张不同尺寸图片平铺叠加在一起。那么如果我们想找到每次重复起始的点,其实就是找到 80 60 40最小公倍数

在这里插入图片描述

为了便于理解,我将各条纹图片拆分出来:

  1. 背景:background: hsl(20, 40%, 90%);
  2. 条纹一:橙色条纹以 10px 的宽度,(80 - 10)70px 的间距 平铺。
background-image: 
	linear-gradient(90deg, #fb3 10px, transparent 0); 
background-size: 80px 100%; 
  1. 条纹二: 绿色条纹以 20px 的宽度,(60 - 20)40px 的间距 平铺。
background-image: 
	linear-gradient(90deg, #ab4 20px, transparent 0); 
background-size: 60px 100%;
  1. 条纹三: 棕色条纹以 20px 的宽度,(40 - 20)20px 的间距 平铺。
background-image: 
	linear-gradient(90deg, #655 20px, transparent 0); 
background-size: 40px 100%;

[图片]

[图片]

[图片]

小结

根据我们上面实践的方法,我们可以发现,平铺的图片越大,越难以被发现重复性。那么根据我们得出平铺图片的起点是根据三者的最小公倍数得来的可以得出,我们需要给出的3个条纹尺寸,最好都是质数,只有质数之间的最小公倍数最大,这样可以更容易让平铺的图片变大。

相关阅读

  • CSS揭秘:1.半透明边框
  • CSS揭秘:2.多重边框
  • CSS揭秘:3.灵活的背景定位
  • CSS揭秘:4.边框内圆角
  • CSS揭秘:5.条纹背景(上)
  • CSS揭秘:5.条纹背景(下)
  • CSS揭秘:6.复杂的背景图案(上)
  • CSS揭秘:6.复杂的背景图案(下)

http://www.kler.cn/news/364735.html

相关文章:

  • java springboot项目如何计算经纬度在围栏内以及坐标点距离
  • (一)Mysql篇---Mysql整体架构
  • 循环双链表,将L改造为L=(a1,a3,…,an,a4,a2)
  • PyTorch模型参数初始化
  • 【数据结构与算法】之队列详解
  • iOS 本地存储地址(位置)
  • Sigrity Power SI Model Extraction模式如何提取电源网络的S参数和阻抗操作指导(一)
  • java脚手架系列10-统一缓存、分布式锁
  • 怎么做系统性能优化
  • WPF:Binding数据绑定
  • 接地电阻柜的生产流程
  • java项目之电影评论网站(springboot)
  • 【linux】centos7 安装openjdk-17
  • 笔记:WPF中MarkupExtension使用的IServiceProvider参数都有哪些
  • 星海智算:【王宝宝-ComfyUI-SD3】无需部署一键启动
  • ARM学习(33)英飞凌(infineon)PSOC 6 板子学习
  • 回归、分类模型的评估指标
  • G1(Garbage First)垃圾回收实战
  • 木木模拟器 MuMuPlayer Pro for Mac 下载安装详细教程(无需激活)
  • 人工智能_机器学习100_PCA数据降维算法_协方差和散度矩阵_深入理解_分析_协方差和散度矩阵计算过程---人工智能工作笔记0225
  • Kubernetes集群搭建容器云需要几台服务器?
  • 两个mp3音频怎么合成一个?音频合成的多个好用方法教程
  • python+大数据+基于热门视频的数据分析研究【内含源码+文档+部署教程】
  • 小程序云数据库通用操作
  • MySQL的group_concat函数:将分组中的多个值连接成一个字符串的聚合函数
  • Java安全——AES(对称加密)和 RSA(非对称加密)的实现