Css之background-clip

------------恢复内容开始------------

解释:margin区域就是图中最外层,border则是图中第二层区域,以此类推(图画的抽象,凭空想象一下)。

  先来认识一下background-clip属性,background是背景,clip是修剪,整体意思就是修剪背景。

  说到背景,我们就先来认识一下Css中的背景。

  连着上面的图看,代码background-color:green将会直接把上图中border边框以内的区域全部变为绿色。但如果我们想要让padding以内的区域变成绿色或者是让content以内的区域变成绿色,那么此时clip属性就可以派上用场了。

  clip有三个属性值:background-clip:border-box(默认)、padding-box、content-box;

使用这三个值就可以截取border、padding、content以内的区域,对其进行我们所需要的操作。

  下面来看例子:

 1 .box {
 2     border: 20px dashed black;
 3     background-color: green;
 4    padding:20px;
 5     background-clip: border-box/padding-box/content-box;       /*****注意看这里****/
 6 }
 7 <body>
 8     <div  class="box">
 9     </div>
10 </body>

 

显示如下:

  如图中显示,clip会根据border、padding、content所在的区域,进行裁剪。

 

  此外,再补充一个background-image属性:image是图片,下面我们来看看它在Css中是如何显示的:

 1 <style>
 2      .box {
 3         width: 468px;
 4         height: 262px;
 5         padding: 20px;
 6         border: 20px dashed black;
 7         background: green url("xigua.jpg") no-repeat;
 8         margin: 100px auto;
 9      border-clip:border-box/padding-box/content-box;      /***注意看这里**/
10      }    
11  </style>
12  <body>
13      <div  class="box">
14      </div>
15  </body>

 

 

结果如下:

  好像是有点奇怪,我明明设置了padding:20px,而图中的背景图片去忽略了上面和左边的20px;

而且此时右边和下边的20px距离好像有点大,嗯,我直接说了吧,右边和下面是40px。

现在是有点越来越迷糊了,别急,好好看看下面的三张图,结合我们之前说的background-clip属性。

  通过比较第二张图和第三张图可以看出,第三张图有点缩减,可以看出第三张图是被从上面减去了20px,同时左边也被减去了20px。

因为是background-clip:content-box,所以在content-box区域以外的背景内容会被切除,颜色也就变成了本身浏览器的白颜色。然后我们再仔细观察第二张图,第二张图则是从忽略了上边和左边的padding,忽略之后图片就直接往上面和左边移动了,所以右边和下面也就会多出了20px。

  所以我们的结论就是:background-image中的图片会忽略padding的上边和左边的内边距距离,直接进行移动。

 

------------恢复内容结束------------

posted @ 2020-04-01 15:35  秀成  阅读(1373)  评论(0编辑  收藏  举报