Code前端首页关于Code前端联系我们

CSS背景进阶:渐变、多种背景、定位、重复、相对位置...

terry 2年前 (2023-09-27) 阅读数 64 #数据结构与算法

Background写过CSS的朋友一定知道这个属性的作用。顾名思义,它是背景。在MDN中的定义如下:

Background是一个CSS简写属性,一次性定义了所有背景属性,包括颜色、图像、大小、重复模式等。

首先说一下当天Background的日常语法:

  • Background 您可以使用缩写或单独设置其中之一: ❀缩写❀推荐:background:背景颜色、背景图像、背景重复、背景附件、背景位置;
  • 键入顺序不是强制性的
  • 单独设置样式
  • 描述 默认值 ground背景CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    指定要使用的背景颜色

    透明CSS2 . 1
    backgroundposition指定背景图像的位置 0%, 0%CSS 指定要使用的一张或多张背景图像 CSS2.1
    background-repeat指定背景图像如何重复❀❀❀附件设置背景图像是固定还是随时间滚动页面的其余部分。scrollCSS2.1
    background-size设置背景图片的大小autoautoi 设置背景的定位区域

    这里有一些给你,展示一下background的常见属性用法:

    <style>
        .div1 {
            width: 100px;
            height: 100px;
            background-color: black;
            background-image: url('img1');
            background-size: 50%;
            background-repeat: no-repeat;
        }
    </style>
    <body>
        <div class="div1"></div>
    </body>
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="image" data-src="https://user-gold-cdn.xitu. io/2020/ 1/12/16f98e961c58a3ab ?imageView2/ 0/w/1280/h/960/format/webp/ignore-error/1" height="20" data-width="302" data-height="300 " />
    • background-color 背景颜色
      • 属性值可设置为:

    (1) word: backgroundcolor:

      <style>
          .div1 {
              width: 100px;
              height: 100px;
      
              background-image: url('img1');
              background-size: 50%;
              background-repeat: no-repeat;
              background-position: right;
          }
      </style>
      <body>
          <div class="div1"></div>
      </body>
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    背景颜色:#000;

    (3) RGB 颜色模式: backgroundcolor: rgb( 0, 0, 0);

    • backgroundimagebackgroundimage❙❀ : url('')
    • 您还可以同时设置多个图像. 详情请参见高级章节-多背景图片
  • backgroundsize 背景图片大小
    • 常用属性值为:
  • (1) 百分比:background -size: 100%; (2)像素值:背景大小:100px;

    • 当只有一个值时,默认为宽度,高度自适应比例。
    • background-repeat重复背景图片
      • 常见属性值有:

    (1)repeat(重复): (2) 重复-x(水平重复):背景重复 : 重复 x;

    (3) 重复 y (垂直重复): 背景重复: 重复-y;) 无重复 (不重复): 背景重复:不重复;

    背景高级

    更多背景图片背景图片

    在CSS元素中只能添加一张图片。2.1.然而,在 CSS3 中我们可以向元素添加多个背景图像。它的兼容性如下图所示: CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    • 可以设置多张背景图,每张都有单独的样式,对应的样式之间用逗号分隔
      <style>
          .div1 {
              width: 100px;
              height: 100px;
      
              background-color: black;
              background-image: url('img1'), url('img2');
              background-size: 50%, 100%;
              background-repeat: repeat-x, no-repeat;
          }
      </style>
      <body>
          <div class="div1"></div>
      </body>
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…
    • 如果属性值的个数不等于怎么办图片数量?
      <style>
          .div1 {
              width: 100px;
              height: 100px;
    
              background-color: black;
              background-image: url('img1'), url('img2'), url('img3');
              background-size: 50%, 30%;
              background-repeat: repeat-y, no-repeat;
          }
      </style>
      <body>
          <div class="div1"></div>
      </body>
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    多背景图片汇总:

    • 背景图片的有效样式为该图片在属性值中的位置对应的值;
    • 如果属性值小于背景图片的数量,则没有对应的值。图像风格基于第一个值;
    • 背景图像的层次从左到右逐渐降低。当然,最低级别是backgroundcolor

    backgroundgradient backgroundimage:线性渐变

    背景渐变基于backgroundimage设置。有关具体语法详细信息,请参阅 MDN。其兼容性如下图所示: CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    • 背景图:线性渐变 路径渐变(方向可手动设置,默认从下到上)
    • 线性渐变( )的使用如下如下:(参见MDN)详细信息:用角度值指定渐变的方向

      [左 | 左]右] || [顶部|底部]

      : [ | ]?

      • 示例:背景:线性渐变(left, #333, #333 50%, #eee 75%, #333 75%);
        <style>
            .div1 {
                background-image: linear-gradient(#71c9ce, #e3fdfd);;
            }
        </style>
        <body>
            <div class="div1"></div>
        </body>
      复制代码
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…
      • 背景图像:径向渐变径向渐变
      • radial-gradient用法如下:(详情请参见MDN)

      radial-gradient( [ [ellipse | Circle] || [ | ] [ at ] ? ] ? [, ]+ )

      = 最近的角 |最近的页面 |最远的角落|最远边

      : [ | ]?

      • 示例:背景-image: 径向渐变(椭圆最远角在 45px 45px, #00FFFF 0%, rgba(0, 0, 255, 0) 50%, #0000FF 95%);
        <style>
            .div1 {
                background-image: radial-gradient( #71c9ce, #e3fdfd);;
            }
        </style>
        <body>
            <div class="div1"></div>
        </body>
      复制代码
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…
      • 背景图像: 重复线性渐变重复路径渐变
        <style>
            .div1 {
                background-image: repeating-linear-gradient(45deg, #71c9ce 20px, #a6e3e9 30px, #e3fdfd 40px);
            }
        </style>
        <body>
            <div class="div1"></div>
        </body>
      复制代码
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="image" data-src="https://user-gold-cdn.xitu.io/2020/1/12/16f98e966aba86d8?imageView12/0/ww /h/ 960/ format/webp/ignore-error/1" height="20" data-width="285" data-height="275" />
      • 背景图片:repeating-radial-gradient 重复径向渐变
        <style>
            .div1 {
                width: 100px;
                height: 100px;
        
                background-color: black;
                background-image: repeating-radial-gradient(circle, #90ade4 ,#3350ba 20%);
            }
        </style>
        <body>
            <div class="div1"></div>
        </body>
      复制代码
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…

      背景 定位背景位置

      在讲下面的内容之前,我们先来了解一下一个元素涉及到的三个字段,请看图↓CSS Background进阶:渐变、多背景、定位、重复、相对位置…

      上图中的三个方框分别是内容- box(内容框)、padding-box(填充框)和

      <style>
          .div1 {
              background-image: radial-gradient( #71c9ce, #e3fdfd);;
          }
      </style>
      <body>
          <div class="div1"></div>
      </body>
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…
    • border❀❝ 框) border-box 是占据的面积border。集合元素的,位于padding和ttt
    • padding box的外层是设置元素 padding 占用的面积为位于内层 border 和外层 t content-box
    元素的 padding 所占用的区域内容 包围背景位置。默认位置是盒子的左上角padding-boxCSS Background进阶:渐变、多背景、定位、重复、相对位置…

    • 属性值可设置为

    (1) 百分比 (%)

    (2) 像素 (px)

    (3) 位置 (左下 | 中心

    ) 仅设置一个值时,第二个值默认为 center 或 50%。
  • padding-box 盒子左上角的坐标为 (0, 0) / (left, top),右下角的坐标为 (100, 100) / (right, Bottom)。
  • demo
  •   <style>
          .div1 {
              width: 100px;
              height: 100px;
      
              background-image: url('img1');
              background-size: 50%;
              background-repeat: no-repeat;
              background-position: right;
          }
      </style>
      <body>
          <div class="div1"></div>
      </body>
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    Background-repeat

    background-repeat 除了常规的repeat、repeat-x、repeat-y和no-repeat之外,CSS3中还添加了两个新值: 空间和圆形。它的兼容性如下图所示: CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    • 当背景图片小于容器时
      • background-repeat:space在不缩放的情况下尽可能重复图片,并将空间中心等分图像
        CSS Background进阶:渐变、多背景、定位、重复、相对位置…
      • background -repeat:round 拉伸图像以填充容器,同时尽可能重复图像
        CSS Background进阶:渐变、多背景、定位、重复、相对位置…
    • 当背景图像大于容器时
      • background-repeat 不存在时缩放 前提下,裁剪图片,只保留容器内的部分
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="image" data-src="https://user-gold-cdn.xitu.io/2020/ 1/12/ 16f98e969e234b0e?imageView2/ 0/w/ 1280/h/960/format/webp/ignore-error/1" height="20" data-width="596" data-height="564" />
      • 背景-重复:圆形 缩小图像以填充容器且长宽与容器大小匹配(未缩放,图像很可能变形)
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    背景相对位置background-origin

    background-origin 属性规则 背景位置 属性所在的相对位置。属性值共有三个:content-boxpadding-box
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…


  • CSS Background进阶:渐变、多背景、定位、重复、相对位置…
  • 、❀和默认值填充盒 。其兼容性如下: CSS Background进阶:渐变、多背景、定位、重复、相对位置…
    • background-origin: content-box(下图显示内边距设置:20px)
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="image" data-src="https://user - gold-cdn .xitu.io/2020/1/12/16f98e96ca80d1bc?imageView2/0/w/1280/h/960/format/webp/ignore-error/1" height="20" data-width="700" data-height ="682" />
    • background-origin: padding-box
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…
    • background-origin: border-box
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    背景绘图区域 backgroundclip

    backgroundclipbackgroundclip指定背景,默认值为border-box,其属性值与background-origin相同,但性能却有很大不同。如下:CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    • background-clip:内容框
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="image" data-src="https://user-gold-cdn.xitu.io/2020/1/12/16f98e96f1e720bf? imageView2/0/w/1280/h/960 /format/ webp/ignore-error/1" height="20" data-width="654" data-height="672" />
    • 背景剪辑:填充框
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…
    • 背景剪辑:边框-box`
      CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    Background-size

    我认为这个特征很常见。事实上,它也是CSS3中最近添加的一个属性。在CSS2.1中,无法设置背景图片的大小。backgroundsize 除了常规设置大小和百分比外,还有两个特殊属性:contain❙ 和 s ize:contain当图像长和宽不同时,图像缩小直至完全适合内容区域。这主要在背景图像大于元素时使用。
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="图像" data-src="https://user-gold-cdn.xitu.io/2020/1/12/16f98e96f66b3c62?imageView2/0/w/1280/h/960/format/ webp/ignore-error/1" height="20" data-width="596" data-height="588" />

  • background-size: cover 当图像长宽不同时,按图片按比例放大,直到短边完全贴合内容区域,使背景图完全覆盖背景区域 多用于背景图小于元素的情况
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…
  • 背景固定背景附件

    有时在某些情况下网站在滚动页面时看到背景图像是固定的。这是使用 背景附件:固定完成的。(默认)CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    扩展属性背景:元素

    一个特殊的扩展属性,作为一个惊喜另一个surprise元素,意思是Nosurprise!不过,这个属性只能被FireFox 4+浏览器使用,并且需要浏览器前缀。

    • background: element(#id)
      • demo1 当背景为非图像元素时,背景样式与原元素相同
      <style>
      	.div {
            width: 200px;
            height: 200px;
            background: element(#button)  no-repeat;
            background: -moz-element(#button)  no-repeat;
        }
        #button {
            width: 150px;
            height: 20px;
            margin: 50px;
            color: #0470f4;
        }
      </style>
      
      <body>
        <div class="div1">
            <button id='button'>这是按钮</button>
        </div>
      </body>
    
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…" alt="image" data-src="https: //www.菜鸟学园. com/wp-content/uploads/2020/02/10eb1a973f706fee30e6a74d946867d9.gif" height="20" data-width="322" data-height="260" />
    • 是作为背景查看的图像 demo2 ,背景图片不随原图大小和风格变化,但依然支持平铺等背景样式
      <style>
      	.div {
            width: 200px;
            height: 200px;
            border: 10px dashed #0ff;
            background: element(#img1);
            background: -moz-element(#img1);
        }
        #img1 {
            width: 50px;
        }  
      </style>
      
      <body>
        <div class="div1">
            <img id='img1' src='img1' />
        </div>
      </body>
    
    复制代码
    CSS Background进阶:渐变、多背景、定位、重复、相对位置…

    作者:正彩云前端团队
    链接:https://juejin.im/post/5e1adb826fb9a02fc160a2c1
    来源:掘金
    版权归作者所有。商业转载请联系作者授权。非商业转载请注明出处。

    版权声明

    本文仅代表作者观点,不代表Code前端网立场。
    本文系作者Code前端网发表,如需转载,请注明页面地址。

    热门