【学习笔记-CSS】background 各属性

CSS-background各属性

共用的css 写在最上面

    body {      margin: 0;      box-sizing: border-box;      font-size: 16px;    }    h1,    h2 {      text-align: center;    }    p {      padding: 0;      margin: 0;      color: yellowgreen;      background-color: rgba(0, 0, 0, .3);      display: inline-block;      padding: .3rem;      font-size: 1.2rem;      text-shadow: 0 0 3px rgb(0, 0, 0);      font-weight: 700;    }

先製作一个盒子300x300

製作一个盒子300x300
css

    .box {      width: 300px;      height: 300px;      border: 5px solid #fff;      margin: 50px auto;      box-shadow: 0 0 20px rgba(0, 0, 0, 0.5);      backdrop-filter: blur(10px);    }

html

    <div class="box">      <p>box</p>    </div>

300x300盒子放入300x300的图片

然后增加一个background-img(300x300图片) class
css

    .bg-img-300 {      background-image: url("https://picsum.photos/300/300/?random=1");    }

再将class挂载到html box上

    <div class="box bg-img-300">      <p>background-img-300x300</p>    </div>

此时会出现一个符合盒子的图片


300x300盒子放入100x100的图片

再来我们将图片缩小成100x100放入300x300盒子内
css

    .bg-img-100 {      background-image: url("https://picsum.photos/100/100/?random=1");    }

html

    <div class="box bg-img-100">      <p>background-img-100x100</p>    </div>

此时图片会排满整个盒子3x3


background-repeat

300x300盒子放入100x100的图片(盒子 > 图片)

此时加上background-repeat:no-repeat
css

    .bg-img-100 {      background-image: url("https://picsum.photos/100/100/?random=1");    }    .bg-no-repeat {      background-repeat: no-repeat;    }

html

  <div class="box bg-img-100 bg-no-repeat">    <p>background-img-100x100</p>    <p>no-repeat</p>  </div>

盒子左上角就只会出现一张图片
background-repeat的属性还有repeat-x, repeat-y
repeat-x 横向重複排列
repeat-y 直向重複排列
css

    .bg-repeat-x {      background-repeat: repeat-x;    }    .bg-repeat-y {      background-repeat: repeat-y;    }

300x300盒子放入500x500的图片(盒子 < 图片)

如果盒子放入比自己还要大的图片
css

    .bg-img-500 {      background-image: url("https://picsum.photos/500/500/?random=1");    }

html

    <div class="box bg-img-500">      <p>background-img-500x500</p>    </div>

右下角多出来的地方会被裁切掉且图片会从左上角开始排列
如果想要显示图片中央的话需要添加background-position属性
立马来加看看
css

    .bg-img-500 {      background-image: url("https://picsum.photos/500/500/?random=1");    }     .bg-position {      background-position: center;    }

html

    <div class="box bg-img-500 bg-position">      <p>background-img-500x500</p>      <p>background-position-center</p>    </div>

会发现图片变成中间了,周围的部分被裁切掉
如果盒子比例跟图片一样且图片不想被裁切掉可加入background-size:cover
css

    .bg-img-500 {      background-image: url("https://picsum.photos/500/500/?random=1");    }     .bg-position {      background-position: center;    }     .bg-size-cover {      background-size: cover;    }

html

    <div class="box bg-img-500 bg-position bg-size-cover">      <p>background-img-500x500</p>      <p>background-position-center</p>      <p>background-size-cover</p>    </div>

这样就会等比例缩小把500x500的图片塞进300x300的盒子内


background-position

300x300盒子放入200x200的图片(盒子 > 图片)

backguround-position 为图片在盒子内定位
css

    .bg-img-200 {      background-image: url("https://picsum.photos/200/200/?random=1");    }     .bg-position {      background-position: center;    }

html

    <div class="box bg-img-200 bg-position">      <p>background-img-200x200</p>      <p>background-position-center</p>    </div>

这样图片就会在盒子的正中间
其background-position 属性还有left, right, top, bottom 可以更改图片位置
如background-position:top; 图片就会在盒子上方中央位置
若打background-position:left top; 图片就会在盒子左上方中央位置
另外可以试看看"盒子 < 图片"会发生什么事情


background-size

300x300盒子放入200x100的图片(盒子 > 图片)

先放一个200x100的图片在盒子里
css

    .bg-img-200-100 {      background-image: url("https://picsum.photos/200/100/?random=1");    }

html

    <div class="box bg-img-200-100">      <p>background-img-200x100</p>    </div>

会发现图片在左上角,其他没覆盖到的部分为空白的
此时加入background-size
css

    .bg-img-200-100 {      background-image: url("https://picsum.photos/200/100/?random=1");    }    .bg-size-contain {      background-size: contain;    }    

html

    <div class="box bg-img-200-100 bg-size-contain">      <p>background-img-200x100</p>      <p>background-size-contain</p>    </div>

此时图片会被放大直到宽度碰到盒子的边缘后停止
试看看另外一个属性background-size: cover
css

    .bg-img-200-100 {      background-image: url("https://picsum.photos/200/100/?random=1");    }    .bg-size-cover {      background-size: cover;    }    

html

    <div class="box bg-img-200-100 bg-size-cover">      <p>background-img-200x100</p>      <p>background-size-cover</p>    </div>

此时图片被放得更大,直到填满整个盒子为止,放大时图片起始位置在左上角
如果想把图片显示在正中间要加入background-position:center
css

    .bg-img-200-100 {      background-image: url("https://picsum.photos/200/100/?random=1");    }    .bg-size-cover {      background-size: cover;    }    .bg-position {      background-position: center;    }

html

    <div class="box bg-img-200-100 bg-size-cover">      <p>background-img-200x100</p>      <p>background-size-cover</p>      <p>background-position-center</p>    </div>

感觉顺眼多了


缩写

缩写的值可以随意摆放,但在有个小规则background-position后面要用斜线(/)并紧接着background-size 如下
background-position / background-size
css

    .bg-abbr {      background: url("https://picsum.photos/500/500/?random=1") no-repeat center center/cover;    }

html

    <div class="box bg-abbr">      <p>background-img-abbr</p>    </div>

正常写法
css

    .bg-normal {      background: url("https://picsum.photos/500/500/?random=1");      background-repeat: no-repeat;      background-size: cover;      background-position: center;    }

html

    <div class="box bg-normal">      <p>background-img-normal</p>    </div>

还是缩写的简单


多重背景

最后一个了(终于)
一般多重背景写法
css

    .bg-tree {      background-image:        url("https://picsum.photos/300/100/?random=1"),        url("https://picsum.photos/300/100/?random=2"),        url("https://picsum.photos/300/100/?random=3");      background-repeat: no-repeat, no-repeat, no-repeat;      background-position: left top, left 100px, left bottom;    }

html

    <div class="box bg-tree">      <p>background-img-tree</p>    </div>

这边要注意若第一个图片大于下面的图片则会被覆盖掉

多重背景的缩写
css

    .bg-tree-abbr {      background-image:        url("https://picsum.photos/300/100/?random=1"),        url("https://picsum.photos/300/100/?random=2"),        url("https://picsum.photos/300/100/?random=3");      background-repeat: no-repeat, no-repeat, no-repeat;      background-position: left top, left 100px, left bottom;    }

html

    <div class="box bg-tree-abbr">      <p>background-img-tree-abbr</p>    </div>

终于ending了
http://img2.58codes.com/2024/emoticon34.gif
附上範例CODEPEN

后续若有想到再补上(CODEPEN 根本文有一丢丢不同,请见谅)


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章