7-背景 雪碧图与渐变
CSS背景,雪碧图与渐变
背景参数
background-color设置背景颜色background-image设置背景图片
- 如果背景图片大小小于元素,则背景图片会自动在元素中平铺将元素铺满
- 如果背景图片大小大于元素,则背景图片一部分会无法完全显示
- 如果背景图片大小等于元素,则背景图片会直接正常显示
background-repeat设置背景图片的重复方式
repeat默认值,背景图片沿着 x 轴和 y 轴双方向重复repeat-x背景图片沿着 x 轴方向重复repeat-y背景图片沿着 y 轴方向重复no-repeat背景图片不重复
background-position设置背景图片的位置
- 通过
topleftrightbottomcenter几个表示方位的词来设置背景图片的位置:使用方位词时必须要同时指定两个值,如果只写一个则第二个默认就是center - 通过偏移量来指定背景图片的位置:水平方向偏移量、垂直方向变量
- 通过
background-clip设置背景的范围
border-box默认值,背景会出现在边框的下边padding-box背景不会出现在边框,只出现在内容区和内边距content-box背景只会出现在内容区
background-origin背景图片的偏移量计算的原点
border-box背景图片的变量从边框处开始计算padding-box默认值,background-position从内边距处开始计算content-box背景图片的偏移量从内容区处计算
background-size设置背景图片的大小
- 第一个值表示宽度,第二个值表示高度;如果只写一个,则第二个值默认是
auto cover图片的比例不变,将元素铺满contain图片比例不变,将图片在元素中完整显示
- 第一个值表示宽度,第二个值表示高度;如果只写一个,则第二个值默认是
background-attachment背景图片是否跟随元素移动
scroll默认值,背景图片会跟随元素移动fixed背景会固定在页面中,不会随元素移动
简写:
backgound 背景相关的简写属性,所有背景相关的样式都可以通过该样式来设置并且该样式没有顺序要求,也没有哪个属性是必须写的
注意
background-size必须写在background-position的后边,并且使用/隔开background-position/background-sizebackground-origin background-clip两个样式,orgin要在clip的前边
练习(背景按钮)
1 | <style> |
效果:

在刚进入网页的时候,只加载了link一张图,当达到触发条件的时候才会加载剩下两张,所以第一次点击的时候会出现突然发白的现象。
雪碧图
解决图片闪烁的问题:
可以将多个小图片统一保存到一个大图片中,然后通过调整background-position来显示响应的图片
这样图片会同时加载到网页中就可以有效的避免出现闪烁的问题
这个技术在网页中应用十分广泛,被称为CSS-Sprite,这种图我们称为雪碧图
雪碧图的使用步骤:
- 先确定要使用的图标
- 测量图标的大小
- 根据测量结果创建一个元素
- 将雪碧图设置为元素的背景图片
- 设置一个偏移量以显示正确的图片
雪碧图的特点:
- 一次性将多个图片加载进页面,降低请求的次数,加快访问速度,提升用户的体验

1 | <style> |
线性渐变
通过渐变可以设置一些复杂的背景颜色,可以实现从一个颜色向其他颜色过渡的效果
渐变是图片,需要通过background-image来设置
线性渐变,颜色沿着一条直线发生变化 linear-gradient()
1 | # 红色在开头,黄色在结尾,中间是过渡区域 |

线性渐变的开头,我们可以指定一个渐变的方向
to leftto rightto bottomto topdegdeg 表示度数turn表示圈
1 | background-image: linear-gradient(45deg, red, yellow); |

repeating-linear-gradient() 可以平铺的线性渐变(默认状况下和上图一样)
1 | background-image: repeating-linear-gradient(red, yellow); |

1 | background-image: repeating-linear-gradient(red 0px, yellow 50px); |

径向渐变
radial-gradient() 径向渐变(放射性的效果)
1 | background-image: radial-gradient(red, yellow); |

默认情况下,circle和ellipse是自动适配盒子的,我们也可以手动指定径向渐变的形状
形状
circle圆形ellipse椭圆
1 | background-image: radial-gradient(circle, red, yellow); |

也可以指定渐变的位置
位置
toprightleftcenterbottom
1 | background-image: radial-gradient(at top, red, yellow); |

当然,除了上述值,还可以指定像素
1 | background-image: radial-gradient( at 50px 100px, red 50px, yellow 100px); |
大小
- closest-side 近边
- farthest-side 远边
- closest-corner 近角
- farthest-corner 远角
1 | background-image: radial-gradient(100px 60px, red, yellow); |

同时对其形状/大小和位置进行指定
radial-gradient(形状/大小 at 位置, 颜色 位置, 颜色 位置, 颜色 位置)
1 | background-image: radial-gradient(circle at 50px 100px, red 50px, yellow 100px); |

1 | background-image: repeating-radial-gradient(circle at 50px 100px, red 50px, yellow 100px); |

总结:径向渐变的渐变方向以圆心为起点,往四周扩散的;同一半径上的颜色是渐变的,同一圆周上的颜色是一致的
练习(电影卡片)
1 | <style> |
效果:

