css 设置背景-详解

css 设置背景的属性主要有以下几个:

  • background-image:设置背景图片,但必须设置元素宽高
  • background-repeat:设置背景图片是否平铺,以及如何平铺
  • background-size:设置背景图片在元素中的大小,
  • background-position:设置背景图片的偏移量
  • background-attachemnt:决定背景图像的位置是在视口内固定,或者随着他的区块滚动
  • background:缩写属性,可将上述的属性在这个属性里 统一设置

background-image

要点:

background-image 用于设置元素的背景图片,它的主要特点是

  • 盖在(不是覆盖)background-color的上面

  • background-image 可以给同一个元素设置多张图片

  • 如果设置了多张图片

    设置的第一张图片将显示在最上面,其他图片按顺序层叠在下面

注意: 如果设置了背景图片后,元素没有具体的宽高,背景图片是不会显示的

这里先准备一张图片:

演示一:只设置背景图片 不设置 背景图片的宽高

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .box {
        background-image: url(./back1.png);
      }
    </style>
  </head>
  <body>
    <div class="box"></div>
  </body>
</html>

然后 你会看到一个白板,不要迷糊,因为你没设置宽高,在开发中要注意这点,避免设置背景不生效的情况.

很白吧,哈哈,看着难受就记住它.

演示二:background-image 只是盖在背景颜色上,并不会覆盖背景颜色.

修改上面的css 样式,来演示这一点

css 复制代码
.box {
    background-color: aquamarine;
    background-image: url(./back1.png);
    width: 100px;
    height: 100px;
    /* 暂时不看 */
    background-repeat: no-repeat;
    background-position: 10px 10px;
    background-size: 50px 50px;
  }

可以看到背景颜色属性 并没有因为加上了background-image 而消失效果.

演示三:设置多张图片,放在前面的图片显示在上面

准备图片,这里back02图片 比 back03 图片的大小要大的多

修改css样式:

css 复制代码
.box {
    background-color: aquamarine;
    background-image: url(./back01.png), url(./back02.png),
      url(./back03.png);
    width: 300px;
    height: 300px;
    /* 暂时不看 */
    background-repeat: no-repeat;
  }

back03 图片跑哪去了?

原因去设置多张图片的特点里找

background-repeat

要点

background-repeat 用于设置图片是否要平铺

常见的设置值有

  • repeat: 平铺(默认)
  • no-repeat:不平铺
  • repeat-x:只在水平方向平铺
  • repeat-y:只在垂直方向平铺 加一张图片辅助理解

演示:只在水平方向平铺演示(其他值自行实验)

这里 指使用back01 图片

修改css

css 复制代码
.box {
    background-color: aquamarine;
    background-image: url(./back01.png);
    width: 300px;
    height: 150px;
    background-repeat: repeat-x;
  }

background-size

要点

background-size 用于设置背景图片的大小,可以设置以下的几个值:

  • auto: 默认值,以背景图片本身大小展示
  • cover:缩放背景图,以完全覆盖铺满元素,可能背景图片部分看不见
  • contain:缩放背景图,宽度和高度铺满元素,但是图片保持宽高比
  • < percentage > :百分比,相对于背景区
  • length: 具体的大小 比如 100px 100px (宽,高)

background-size 设置格式:

  1. auto ,length ,百分比的方式 可以混合使用
  2. 混合使用时,未设置的宽度或高度会使用默认值auto,即使用图片默认的宽或高
  3. 可以只设置一个值,代表宽度宽度,高度用默认值.
  4. auto ,length ,百分比的方式,不可以与 auto,cover,contain 一起使用,这样会造成语法错误,最终会使用 backgtound-size的 默认值,即auto,展示效果和auto 一样

这里选择一张大小为314162的 图片,给一个400 300的div 来设置背景图

演示一:auto,(即不设置background或者设置为auto)

html 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .box {
        background-color: aquamarine;
        width: 400px;
        height: 300px;
        background-size: auto;
        background-image: url(./back04.png);
        background-repeat: no-repeat;
      }
    </style>
  </head>
  <body>
    <div class="box"></div>
  </body>
</html>

可以看到图片完全按照自己的大小来展示.

演示二:cover

css 复制代码
.box {
    background-color: aquamarine;
    width: 400px;
    height: 300px;
    background-size: cover;
    background-image: url(./back04.png);
    background-repeat: no-repeat;
  }

可以看到 cover 的效果其实是放大或缩小图片,以铺满整个元素,除非元素的宽和高与图片完全相同,否则,cover 会在宽度和高度方向上同时拉伸,即使元素宽度与图片宽度相同,也看不到完整的宽度方向的图片全景(自己实验).

演示三:contain

css 复制代码
 background-size: contain;

与cover 不同,contain 也会拉伸,但是 会一直保持宽高比,即使元素大小 小于 图片大小 contain 也会将图片完整显示出来.

演示四: length 与 百分比

css 复制代码
 background-size: 100px 50%;

length,auto,百分比 以及省略方式的混用 不再做演示,需要记得一点是,宽度和高值的省略会默认使用auto 属性,即采用图片本身的大小进行展示.

background-position

background-position 用于设置背景图片在水平,垂直方向上的具体位置 可以设置具体的数值 比如 20px 30px 水平方向上还可以设置:left,center,right 垂直方向上还可以诶设置:top,center,bottom 如果只设置了1个方向,另一个方向默认是center

background-attachment

background-attachment 决定背景图像的位置在视口内固定,或者随着包含他的区块滚动

可以设置以下3个值: srcoll : 此关键属性值表示背景相对于元素本身固定,而不是随着它的内容滚动 local : 此关键属性值表示背景相对于元素的内容固定.如果一个元素拥有滚动属性,背景将会随着元素的内容滚动. fixed:此关键属性值表示背景相对于视口固定.即使一个元素拥有滚动机制,背景也不会随着元素的内容滚动.

background

background 是一系列背景相关属性的简写

常用格式

background-size 可以省略,如果不省略,/background-size 必须紧跟在background-position的后面

其他属性也都可以省略,而且顺序任意

background-image 与img 的 对比

总结:

img,作为网页内容的重要组成部分,比如广告图片,LOGO图片,文章配图,产品图片

background-image

  • 可有可无,有,能让网页更加美观.

  • 无,也不影响用户获取完整的网页内容.

相关推荐
二十雨辰24 分钟前
[uni-app]小兔鲜-04推荐+分类+详情
前端·javascript·uni-app
霸王蟹1 小时前
Vue3 项目中为啥不需要根标签了?
前端·javascript·vue.js·笔记·学习
小白求学11 小时前
CSS计数器
前端·css
Anita_Sun1 小时前
🌈 Git 全攻略 - Git 的初始设置 ✨
前端
lucifer3111 小时前
深入解析 React 组件封装 —— 从业务需求到性能优化
前端·react.js
等什么君!2 小时前
复习HTML(进阶)
前端·html
儒雅的烤地瓜2 小时前
JS | 如何解决ajax无法后退的问题?
前端·javascript·ajax·pushstate·popstate事件·replacestate
觉醒法师2 小时前
Vue3+TS项目 - ref和useTemplateRef获取组件实例
开发语言·前端·javascript
老章学编程i2 小时前
Vue工程化开发
开发语言·前端·javascript·vue.js·前端框架
思考的橙子2 小时前
前端初识之一
前端