本来想先瞎扯些什么,然后又不知道讲什么的好,那就直接进入正题吧。

参考资料:

Using CSS gradients  (以及该页面内的大部分链接页面的资料)

首先区分下,平常给的纯色background,指的是background-color属性,而渐变色所指向的是background-image属性,是作为背景图像处理的。

从渐变的形式分为2种:线性渐变(直线扩散)和径向渐变(从圆心扩散)。

线性渐变: linear-gradient | repeating-linear-gradient

径向渐变: radial-gradient | repeating-radial-gradient

线性渐变

语法格式

linear-gradient(  [ <angle/*角度*/> | to <side-or-corner>/*方向*/ ,]? <color-stop/*渐变开始的颜色*/> [, <color-stop>]+/*渐变结束的颜色,开始-结束的区间内包含渐变涉及到的颜色列表*/ )
<side-or-corner> = [left | right] || [top | bottom]
<color-stop> = <color> [ <percentage/*当前渐变色所占百分比*/> | <length/*当前渐变色起始位置,也代表上一个颜色渐变结束的位置*/> ]

使用代码及效果图

<div class="test"></div>

两种颜色的渐变

<style>
/*此例由黑色渐变至红色*/
.test{
width:300px;
height: 100px;
background-image: linear-gradient(black, red); /*默认是从上到下的渐变*/
/*background-image: linear-gradient(to top, black, red);*/ /*从下到上的渐变*/
/*background-image: linear-gradient(to right, black, red);*/ /*从左到右的渐变*/
/*background-image: linear-gradient(to left, black, red);*/ /*从右到左的渐变*/
}
</style>

效果图如下:

三种及多种颜色的渐变

<style>
/*此例由黑色渐变至红色再至黄色*/
.test{
width:300px;
height: 100px;
background-image: linear-gradient(black, red, yellow); /*从上到下*/
/*background-image: linear-gradient(to top, black, red, yellow);*/ /*从下到上*/
/*background-image: linear-gradient(to right, black, red, yellow);*/ /*从左到右*/
/*background-image: linear-gradient(to left, black, red, yellow);*/ /*从右到左*/
}
/*... 按此规则依次加颜色列表,实现多色渐变*/
</style>

效果图如下:

渐变距离的控制

<style>
.test{
width:300px;
height: 100px;
background-image: linear-gradient(to right, black 5px, red 60px, yellow 100px, purple 300px);
}
</style>

效果图如下:

给渐变色加了位置值所代表的含义:

1. div[class="test"]背景色执行从左到右的渐变

2. 0px-5px为黑色

3. 5px-60px为黑色向红色的渐变

4. 60px-100px为红色向黄色的渐变

5. 100px-300px为黄色向紫色的渐变

每两种颜色之间的渐变的距离为位置差。

如果后一个颜色的起始位置的值小于前一个颜色的起始位置的值,则这两种颜色的渐变距离为0,变成直接的颜色变化。
最后一个颜色可不设置起始位置的值,默认渐变至总长度(这里指div宽度)的末尾。如果最后一个颜色起始位置的值小于总长度的值,则从该值开始至总长度的末尾由该颜色值纯色填充。

使用百分比:

<style>
.test{
width:300px;
height: 100px;
background-image: linear-gradient(to right, black 10%, red 30%, yellow 50%, purple 100%);
}
</style>

解释同上。

不同角度的渐变

以上案例都是以<side-or-corner>决定渐变方向,使用<angle>便可以根据自己喜好定义方向了。

在webkit内核的deg

正常模式(指的是没规定浏览器内核的样式)deg

angle的角度值与上图的角度值所指方向一致。

<style>
/*这里以标准的为例*/
.test{
width:300px;
height: 100px;
background-image: linear-gradient(0deg, black, red); /*从下至上*/
/*background-image: linear-gradient(45deg, black, red);*/ /*从左下角至右上角*/
/*background-image: linear-gradient(90deg, black, red);*/ /*从左至右*/
/*background-image: linear-gradient(135deg, black, red);*/ /*从左上角至右下角*/
/*background-image: linear-gradient(180deg, black, red);*/ /*从上至下*/
/*background-image: linear-gradient(225deg, black, red);*/ /*从右上角至左下角*/
/*background-image: linear-gradient(270deg, black, red);*/ /*从右至左*/
/*background-image: linear-gradient(315deg, black, red);*/ /*从右下角至左上角*/
}
</style>

径向渐变

语法格式:

