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

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

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

相关推荐
mldong3 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排4 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60615 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角6 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!6 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰6 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi7 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen8 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马9 小时前
AI源码分析:拆解模型底层实现逻辑
前端
IT_陈寒9 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端