CSS3总结二:(background)背景/渐变色函数
- background-color(CSS2)
- background-image
- background-position
- background-size
- background-repeat
- background-attachment
- background-origin
- background-clip
一、背景渐变色(取值单位-图像)
- linear-gradient() ==》路径渐变
- radial-gradient() ==》经向渐变
- repeating-linear-gradient()==》 重复路径渐变
- repeating-radial-gradient()==》 重复径向渐变
1.1这四个颜色渐变函数的兼容性都一样,先来看路径渐变linear-gradient()的几个个背景渐变色的示例:
background-image: linear-gradient( #CD853F, #CD69C9);/* 默认方向自下向上 */
background-image: linear-gradient(to left,#CD853F, #CD69C9);/* 自右向左 */
background-image: linear-gradient(to left,#CD853F 50px, #CD69C9); /* 自右向左 起始颜色在50px位置开始渐变 */
background-image: linear-gradient(to top left,#CD853F , #CD69C9);/* 自右下向左上渐变 */
background-image: linear-gradient(30deg , #CD853F , #CD69C9);/* 30度位置开始渐变 */
语法:linear-gradient(渐变角度,起始颜色 起始渐变位置,结束颜色 结束渐变的位置);
渐变角度可以直接设置单一方向(left),也可以设置复合方向(top left),还可以设置度数(30deg);起始位置和结束位置除了示例中使用的像素位置还可以使用百分比。
1.2经向渐变radial-gradient()的渐变示例:
/* 起始渐变色,结束渐变色 -- 其他所有值默认*/
background-image: radial-gradient( #ff0,#009);
/* 起始渐变色 起始渐变位置(可以设置像素值百分比),结束渐变色 结束渐变位置*/
background-image: radial-gradient(#ff0 20px, #009 90px);
/* 扩散形状为圆形(默认椭圆ellipse), 起始渐变色 起始渐变位置, 结束渐变色 结算渐变位置 */
background-image: radial-gradient(circle,#ff0 20px, #009 70px);
/* 扩散形状圆形 at 圆心位置在左上角(可以设置像素值百分比), 起始渐变色 起始渐变位置, 结束渐变色 结算渐变位置 */
background-image: radial-gradient(circle at top left,#ff0 0px, #009 230px);
/* 扩散形状圆形 半径大小(到最近的边) at 圆心位置在50px*² , 起始渐变色 起始渐变位置, 结束渐变色 结算渐变位置 */
background-image: radial-gradient(circle closest-side at 50px 50px,#ff0 20px, #009 70px);
/* 半径大小共有四个值分别是: */
closest-side:半径距离从圆心到最近的边的距离
closest-corner:半径距离从圆心到最近的角的距离
farthest-side:半径距离从圆心到最远的边的距离
farthest-corner:半径距离从圆心到最远的角的距离
1.3repeating-linear-gradient()在linear-gradient()基础上增加了重复平铺的效果:
语法:repeating-linear-gradient(渐变方向, 起始颜色 [这里可以设置从什么地方开始渐变,没有渐变的部分被结束渐变色填充,这部分宽度会被计入一组渐变色内(如果超出一组渐变色的宽度整个背景就变成了结束渐变色的纯色填充)], 过渡颜色 [这里可以设置纯色的宽度],结束颜色 一组渐变色所占的宽度)
/* 被一组渐变色填充: 自上向下渐变,起始渐变色 开始渐变的位置是top 5px,中间过渡色,结束渐变色 */
background-image: repeating-linear-gradient(to bottom, #aff 5px, #FFC125 ,#FF1493);
/* 自右向左渐变,起始渐变色 5像素后渐变,过渡色 过渡色保持3像素纯色, 结束渐变色 每组渐变色占20%宽度*/
background-image: repeating-linear-gradient(to left, #aff 5px, #FFC125 3px,#FF1493 20%);
1.4repeating-radial-gradient()的实现逻辑和repeating-linear-gradient()基本一致,一个采用宽度分组,一个采用半径分组。起始色的起始渐变都有基础渐变模式的其实色填充变成了重复平铺的结束渐变色填充,中间过渡色的起始渐变位置变成了中间渐变色的纯色宽度,结束渐变色的结束位置变成了每组渐变色的宽度。(重点解析:repeating-模式与普通渐变色的模式的区别)
/* 径向渐变的形状为圆形,起始渐变色 从5像素位置开始填充起始色,中间过渡色 中间过渡色的纯色宽度,结束渐变色 每组渐变色的宽度为30% */
background-image:repeating-radial-gradient(circle,#ff0 5px,#ffc125 15px, #009 30%);
二、背景图片(URL的使用)
background-image多图片的盒模型渲染原理与实际开发应用:
以上示例的代码:
div{
width: 100px;
height: 120px;
}
.div1{
background-image: url('manQQ'),url('womanQQ');
background-size: 100px 120px;/* 这里表示设置两个背景图片大小都是100px*120px */
}
.div2{
background-image: url('womanQQ'),url('manQQ');
background-size: 100px 120px,100px 120px;
}
.div3{
background-image: url('manQQ'),url('womanQQ');
background-size: 500px 120px,50px 120px;
background-position: 0px 0px,50px 0px;
background-repeat: no-repeat;
}
.div4{
background-image: /*url('manQQ'),*/url('灰QQ');/* 用注释模拟加载失败 */
background-size: 100px 120px;
}
根据上面四个示例的演示与盒模型来说:
1.background-image多url的渲染原理是盒模型的背景叠层渲染,按照rul的引入顺序从上至下叠层。所以,demo1当设置背景图片大小都为元素大小时,只能看到第一张图片。demo2的样式设置印证了这一点。
2.bockground-repeat的默认状态是repeat;所以即使设置background-size的宽度为元素的一个半只能看到两个第一张图片的缩放效果,所以在demo3中将bockground-repeat的值设置为no-repeat,然后通过background-position将两个背景图片定位到相应的位置就得到了最后的效果。
3.在实际开发应用中,background-image更多的是为了增强体验,给元素一个像素较小的背景图放到主背景图后面,当网速较慢时较小的替代图片会先加载到页面,让页面看起来被正常渲染了。还有一种情况就是主图加载出错导致无法正确加载到页面,这时候替代图片也同样起到了增强体验的效果。(demo4)
三、背景图片(起始位置与结束位置、repeat的值设置注意事项)
- background-origin
- background-clip
3.1先来看引用图片背景,其他背景属性都为默认值时的效果:
从效果图上可以看到背景图片的起始位置是pading区域,但是border的top边框和left边框被反向填充了,这是由repead的重复填充形成的效果。因为repeat的默认值是repeat。background-origin的默认值是:padding-box;而background-clip的默认值是border-box;但是border-right和border-bottom的区域是由内区域延申填充。
/* background的默认属性 */
background-origin: padding-box;
background-clip: border-box;
background-repeat: repeat;
3.2接着将background-clip(背景图片结束位置)设置为padding-box:
当background-origin和background-clip的值都为padding-box时,border上就都没有了背景图片。
/* background的起始结束位置都为padding-box时 */
background-origin: padding-box;
background-clip: padding-box;
background-repeat: repeat;
3.3继续来看结束位置的变化影响,当起始位置为padding-box,而结束位置为content-box时的效果图:
由此可见background-origin的起始位置实质上是为background-position设定参考位置,而background-clip是设定实质可见背景区域(向外的部分被修剪)。
background-origin: padding-box;
background-clip: content-box;
background-repeat: repeat;
3.4最后说明一下background-repeat的属性值的设置方式:
background-repeat: repeat;/*同等于*/background-repeat: repeat-x repeat-y;/*但是实质上不能出现这种写法*/
background-repeat: repeat-x;/*同等于*/background-repeat: repeat-x no-repeat;/*但是实质上不能出现这种写法*/
background-repeat: repeat-y;/* 同等于*/background-repeat: no-repeat repeat-y;/*但是实质上不能出现这种写法*/
background-repeat: round;/*不能以整数次平铺时适度缩放背景图片*/background-repeat: round round;/*这两种写法一样*/
background-repeat: space;/* 不能整数平铺时均匀留白 */background-repeat: space space;/*这两种写法一样*/
background-repeat: round space;/* 表示不能整数次平铺时横向适度缩放 纵向均匀留白*/
四、background-clip的text值的使用(webkit的专属属性)
background-clip的text表示使用文本裁剪图片,文字最终以裁剪的图片内容填充,但是这个属性值的兼容性不是很好,pc端只有webkit浏览器兼容,移动端的浏览器兼容性还不错。由于考虑到浏览器的兼容,我只能提供代码和效果图,不能在富文本编辑中使用代码来实现这一效果:
div{
position: absolute;
top: calc(50% - 50px);
left: calc(50% - 50px);
width: 600px;
font-size: 100px;
font-weight:;
/* 实现效果的关键样式代码 */
background-image: url('image/pic7.jpeg');
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
text-fill-color: transparent;
background-position: 0 0; /* 背景初始位置在0*0 */ /*定义一个动画效果*/
transition: all 0.6s;
}
div:hover{
background-position: center center;/*鼠标进入背景横向纵向居中*/
}
五、background-attachment(当滚动时,背景图片相对谁定位)
- fixed:背景图片相对于视口固定
- scroll:背景图片相对于元素固定
- local:背景图片相对于元素内容固定
先来看background-attachment的默认值scroll的效果图:
scroll固定在元素上的效果比较直观,接着来看local和fixed的效果图:
前面一个是local的效果,后面一个是fixed的效果。local相对内容固定,跟随内容滚动而滚动。fixed相对可视窗口固定,当可视窗口滚动时跟随滚动,但是当元素在窗口上不可见时背景图片还是会被渲染的叠层关系覆盖。
最后随便在这里看一下background-size的两个特殊值的效果:cover和contain。cover的效果是用一张图片将元素背景全部填充满,背景图片比例较大的那个方向会被切割一部分。contain的效果是用一种图片尽可能的填充元素的全部背景,背景图片比例较小的那个方向在元素上会出现留白。如果比例相同那两个效果都一样,都是刚好填充满元素。
CSS3总结二:(background)背景/渐变色函数的更多相关文章
- css3新增属性-background背景
css3新增属性 边框属性 背景属性 文字属性 颜色属性 背景属性 属性 说明 background-image 添加背景图片 background-size 指定背景图像的大小 background ...
- 理解CSS3中的background-size(对响应性图片等比例缩放)
理解CSS3中的background-size(对响应性图片等比例缩放) 阅读目录 background-size的基本属性 给图片设置固定的宽度和高度的 固定宽度400px和高度200px-使用ba ...
- css background 背景知识详解
background 背景属性 我们知道元素有前景色color,与之对应的还有背景色,通过background我们可以为元素添加实色(background-color)和任意多个背景图片(backgr ...
- css 使用background背景实现border边框效果
css中,我们一般使用border给html元素设置边框,但也可以使用background背景来模拟css边框效果,本文章向大家介绍css 使用background背景实现border边框效果,需要的 ...
- UIView设置背景渐变色
UIView设置背景渐变色 // Allocate bitmap context CGContextRef bitmapContext = CGBitmapContextCreate(NULL, , ...
- background——背景属性
一.背景属性 1.1.背景颜色background-color <style> /*浮动,横向排列*/ div{float: left;} /*background-color属性值支持三 ...
- CSS3实战之background篇
在CSS3中,background可以添加多个背景图像组,背景图像之间通过逗号进行分隔. 每个背景图像层都可以包含下面的值 background-image 定义背景图像 background-col ...
- CSS之background——背景与渐变练习题
1.单选题 将背景的绘制区域规定到内容框,应使用background-clip属性中的哪个属性值? A content-box B border-box C padding-box D none-bo ...
- css中background背景属性概
css中background背景属性概 background:url(背景图片路径) no-repeat;/*不重复默认在左上方*/background:url(背景图片路径) no-repeat ...
随机推荐
- P4095 [HEOI2013]Eden 的新背包问题
P4095 [HEOI2013]Eden 的新背包问题 题解 既然假定第 i 个物品不可以选,那么我们就设置两个数组 dpl[][] 正序选前i个物品,dpr[][] 倒序选前i个物品 ,价格不超过 ...
- [go]redis基本使用
redis 数据结构操作 import ( "github.com/garyburd/redigo/redis" ) // set c, err := redis.Dial(&qu ...
- 前端js数据加密解密
一.最简单的加密解密 函数escape()和unescape(); 二.base64加密 (1)introduction base64是网络上最常见的用于传输8bit字节码的编码方式之一,base ...
- pytest+allure展示环境信息
allure展示环境信息 要将信息添加到Environment小部件,只需在生成报告之前在目录中创建environment.properties(或environment.xml)文件allure-r ...
- Linux md5sum 命令
Linux md5sum 命令 通过 Linux 的 md5sum 命令,可以对指定的文件,计算出唯一的一个MD5值(128bit). 通过比较文件前后的MD5值,可以判断文件是否发生变化(是否被修改 ...
- iclass 鎖機鎖程序破解限制方法-適合于有用google login 的App
此法適合于有用google login 的App,只需要去到 app login 界面, 找到 “log in with google” , 然後向下滾動,找到最下面的 “説明” ,點擊進去,就會見到 ...
- 【Adobe Air程序开发】用Adobe Flex3开发AIR应用程序–入门指南
1 安装Adobe AIR 运行时,和java的JVM类似.Adobe AIR 运行时允许在桌面运行AIR应用程序,脱离游览器的束缚.下载安装文件http://labs.adobe.com/downl ...
- 【并行计算-CUDA开发】CUDA ---- Warp解析
Warp 逻辑上,所有thread是并行的,但是,从硬件的角度来说,实际上并不是所有的thread能够在同一时刻执行,接下来我们将解释有关warp的一些本质. Warps and Thread Blo ...
- 调用存储在session属性里的东西
将对象放在session里面 request.getSession().setAttribute("username", username); //放到会话里 永EL表达式调用 $ ...
- css 移动端1px更细
1.最近写项目经常遇到4个入口菜单放在一行,然后加border:1px 在移动端显示却很粗,如下图: <div class="header"> <div clas ...