radial-gradient( [ circle/*圆*/ || <length>/*半径大小*/ ] [ at <position>/*圆心所在位置*/ ]? ,
| [ ellipse/*椭圆*/ || [<length> | <percentage> ]{}]/*百分比*/ [ at <position>/*圆心所在位置*/ ]? ,
| [ [ circle | ellipse ]/*圆or椭圆*/ || <extent-keyword>/*椭圆离(最近,最远)边或角的距离*/ ] [ at <position>/*圆心所在位置*/ ]? ,
| at <position> ,
<color-stop> [ , <color-stop> ]+/*渐变颜色列表及位置*/ )
<extent-keyword> = closest-corner | closest-side | farthest-corner | farthest-side
<color-stop> = <color> [ <percentage> | <length> ]

使用代码及效果图

<div class="test"></div>

<style>
.test{
width: 300px;
height: 100px;
background-image: radial-gradient(50px at 50% 50% , white 0%, red 50%, purple 99%, transparent 99%);
}
</style>

以上代码的圆心在元素的中心点(50% 50%),半径为50px,圆心白色,圆心至半径50%处由白色渐变至红色,又从半径50%处至99%处红色渐变至紫色,从半径长度的99%至99%由紫色渐变透明。

注意:transparent 99%(或0%-99%)是为圆规定在99%之后至100%的背景色为透明,如果除去这个设置,那剩余部分将会被前一个背景色填充,当然,现在这个值在这里是99%,在其他地方也可以是其他值,根据上一个颜色的相对圆心的距离确定范围。

椭圆

<style>
.test{
width: 300px;
height: 100px;
border: 1px solid black;
background-image: radial-gradient( ellipse farthest-corner at 30% 30% , white 0%, red 20%, purple 30%, transparent 30%);
}
</style>

首先,选择圆的类型是ellipse,然后选择extent-keyword来确定椭圆的规格(farthest-corner),然后at position确定圆心所在位置(30% 30%),之后日常的渐变颜色列表及渐变范围。

效果图如下:

分析下extent-keyword:

closest-side: 以靠近圆心的最近的一条边为基准来规定椭圆的大小。

closest-corner:以靠近圆心的最近的一个角(椭圆所在元素的角)为基准来规定椭圆的大小。

farthest-side:以靠近圆心的最远的一条边为基准来规定椭圆的大小。

farthest-corner:以靠近圆心的最远的一个角(椭圆所在元素的角)为基准来规定椭圆的大小。

以上图为例,规定的是farthest-corner,这时候最远的角是div的点D所在的角(最近的角是点A所在位置的角,最近的边是AB边,最远的边是BD边),且椭圆为30%的规格,圆心是点O,OF:OD = 3:10,所谓的30%便是这么得来的(当然,也可以是像素规定)。

...其余规则以此类推...

渐变的repeat

线性repeat

语法格式:

repeating-linear-gradient(  [ <angle>/*角度*/ | to <side-or-corner>/*方向*/ ,]? <color-stop> [, <color-stop>]+/*渐变颜色列表*/ )
<side-or-corner> = [left | right] || [top | bottom]
<color-stop> = <color> [ <percentage> | <length> ]

案例:

<style>
.test{
width: 300px;
height: 100px;
border: 1px solid black;
background-image: repeating-linear-gradient(180deg, transparent, transparent 5px, black 5px, black 10px),repeating-linear-gradient(90deg, transparent, transparent 5px, black 5px, black 10px);
}
</style>

效果图如下:

repeating-linear-gradient也可重复使用

<style>
.test{
width: 300px;
height: 100px;
border: 1px solid black;
background-image: repeating-linear-gradient(180deg, transparent, transparent 5px, black 5px, black 6px),repeating-linear-gradient(90deg, transparent, transparent 5px, black 5px, black 6px);
}
</style>

效果图如下:

角度和方向可根据各自需求选择。

当然,有了线性的repeat,径向也不会示弱,来看看径向的repeat的吧。

语法格式:

