Web前端之背景雪碧图

Posted 爱上口袋的天空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web前端之背景雪碧图相关的知识,希望对你有一定的参考价值。

目录

一、背景

二、雪碧图


一、背景

  • background-color 设置背景颜色
  • background-image 设置背景图片
    • 如果背景图片大小小于元素,则背景图片会自动在元素中平铺将元素铺满
    • 如果背景图片大小大于元素,则背景图片一部分会无法完全显示
    • 如果背景图片大小等于元素,则背景图片会直接正常显示
  • background-repeat 设置背景图片的重复方式
    • repeat 默认值,背景图片沿着x轴和y轴双方向重复
    • repeat-x 背景图片沿着x轴方向重复
    • repeat-y 背景图片沿着y轴方向重复
    • no-repeat 背景图片不重复
  • background-position 设置背景图片的位置
    • 通过top left right bottom center几个表示方位的词来设置背景图片的位置:使用方位词时必须要同时指定两个值,如果只写一个则第二个默认就是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 背景会固定在页面中,不会随元素移动

可以同时设置背景图片和背景颜色,这样背景颜色将会成为图片的背景色

示例1

.box1 
    height: 500px;
    width: 500px;
    overflow: auto;
    border: 20px red double;
    padding: 10px;
    /* 背景色 */
    background-color: darksalmon;
    /* 背景图 */
    background-image: url('/assets/背景.png');
    /* 背景图重复方式 */
    background-repeat: no-repeat;
    /* 背景图偏移位置 */
    background-position: 0 0;
    /* 背景图偏移量计算的原点 */
    background-origin: content-box;
    /* 背景范围 */
    background-clip: content-box;
    /* 背景图片大小 */
    background-size: contain;


.box2 
    width: 100px;
    height: 1000px;
    background-color: orange;
    background-image: url("assets/背景2.jpg");
    background-repeat: no-repeat;
    background-position: 50px 50px;
    /* 背景图片是否跟随移动 */
    background-attachment: fixed;

backgound 背景相关的简写属性,所有背景相关的样式都可以通过该样式来设置并且该样式没有顺序要求,也没有哪个属性是必须写的

注意

  • background-size必须写在background-position的后边,并且使用/隔开background-position/background-size
  • background-origin background-clip 两个样式,orgin要在clip的前边

示例2

.box1 
    height: 500px;
    width: 500px;
    border: 10px red double;
    padding: 10px;
    background: #bfa url("assets/dlam.png") no-repeat 100px 100px/200px padding-box content-box;

 

 


二、雪碧图

解决图片闪烁的问题:

可以将多个小图片统一保存到一个大图片中,然后通过调整background-position来显示响应的图片

这样图片会同时加载到网页中就可以有效的避免出现闪烁的问题

这个技术在网页中应用十分广泛,被称为CSS-Sprite,这种图我们称为雪碧图

雪碧图的使用步骤:

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

雪碧图的特点:

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

示例1

a:link 
    display: block;
    width: 93px;
    height: 29px;
    background: url("assets/背景/练习2-背景/btn.png");
    /* 默认值,可以不设置 */
    background-position: 0 0;


a:hover 
    /* 设置水平方向的一个偏移量;注意是向左移动,所以是负值 */
    background-position: -93px 0;


a:active 
    /* 设置水平方向的一个偏移量;注意是向左移动,所以是负值 */
    background-position: calc(-93px*2) 0;

 

我们对比以下之前练习中的效果,第一次加载进来的时候会有明显的闪烁

 

示例2

 

.box1 
    width: 109px;
    height: 33px;
    background: url("assets/背景/练习3-雪碧图/amazon-sprite_.png");
    /* 设置水平和垂直方向的一个偏移量;注意移动方向 */
    background-position: -10px -10px;


.box2 
    width: 42px;
    height: 30px;
    background: url("assets/背景/练习3-雪碧图/amazon-sprite_.png");
    /* 设置水平和垂直方向的一个偏移量;注意移动方向 */
    background-position: -58px -338px;

 

以上是关于Web前端之背景雪碧图的主要内容,如果未能解决你的问题,请参考以下文章

移动端适配之雪碧图(sprite)背景图片定位

web前端啥是雪碧图

Web前端HTML5&CSS314-雪碧图与渐变

嘿!设计师 前端们说的“雪碧图”是啥?

前端工程师技能之photoshop巧用系列第五篇——雪碧图

background-position为什么会出现负值?