困惑在哪里?
background-clip 與 background-origin是css3中引入的兩個跟元素背景相關的屬性,它們有相同的可選值,即border、padding、content三種,而且這兩個屬性表示的都是元素背景與元素邊框、補白(padding)和內容區域之間的某種關系。
比如,我們想要在邊框上顯示背景,我們可以使用background-origin幫我們實現(前提是邊框要是透明的,不然它會覆蓋住背景)
這里為了既體現出邊框,又體現出邊框中的背景,我特意使用了虛線的邊框。(我是在chrome上做的demo,所以css3屬性只使用了webkit前綴)
運行效果如下:
我們看到黑色部分是虛線的邊框(因為邊寬寬度很大,所以虛線看起來怪怪的),虛的地方正好露出了背景。
所以使用background-origin能夠把背景顯示的邊框上。那background-clip又是做什么滴捏?
很多書上或文章上的解釋是background-clip是用來控制背景的顯示范圍的,那么是不是background-clip也可以讓背景顯示在邊框上呢?那就試試咯
還是用上面的代碼,不過這回是把里面的background-origin改為background-clip
然后看下運行結果:
我們看到背景并沒有在邊框上顯示,看來background-clip并沒有這個功能。那這貨到底有什么用呢?
元芳,關于background-clip與background-origin這兩個東西,你怎么看?
大人,經過明察暗訪,卑職已經摸清了這二人的底細,容卑職慢慢道來。
首先來看background-clip, mozilla官網上的解釋是:
這解釋還是很讓人蛋疼,義譯過來大概就是規定背景圖片或顏色是否能在邊框下顯示。但前面已經說了,把background-clip設為border是沒任何效果的。事實上,background-clip的默認值就是border
其實background-clip的真正作用是決定背景在哪些區域顯示。如果它的值為border,則背景在元素的邊框、補白和內容區域都會顯示;如果值為padding,則背景只會在補白和內容區域顯示;如果值為content,則背景只會在內容區域顯示。
那為毛前面的background-clip:border不起作用?這就得說說background-origin了
這回還是不看什么官網啊手冊啊什么的了,我直接說說我的理解。
background-origin是指背景顯示的區域,或者說背景是從哪個區域開始繪制的(邊框、補白或內容區域)。
還不理解的話那就這么來說吧,background-position總該知道吧?它指定了背景的位置,比如background-position:0px 0px ;那這個0像素是指相對于哪里來說的呢?這就涉及到一個參照點的問題了。background-origin的作用就是指定background-position的參照點是在邊框區域的左上角,還是在補白區域的左上角,或是在內容區域的左上角,對應的三個值就分別是border、padding、content. background-position的也可以是left、right等方向詞語,這時候就不能說參照點了,而應該說參照面,如果值為background-origin的值為border,則參照面包括邊框區域、補白區域、內容區域三個部分,如果值為padding,則參照面只包括補白區域和內容區域,如果值為content,則不用我講了吧。
這個時候再來看看前面那個問題就豁然開朗了,你把background-clip設為border,這時候邊框里是能顯示背景的,但問題是背景并不是從邊框的左上角開始繪制的,它是從補白區域才開始繪制的,女神背景壓根就沒想要搭理 主站蜘蛛池模板: 若羌县| 吉木萨尔县| 利辛县| 弥渡县| 巫溪县| 巴南区| 屏南县| 夏津县| 保靖县| 桦南县| 江口县| 阿勒泰市| 乌鲁木齐县| 宁蒗| 西吉县| 永丰县| 宜城市| 福建省| 道真| 贵溪市| 呼图壁县| 武定县| 新乡市| 治多县| 武义县| 西华县| 丹凤县| 巴林左旗| 望江县| 灌阳县| 五家渠市| 读书| 区。| 济阳县| 新乡县| 镇巴县| 汶上县| 淮阳县| 通河县| 东山县| 鹤庆县|