repeating-radial-gradient( [[ circle/*圆*/  || <length>/*半径*/ ]                     [at <position>]?/*位置*/ , |
[ ellipse/*椭圆*/ || [<length> | <percentage> ]{}] [at <position>]? , |
[[ circle | ellipse ] || <extent-keyword> ] [at <position>]? , |
at <position> , <color-stop> [ , <color-stop> ]+ )
<extent-keyword> = closest-corner | closest-side | farthest-corner | farthest-side
<color-stop> = <color> [ <percentage> | <length> ]

这个是圆的:

<style>
.test{
width: 300px;
height: 100px;
border: 1px solid black;
background-image: repeating-radial-gradient(circle, black, black 5px, white 5px, white 10px);
}
</style>

效果图如下:

这个是椭圆的:

<style>
.test{
width: 300px;
height: 100px;
border: 1px solid black;
background-image: repeating-radial-gradient(ellipse, black, black 5px, white 5px, white 10px);
}
</style>

效果图如下:

暂时就写这些吧,具体的运用看各自设计图给的是什么样的~ 也是懒得每个效果都切图...

同时,欢迎大家共同交流讨论各种技术问题~

css3 背景渐变的更多相关文章

  1. CSS3背景渐变。。。

    CSS3 Gradient 分为 linear-gradient(线性渐变)和 radial-gradient(径向渐变).而我们今天主要是针对线性渐变来剖析其具体的用法.为了更好的应用 CSS3 G ...

  2. css3背景渐变以及图片混合渲染模式(一)

    一.CSS3 渐变(Gradients):CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡. 以前,你必须使用图像来实现这些效果.但是,通过使用 CSS3 渐变(g ...

  3. CSS3背景渐变属性 linear-gradient(线性渐变)和radial-gradient(径向渐变)

    CSS3 Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变). 为了更好的应用CSS3 Gradient,我们需要先了解一下目前的几种现代浏览器 ...

  4. 使用css3背景渐变中的透明度来设置不同颜色的背景渐变

    为了添加透明度,我们使用 rgba() 函数来定义颜色结点.rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明.rgba()后面的 ...

  5. css3背景渐变以及图片混合渲染模式(二)

    http://avnpc.com/pages/photoshop-layer-blending-algorithm http://www.html5cn.org/forum.php?mod=viewt ...

  6. css3背景颜色渐变属性

    https://www.cnblogs.com/ningkyolei/p/4623697.html 很久之前写的一篇文章了,今天重新整理一下关于css3背景渐变的写法,至于是怎么来的,可以看下面渐变的 ...

  7. 第七十九,CSS3背景渐变效果

    CSS3背景渐变效果 学习要点: 1.线性渐变 2.径向渐变 本章主要探讨HTML5中CSS3背景渐变功能,主要有两种渐变方式:线性渐变和径向 (放射性)渐变. 一.线性渐变 linear-gradi ...

  8. 关于css3的背景渐变

    关于css3的渐变,目前各大浏览器还未做到很好的支持,所以需要在我们使用时加上各大浏览器前缀. -moz-:使用Mozilla内核的浏览器(Firefox浏览器) -webkit-:使用Webkit内 ...

  9. CSS3魔法堂:背景渐变(Gradient)

    一.前言 很久之前就了解过CSS3的线性渐变(Linear-Gradient),这段时间决定进一步认知这一特性,以下笔记以便日后查阅. 二.CSS3的各种背景渐变   1. 线性渐变 示例——七彩虹 ...

随机推荐

  1. Oracle Sales Cloud:报告和分析(BIEE)小细节1——创建双提示并建立关联(例如,部门和子部门提示)

    Oracle Sales Cloud(Oracle 销售云)是一套基于Oracle云端的客户商机管理系统,通过提供丰富的功能来帮助提高销售效率,更好地去了解客户,发现和追踪商机,为最终的销售成交 (d ...

  2. Autodesk View and Data API二次开发学习指南

    什么是View and Data API? 使用View and Data API,你可以轻松的在网页上显示大型三维模型或者二维图纸而不需要安装任何插件.通过View and Data API,你可以 ...

  3. mac下查看.mobileprovision文件及钥匙串中证书.cer文件

    mac下查看.mobileprovision文件及钥匙串中证书.cer文件 一. mobileprovision文件查看 xxx.mobileprovision是ios开发中的设备描述文件,里面有证书 ...

  4. 用友NC开发的ListView切换成FormEdit

    在点击 “修改” 按钮或者双击ListView中某一项Item,将进入FormEdit即卡片界面,但是 FormEdit有两种状态,一种是 可编辑的状态(点修改按钮进入的状态),一种是非可编辑状态(双 ...

  5. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  6. Jsoup系列学习(2)-解析html文件

    解析html文件 1.当我们通过发送http请求时,有时候返回结果是一个html格式字符串,你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 使用 Jsoup ...

  7. Favorites of top 10 rules for success

    Dec. 31, 2015 Stayed up to last minute of 2015, 12:00am, watching a few of videos about top 10 rules ...

  8. Web site collections

    Integration 伯乐在线 极客头条 Hacker News Stack Overflow RFC Search Security Python Hacker - Freebuf PrimalS ...

  9. BZOJ 1901: Zju2112 Dynamic Rankings[带修改的主席树]【学习笔记】

    1901: Zju2112 Dynamic Rankings Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 7143  Solved: 2968[Su ...

  10. django ORM的外键操作

    外键约束示例 #models操作如下 class HostInfo(models.Model): servername = models.CharField(max_length=) serverip ...