1. 雪碧图

解决图片闪烁的问题:
可以将多个小图片统一保存到一个大图片中,然后通过调整background-position来切换不同的图片
这样图片会同时加载到网页中就可以有效的避免出现闪烁的问题,这个技术在网页中应用十分广泛,被称为CSS-Sprite,这种图我们称为雪碧图;
雪碧图的使用步骤:

  1. 先确定要使用的图标
  2. 测量图标的大小
  3. 根据测量结果创建一个元素
  4. 将雪碧图设置为元素的背景图片
  5. 设置一个偏移量以显示正确的图片

雪碧图的特点:

  • 一次性将多个图片加载进页面,降低请求的次数,加快访问速度,提升用户的体验

示例1
这个前提三个图片大小是一样的,这样在一开始的显示中才能设置通用的宽高;
12.雪碧图与渐变 - 图1

  1. a:link {
  2. display: block;
  3. width: 93px;
  4. height: 29px;
  5. background: url("assets/背景/练习2-背景/btn.png");
  6. /* 默认值,可以不设置 */
  7. background-position: 0 0;
  8. }
  9. a:hover {
  10. /* 设置水平方向的一个偏移量;注意是向左移动,所以是负值 */
  11. background-position: -93px 0;
  12. }
  13. a:active {
  14. /* 设置水平方向的一个偏移量;注意是向左移动,所以是负值 */
  15. background-position: calc(-93px*2) 0;
  16. }

12.雪碧图与渐变 - 图2
我们对比以下之前练习中的效果,第一次加载进来的时候会有明显的闪烁
12.雪碧图与渐变 - 图3

示例2
12.雪碧图与渐变 - 图4

  1. .box1 {
  2. width: 109px;
  3. height: 33px;
  4. background: url("assets/背景/练习3-雪碧图/amazon-sprite_.png");
  5. /* 设置水平和垂直方向的一个偏移量;注意移动方向 */
  6. background-position: -10px -10px;
  7. }
  8. .box2 {
  9. width: 42px;
  10. height: 30px;
  11. background: url("assets/背景/练习3-雪碧图/amazon-sprite_.png");
  12. /* 设置水平和垂直方向的一个偏移量;注意移动方向 */
  13. background-position: -58px -338px;
  14. }

12.雪碧图与渐变 - 图5
总结一下:

  • 1.测量出需要使用的图标的大小;
  • 2.并根据需要的图标大小,创建一个元素;
  • 3.引入背景图,并且设置需要的偏移量显示出正确的图片;

2. 线性渐变

通过渐变可以设置一些复杂的背景颜色,可以实现从一个颜色向其他颜色过渡的效果!!渐变图片,需要通过background-image来设置线性渐变,颜色沿着一条直线发生变化

  1. 值为:**linear-gradient()**

    1. # 红色在开头,黄色在结尾,中间是过渡区域
    2. background-image: linear-gradient(red, yellow);

    12.雪碧图与渐变 - 图6

  2. 线性渐变的开头,我们可以指定一个渐变的方向

  • to left
  • to right
  • to bottom
  • to top
  • deg deg表示度数
  • turn 表示圈
    1. background-image: linear-gradient(to left, red, yellow);
    2. background-image: linear-gradient(to right, red, yellow);
    3. background-image: linear-gradient(to top, red, yellow);
    4. background-image: linear-gradient(to bottom, red, yellow);
  1. 渐变的度数和圈数

    1. background-image: linear-gradient(45deg, red, yellow);

    12.雪碧图与渐变 - 图7
    12.雪碧图与渐变 - 图8
    原理类似量角器,有角度的那条边去做渐变,再把四象限的概念和矩形内部的四个角对应起来
    总结:线性渐变的边上的某一点为起点,以一定角度渐变的;渐变方向的颜色是线性变化的,而其垂线方向的颜色是一致的

    1. background-image: linear-gradient(0.4turn, red, yellow);
  2. 渐变可以同时指定多个颜色,多个颜色默认情况下平均分布,也可以手动指定渐变的分布情况**repeating-linear-gradient()** 可以平铺的线性渐变(重复)

    1. background-image: repeating-linear-gradient(red, yellow);

    12.雪碧图与渐变 - 图9
    默认情况下,跟linear-gradient(red, yellow)效果一样,我们稍作改动

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

    12.雪碧图与渐变 - 图10
    由于我们设置的div宽高为200px,所以会有4次重复的渐变效果,所以默认情况下,下列几种写法是一致的,效果相同;

    1. background-image: linear-gradient(red, yellow);
    2. background-image: repeating-linear-gradient(red, yellow);
    3. /* 因为我们设置的div盒子的宽高为200px,所以这里[height]=200px */
    4. background-image: repeating-linear-gradient(red 0, yellow [height]);

3. 径向渐变

radial-gradient() 径向渐变(放射性的效果)

  1. background-image: radial-gradient(red, yellow);

默认情况下,径向渐变的形状根据元素的形状来计算的

  • 正方形 —> 圆形
    12.雪碧图与渐变 - 图11
  • 长方形 —> 椭圆形
    12.雪碧图与渐变 - 图12

默认情况下,circleellipse是自动适配盒子的,我们也可以手动指定径向渐变的形状

  1. 形状
  • circle 圆形
  • ellipse椭圆
    1. background-image: radial-gradient(circle, red, yellow);
    12.雪碧图与渐变 - 图13
  1. 位置
  • top
  • right
  • left
  • center
  • bottom
    1. background-image: radial-gradient(at left, red, yellow);
    12.雪碧图与渐变 - 图14
    当然,除了上述值,还可以指定像素
  1. 大小
  • closest-side 近边
  • farthest-side 远边
  • closest-corner 近角
  • farthest-corner 远角
  1. background-image: radial-gradient(100px 60px, red, yellow);

12.雪碧图与渐变 - 图15
同时对其形状/大小和位置进行指定
**radial-gradient(形状/大小 at 位置, 颜色 位置, 颜色 位置, 颜色 位置)**

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

12.雪碧图与渐变 - 图16
总结一下
形状

  • circle 圆形
  • ellipse椭圆

大小

  • closest-side 近边
  • farthest-side 远边
  • closest-corner 近角
  • farthest-corner 远角

位置

  • top
  • right
  • left
  • center
  • bottom

类似于线性渐变,径向渐变也有对应的repeat属性

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

12.雪碧图与渐变 - 图17
总结:径向渐变的渐变方向以圆心为起点,往四周扩散的;同一半径上的颜色是渐变的,同一圆周上的颜色是一致的

4.电影卡片的练习(实现PSD)