解決CSS 中box-sizing與background-clip解決背景顯示范圍的問(wèn)題
過(guò)去在學(xué)習(xí)CSS的時(shí)候,首要任務(wù)就是要理解“box model”,因?yàn)閎ox model是CSS里頭很重要的模型概念,描述了padding、margin、border與content的空間定位,今天的項(xiàng)目竟然卡在一個(gè)簡(jiǎn)單的小問(wèn)題,因此就用一篇文章做個(gè)紀(jì)錄提醒自己不要忘記,也避免之后遭遇到又會(huì)卡住了。(下圖就是CSS的box model)

今天遇到的問(wèn)題是出在我用了一個(gè)半透明的border,但卻無(wú)法順利地透過(guò)并顯示背景的圖案或顏色,后來(lái)發(fā)現(xiàn)原來(lái)box預(yù)設(shè)的border,其實(shí)是在這個(gè)box之內(nèi)的,雖然border在box的內(nèi)部,但其實(shí)與剛剛的box model并沒(méi)有相違背,因?yàn)閎order包住的空間,仍然是padding與content,只是如果把border變成半透明,就會(huì)把原本box的底色給呈現(xiàn)出來(lái)。(如下圖)

為了讓border可以順利的在外面顯示背景的圖案或顏色,就需要用到box-sizing與background-clip這兩個(gè)CSS3的屬性來(lái)設(shè)定,就讓我們來(lái)分別看看這兩個(gè)屬性該如何使用:
box-sizing
box-sizing有兩個(gè)值可以設(shè)定,分別是:content-box(預(yù)設(shè)值)與border-box,如果在content-box的情形下,我們?cè)O(shè)定了box的padding或border,box就會(huì)被撐開(kāi),因?yàn)閜adding和border是長(zhǎng)在box內(nèi)的,不過(guò)如果我們將box-sizing設(shè)定為border-box,那么就會(huì)一直維持原始的大小,但相對(duì)的也就會(huì)壓縮內(nèi)部的空間,我自己在設(shè)計(jì)網(wǎng)頁(yè)的習(xí)慣,都會(huì)預(yù)先把所有的div設(shè)為border-box,如此一來(lái)才能更方便去計(jì)算大小,也能避免內(nèi)容的東西加了padding就把外框變大了,然后再根據(jù)當(dāng)下的情況,去決定是否要改為content-box。
下面的示例是用三個(gè)示例來(lái)對(duì)照參考,半透明的藍(lán)色方塊是原始的大小,第一張圖設(shè)定了padding:20px;,第二張圖除了padding:20px之外,還有設(shè)定了border:10px dotted rgba(255,0,0,.5);,第三張圖則是與第二張圖同樣的設(shè)定,但box-sizing設(shè)為border-box,經(jīng)由對(duì)照,就可以很明顯的發(fā)現(xiàn)彼此的差異。
HTML:
<div><div></div></div> <div class="box default"><div></div></div> <div class="box border-box"><div></div></div>
CSS:
div{
width:120px;
height:120px;
margin:20px 0 0 10px;
padding:20px;
display:inline-block;
background:url(地址);
}
div>div{
background:rgba(0,200,255,.4);
margin:0;
padding:0;
}
.box{
border:10px dotted rgba(255,0,0,.5);
}
.default{
/*box-sizing:content-box;*/ /*預(yù)設(shè)值*/
}
.border-box{
box-sizing:border-box;
}

