css 利用 linear-gradient 实现条纹背景

1. 水平条纹背景

当给背景设置渐变效果时,默认的渐变方向是垂直由上到下的,效果如下:

 
{
background: linear-gradient(#aaa, #ddd);
}

image

尝试拉近色标的距离,会发现渐变区域变小了:

 
{
background: linear-gradient(#aaa 40%, #ddd 60%);
}

image

当渐变色的色标设置为相同位置时,过渡区域就会变成无限小,看起来的效果就会如下图所示:

 
{
background: linear-gradient(#aaa 50%, #ddd 50%);
}

image

然后通过 background-size 来调整他的尺寸,由于默认情况下背景是重复平铺的,所以得到的效果就是填满水平条纹:

 
{
background: linear-gradient(#aaa 50%, #ddd 50%);
background-size: 100% 30px;
}

image

如果某个色标的位置值比整个列表中在它之前的色标的位置值都要小,则该色标的位置值会被设置为它前面所有色标位置值的最大值。因此后面色标的位置可以写成0:

 
{
background: linear-gradient(#aaa 50%, #ddd 0);
background-size: 100% 30px;
}

可以通过修改色标的位置来生成不等宽的条纹:

 
{
background: linear-gradient(#aaa 30%, #ddd 0);
background-size: 100% 30px;
}
{
background: linear-gradient(#aaa 70%, #ddd 0);
background-size: 100% 30px;
}

image

 

image

如果需要多种颜色的条纹,设置多种颜色渐变即可:

 
{
background: linear-gradient(#aaa 33.33%, #ddd 0, #ddd 66.66%, #fff 0);
}

image

2. 垂直条纹背景

想要生成垂直方向的条纹,只需修改渐变的方向即可(别忘了把 background-size 颠倒一下):

 
{
background: linear-gradient(to right, #aaa 50%, #ddd 0);
background-size: 30px 100%;
}
/* 或 */
{
background: linear-gradient(90deg, #aaa 50%, #ddd 0);
background-size: 30px 100%;
}

image

3. 斜向条纹背景

如果直接修改渐变方向,使其倾斜45°,并且修改 background-size ,会得到下面的效果:

 
{
background: linear-gradient(45deg, #aaa 50%, #ddd 0);
background-size: 30px 30px;
}

image

虽然效果也很好看,但是我们需要的效果是把整个背景旋转45°,而不是把每个小切片旋转45°。仔细观察会发现,想要通过小切片拼接成完整的斜向条纹,只需将每个切片分割为四份。因此需要新增两个色标:

 
{
background: linear-gradient(45deg, #aaa 25%, #ddd 0, #ddd 50%, #aaa 0, #aaa 75%, #ddd 0);
background-size: 30px 30px;
}

image

 

 

image

效果实现了,再调整 background-size ,增加条纹宽度:

 
{
background: linear-gradient(45deg, #aaa 25%, #ddd 0, #ddd 50%, #aaa 0, #aaa 75%, #ddd 0);
background-size: 60px 60px;
}

image

 

image

效果虽然实现,但是条纹的宽度如果想和上面的同样设置为15px,那 background-size 就需要根据勾股定理求出准确的值,此处的结果约为42,因为这个结果不能完全整除,所以只能根据想要的精确度四舍五入取值,因此这种方法不够灵活。如果想要其他倾斜角度的条纹便很难计算 background-size 。

想要灵活地实现不同角度的条纹,这时候就需要用到 repeating-linear-gradient() ,重复线性渐变。重复线性渐变会循环色标,知道填满整个背景:

 
{
background: repeating-linear-gradient(45deg, #aaa, #ddd 30px);
}

image

改写成上面的效果就是:

 
{
background: repeating-linear-gradient(45deg, #aaa 0, #aaa 15px, #ddd 0, #ddd 30px);
}

image

只需修改角度便可以得到不同角度的条纹:

 
{
background: repeating-linear-gradient(60deg, #aaa 0 15px, #ddd 0 30px);
}
{
background: repeating-linear-gradient(30deg, #aaa 0 15px, #ddd 0 30px);
}

image

 

image

4. 附录

MDN linear-gradient
MDN repeating-linear-gradient 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/68190.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode】543.二叉树的直径

题目 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 示例 1: 输入:root [1,2,3,4,5]…

Labview控制APx(Audio Precision)进行测试测量(六)

用 LabVIEW 驱动 VIs生成任意波形 在 APx500 应用程序中,默认波形类型为正弦。这是指 APx 内置的正弦发生器,根据信号路径设置,许多测量还允许其他内置波形,如方波,分裂正弦波或分裂相位,以及使用导入的。w…

DDIM: DENOISING DIFFUSION IMPLICIT MODELS

DDIM: DENOISING DIFFUSION IMPLICIT MODELS 去噪扩散隐式模型DDIM预测噪声生成过程 实验 论文题目:Denoising Diffusion Implicit Models (DDIM) 论文来源:ICLR 2021 论文地址:https://arxiv.org/pdf/2010.02502.pdf 论文代码:ht…

计算机网络-物理层(二)- 传输方式

计算机网络-物理层(二)- 传输方式 串型传输与并行传输 串行传输:是指数据是一个比特一个比特依次发送的,因此在发送端和接收端之间,只需要一条数据传输线路即可 并行传输:是指一次发送n个比特而不是一个比特,因此发送…

抓包分析 TCP 协议

TCP 协议是在传输层中,一种面向连接的、可靠的、基于字节流的传输层通信协议。 环境准备 对接口测试工具进行分类,可以如下几类: 网络嗅探工具:tcpdump,wireshark 代理工具:fiddler,charles&…

19.正则表达式

19.1什么是正则表达式 ●正则表达式( Regular Expression) 是用于匹配字符串中字符组合的模式。在JavaScript中, 正则表达式也是对象 ●通常用来查找、替换那些符合正则表达式的文本,许多语言都支持正则表达式 ●正则表达式在JavaScript中的使用场景: …

ubuntu 20.0.4 搭建nvidia 显卡环境

一、安装docker 1、安装dokcer sudo apt install docker.io2、docker 添加到用户组 创建docker用户组 sudo groupadd docker添加当前用户加入docker用户组 sudo usermod -aG docker ${USER}重启docker服务 sudo systemctl restart docker切换或者退出当前账户再从新登入 …

【力扣每日一题】2023.8.15 字符中的查找与替换

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目很长,简而言之就是检查字符串中对应索引的位置是否有特定的字符串,如果有,那么替换,返…

选择最适合自己的笔记本

选择最适合自己的笔记本电脑 一、了解笔记本品牌一线品牌准一线品牌二线品牌三线品牌 二、笔记本入手渠道笔记本入手渠道 三、根据需求选择机型使用需求1.日常使用2.商务办公、财务3.轻度剪辑、ps4.代码5.创意设计6.游戏 四、笔记本电脑配置如何选1.cpu2.显卡(GPU&a…

miniExcel 生成excel

一、nuget dotnet add package MiniExcel --version 1.31.2 二、新建表及数据 ExampleProducts 三、这里我用了Dapper.Query方法 读取excel public virtual async Task<IActionResult> Anonymous(){try{//using (var connection _dbContext.GetDbConnection())//{//…

Java接口压力测试—如何应对并优化Java接口的压力测试

导言 在如今的互联网时代&#xff0c;Java接口压力测试是评估系统性能和可靠性的关键一环。一旦接口不能承受高并发量&#xff0c;用户体验将受到严重影响&#xff0c;甚至可能导致系统崩溃。因此&#xff0c;了解如何进行有效的Java接口压力测试以及如何优化接口性能至关重要…

【Linux初阶】system V消息队列 + system V信号量

文章目录 一、system V消息队列&#xff08;了解&#xff09;二、system V信号量&#xff08;了解&#xff09;1.信号量是什么2.临界资源和临界区3.互斥4.为什么要信号量 三、IPC资源的组织方式结语 一、system V消息队列&#xff08;了解&#xff09; 消息队列提供了一个从一…