渐变背景在 CSS 里面就是一个颜色到另一个颜色渐渐变化的样子。


本文示例中,盒子基础样式:

.box {
margin: 20px;
padding: 20px;
border: 10px dashed rgba(0,255,0,1);
width: 250px;
height: 180px;
}

渐变背景分类

三种基础渐变

  1. 线性渐变 linear-gradient
  2. 径向渐变 radial-gradient
  3. 锥形渐变 conic-gradient

三种重复渐变

  1. 重复线性渐变 repeating-linear-gradient
  2. 重复径向渐变 repeating-radial-gradient
  3. 重复锥形渐变 repeating-conic-gradient

线性渐变使用

完整语法:

  linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )  

  angle: 渐变角度
side-or-corner: 渐变线的起始点位置
color-stop-list: 渐变颜色列表

默认为垂直方向渐变,如下:

  background: linear-gradient(#ff4757, rgb(221, 255, 0));

可通过参数调整渐变方向,如下将渐变方向调整为 70 度:

  background:
linear-gradient(70deg, #ff4757, rgb(221, 255, 0));

也可通过关键字控制渐变方向,如下将渐变方向调整为从右下到左上:

  background:
linear-gradient(to left top, #ff4757, rgb(221, 255, 0));

多种颜色渐变,可在颜色后面添加百分比(也可以是固定像素值,比如 200px)控制颜色位置:

  background:
linear-gradient(
to left top,
#ff4757,
rgb(221, 255, 0) 30%,
rgb(200, 0, 255) 200px,
rgb(0, 186, 40)
);

也可以使用两个百分比(或其他 CSS 识别的单位,如 px em 等)固定颜色占用区块,实现多个色块拼接效果:

  background:
linear-gradient(
to right,
#ff4757 20%,
rgb(221, 255, 0) 20% 40%,
rgb(98, 0, 255) 40% 60%,
rgb(0, 186, 40) 60% 80%,
rgb(255, 0, 0) 80% 100%
);

可设置多个线性渐变形成堆叠效果:

  background:
linear-gradient(217deg, rgba(255, 0, 0, 0.5), rgba(255, 0, 0, 0) 80%),
linear-gradient(127deg, rgba(0, 255, 0, 0.5), rgba(0, 255, 0, 0) 80%),
linear-gradient(336deg, rgba(0, 0, 255, 0.5), rgba(0, 0, 255, 0) 80%);

径向渐变使用

完整语法:

  radial-gradient( [ [ <radial-shape> || <radial-size> ] || at <position> ] , <color-stop-list> )  

  radial-shape: circle(圆形) 或 ellipse(椭圆)
radial-size: 渐变结束形状的大小,包含四个关键字(closest-side/closest-corner/farthest-side/farthest-corner)
position: 圆心位置
color-stop-list: 渐变颜色列表

默认的径向渐变从中心向外扩散,如下:

  background:
radial-gradient(
#ff4757, rgb(221, 255, 0)
);

可通过参数调整圆心位置,如下将圆心位置调整为左上角:

  background:
radial-gradient(
at left top,
#ff4757, rgb(221, 255, 0)
);

通过调整 radial-size 控制径向渐变结束形状的大小,如下不同值之间的区别:

  background:
radial-gradient(
ellipse closest-side at 30% 40%,
#ff4757,
rgb(221, 255, 0)
);

也可设置多个径向渐变形成堆叠效果:

  background:
radial-gradient(circle at 50% 0, rgba(255, 0, 0, 0.5), rgba(255, 0, 0, 0) 80%),
radial-gradient(circle at 6.7% 75%, rgba(0, 0, 255, 0.5), rgba(0, 0, 255, 0) 80%),
radial-gradient(circle at 93.3% 75%, rgba(0, 255, 0, 0.5), rgba(0, 255, 0, 0) 80%);

锥形渐变使用

完整语法:

  conic-gradient( [ [ [ from <angle> ]? [ at <position> ]? ] || <color-interpolation-method> ]? , <angular-color-stop-list> )  

  angle: 旋转角度
position: 圆心位置
color-interpolation-method: 色彩空间,2023版本新增数据类型,参考文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/color-interpolation-method
angular-color-stop-list: 渐变颜色列表

默认的锥形渐变围绕一个中心点旋转,如下:

  background:
conic-gradient(
#ff4757,
rgb(221, 255, 0)
);

可通过参数改变起始角度和圆形位置,如下:

  background:
conic-gradient(
from 45deg at 30% 40%,
#ff4757,
rgb(221, 255, 0)
)

也可通过控制色块区域绘制一个饼状图,如下:

  width: 180px;
height: 180px;
border-radius: 180px;
background:
conic-gradient(
from 45deg,
#ff4757 30%,
rgb(221, 255, 0) 30% 70%,
rgb(98, 0, 255) 70% 100%
)

使用锥形渐变可模拟 PhotoShop 的马赛克背景效果:

  background: conic-gradient(
#fff 0.25turn,
#C8C8C8 0.25turn 0.5turn,
#fff 0.5turn 0.75turn,
#C8C8C8 0.75turn
)
top left / 20px 20px repeat;

也可设置多个锥形渐变形成堆叠效果:

  background:
conic-gradient(from 45deg at 30% 40%, rgba(221, 255, 0,0) , rgba(98, 0, 255,0.5)),
conic-gradient(from 45deg at 80% 40%, #ff4757 30%, rgba(221, 255, 0,0.1), rgba(98, 0, 255,0.5))

重复线性渐变

语法与线性渐变相同,在线性渐变基础上,多了一层重复操作,其效果如下:

  background: repeating-linear-gradient(
from 45deg at 50% 50%,
#ff4757 0deg 10deg,
rgb(221, 255, 0) 10deg 20deg,
rgb(98, 0, 255) 20deg 30deg
);

重复径向渐变

语法与径向渐变相同,在径向渐变基础上,多了一层重复操作,其效果如下:

  background: repeating-linear-gradient(
45deg,
#ff4757 0px 10px,
rgb(221, 255, 0) 10px 20px,
rgb(98, 0, 255) 20px 30px
);

重复锥形渐变

语法与锥形渐变相同,在锥形渐变基础上,多了一层重复操作,其效果如下:

  background: repeating-conic-gradient(
from 45deg at 50% 50%,
#ff4757 0deg 10deg,
rgb(221, 255, 0) 10deg 20deg,
rgb(98, 0, 255) 20deg 30deg
);

总结

在使用 CSS 渐变时,需注意浏览器兼容性,部分新语法可能在稍低版本浏览器中不支持。

渐变的使用不止于此,可以发挥想象力,实现更多炫酷效果。

参考资料:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_images/Using_CSS_gradients

Web前端入门第 32 问:CSS background 元素渐变背景用法全解的更多相关文章

  1. 好程序员web前端分享值得参考的css理论:OOCSS、SMACSS与BEM

    好程序员web前端分享值得参考的css理论:OOCSS.SMACSS与BEM 最近在The Sass Way里看到了Modular CSS typography一文,发现文章在开头部分就提到了OOCS ...

  2. web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

    秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...

  3. 进击的Python【第十三章】:Web前端基础之HTML与CSS样式

    进击的Python[第十四章]:Web前端基础之HTML与CSS样式 一.web框架的本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客 ...

  4. Android零基础入门第32节:新推出的GridLayout网格布局

    原文:Android零基础入门第32节:新推出的GridLayout网格布局 本期主要学习的是网格布局是Android 4.0新增的布局,和前面所学的TableLayout表格布局 有点类似,不过他有 ...

  5. 好程序员web前端分享18个用CSS制作出来的东西

    好程序员web前端分享18个用CSS制作出来的东西,与流行的看法相反,CSS不仅仅是用来提供一个WEB页面的基本风格,以使它看起来更有吸引力.还有很多其他的事情,CSS也可以做的很好.由于它创建动画和 ...

  6. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

  7. web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触

    15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...

  8. Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维护,根据MIT许可证发布,支持 Wind ...

  9. web前端(7)—— 了解CSS样式,引入css样式的方式

    CSS 在前面大概的介绍了css,从本片博文开始,会详细的介绍它,在最开始介绍web前端时,打开百度首页,当时我提出了一个问题,为什么百度首页的输入框可以放在正中间,就是由于有css的控制,我们可以打 ...

  10. [转载]Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)

    http://brackets.io/ Brackets 是一个免费.开源且跨平台的 HTML/CSS/JavaScript 前端 WEB 集成开发环境 (IDE工具).该项目由 Adobe 创建和维 ...

随机推荐

  1. 自定义快捷命令程序(VC++加批处理)

    一 概述 在看<从小工到专家-程序员修炼之道>时,看到建议使用Shell,很有感触.在很多时候,通过键盘操作,比鼠标的确会块很多,如果能用好shell命令(或批处理命令)   ,的确能节省 ...

  2. Superset 用户集成方案

    注意,一下内容来自外网浏览器翻译,本人使用了将superset集成进入第三方系统,superset采用自定义身份验证+第三系统iframe嵌入方式,但是这个方式存在一个问题,iframe与redire ...

  3. 滑动窗口模板在字符串中的巧妙应用|LeetCode 76 最小覆盖子串

    LeetCode 76 最小覆盖子串 点此看全部题解 LeetCode必刷100题:一份来自面试官的算法地图(题解持续更新中) 更多干货,请关注公众号[忍者算法],回复[刷题清单]获取完整题解目录- ...

  4. 天翼云弹性高性能计算Portal简介

    本文分享自天翼云开发者社区<天翼云弹性高性能计算Portal简介>,作者:小燕同学 1.平台概述 天翼云官网已上线公有云弹性高性能计算(EHPC)产品,公有云EHPC产品主要由管理员控制, ...

  5. [记录点滴] 使用工具和命令对redis数据进行备份恢复

    [记录点滴] 使用工具和命令对redis数据进行备份恢复 0x00 摘要 本文记录了如何使用工具对redis数据进行恢复备份,涉及的有Redis-Dump,MySQL,Redis管道命令. 0x01 ...

  6. 常用Maven命令

    一.常用命令 1.1 打包 mvn clean package -DskipTests 指定环境 mvn clean install -Dmaven.test.skip=true -Pprod-tx ...

  7. FreeSql学习笔记——1.入门

    前言 学习过程中,使用的是.Net 5 WebApi项目,数据库使用的是SQL Server,主要会整理下常用的api,现在就开始吧~   初始化 先选择一个WebCoreApi项目进行创建,创建完项 ...

  8. Thymeleaf判断集合是否为空

    Thymeleaf判断集合是否为空最近项目使用的是thymeleaf.项目架构是Springboot+Thymeleaf. 在判断集合是否为空的时候踩了坑与大家分享. 以下代码是判断集合是否为空的,m ...

  9. MySQL - [18] mysql中关于cascade的用法

    drop database语句用于删除数据库.但如果想要删除一个数据库并且还要删除所有依赖于该数据库的存储过程.函数等,可以使用cascade关键字.drop database test cascad ...

  10. 使用selenium下载文件--设置下载文件自动保存文件夹

    selenium自动下载文件到指定目录 本文参考:https://www.cnblogs.com/huxiaofeng1029/p/17383726.html 有时候,我们需要在网页中点击某些按钮,将 ...