background-clip
嚴(yán)格說(shuō)起來(lái)background-clip與box-sizing應(yīng)該是八竿子打不著邊,但因?yàn)樵谠O(shè)計(jì)一個(gè)box的時(shí)候,往往都會(huì)border、padding和margin混合使用,也因?yàn)檫@個(gè)CSS3的屬性,讓我剎那間不知道是哪里寫錯(cuò)了,結(jié)果原來(lái)是自己忘了屬性該怎么使用。
background-clip共有三個(gè)設(shè)定值,分別是:border-box(預(yù)設(shè)值)、padding-box、content-box,很有趣的是,剛剛的box-sizing預(yù)設(shè)值為content-box,這里的預(yù)設(shè)值卻變成了border-box,下面的三張圖,分別代表了這三個(gè)設(shè)定值的長(zhǎng)相,我們可以看到,第一張圖在預(yù)設(shè)值的情形下,邊框之下就是原本box的底色(邊框是半透明的虛線),第二張圖設(shè)為padding-box,border下方就不會(huì)有box底色,最后一個(gè)設(shè)定為content-box,就只會(huì)出現(xiàn)content區(qū)域的背景,border與padding下的背景都會(huì)消失,這也是background(背景)clip(剪裁)的意義所在。
HTML:
<div class="box bg-border-box"><div></div></div> <div class="box bg-padding-box"><div></div></div> <div class="box bg-content-box"><div></div></div>
CSS:
div{
width:120px;
height:120px;
margin:20px 0 0 10px;
display:inline-block;
background:url(地址);
padding:20px;
}
div>div{
margin:0;
padding:0;
background:rgba(0,200,255,.4);
}
.bg-border-box{
/* background-clip:border-box; */ /*預(yù)設(shè)值*/
}
.bg-padding-box{
background-clip:padding-box;
}
.bg-content-box{
background-clip:content-box;
}

小結(jié)
以上就是看似無(wú)關(guān)卻又有關(guān)的background-clip與box-sizing,相信理解了之后,遇到box的尺寸大小調(diào)整,就能夠更得心應(yīng)手了!
以上所述是小編給大家介紹的CSS box-sizing與background-clip解決背景顯示范圍的問(wèn)題,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
這篇文章主要介紹了css中background-clip屬性的作用,background-clip屬性的通俗作用就是指定元素背景所在的區(qū)域,對(duì)css中background-clip屬性的相關(guān)知識(shí)感興趣的朋友一起看2018-03-29
CSS3基于背景裁剪(background-clip)實(shí)現(xiàn)的文本標(biāo)題透視特效源碼
這是一款CSS3基于背景裁剪(background-clip)實(shí)現(xiàn)的文本標(biāo)題透視特效源碼。畫面上的外星球與飛船背景中央呈現(xiàn)出帶有背景剪切透視的文本視覺(jué)效果。同時(shí)可響應(yīng)鼠標(biāo)的移動(dòng)呈2017-11-17CSS3中background-clip和background-origin的區(qū)別示例介紹
本文為大家介紹下CSS3中background-clip和background-origin的區(qū)別,感興趣的朋友可以參考下2014-03-10深入淺出CSS3 background-clip,background-origin和border-image教程
最近在準(zhǔn)備一個(gè)下學(xué)期參加比賽的概念網(wǎng)站,希望能用到CSS3的新特性,比如background的background-clip或background-origin或border-image。但僅僅是依靠w3schools上的文檔2011-01-27CSS3教程:background-clip和background-origin-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)
原文:http://www.planabc.net/2008/04/14/background-clip_background-origin/ background-clip 和 background-origin 是 CSS3 中新加的 background module 屬性,用來(lái)2008-10-17詳解CSS3中的box-sizing(content-box與border-box)
這篇文章主要介紹了CSS3中的box-sizing(content-box與border-box)的相關(guān)資料,需要的朋友可以參考下2019-04-19- 這篇文章主要介紹了淺談CSS3 box-sizing 屬性 有趣的盒模型 ,需要的朋友可以參考下2019-04-02
- 一說(shuō)到CSS的盒模型(Box model)我想很多人都會(huì)比較煩,特別是對(duì)于新手,然而這個(gè)Box model又是我們CSS運(yùn)用中比較重要的一個(gè)屬性,box-sizing 屬性允許您以特定的方式定義匹2015-04-09
- 這篇文章主要介紹了CSS3屬性box-sizing使用指南,需要的朋友可以參考下2014-12-09
- CSS3 box-sizing屬性,在很多新手朋友來(lái)看是比較陌生的,接下來(lái)介紹CSS3 box-sizing使用及注意部分,感興趣的朋友可以了解下2013-01-08



