border-image 邊框圖片
這個屬性的兼容性不是很好,所以在正常的前端開發(fā)工作中很難用到,但是在不考慮兼容性的情況下,它無疑的一個很強大的屬性,因為它可以自定義漂亮的邊框,而不在是單調(diào)的線條。
1. 官方解釋
CSS 屬性允許在元素的邊框上繪制圖像。這使得繪制復(fù)雜的外觀組件更加簡單,也不用在某些情況下使用九宮格了。使用 border-image
時,其將會替換掉 border-style
屬性所設(shè)置的邊框樣式。雖然規(guī)范要求使用 border-image
時邊框樣式必須存在,但一些瀏覽器可能沒有實現(xiàn)這一點。
2. 慕課解釋
通過 border-image
屬性可以給元素添加自定義得而邊框樣式,而不單單是系統(tǒng)提供的那幾種。換句話說就是我們可以自定義一個圖片來充當元素的邊框?qū)λM行環(huán)繞。
3. 語法
border-image:source slice repeat;
包含屬性
屬性 | 描述 |
---|---|
border-image-source | 背景圖片源 |
border-image-slice | 需要展示出來圖片的尺寸,如果這個量等于圖片的尺寸就都相當于整個圖片展示出來 |
border-image-width | 圖片邊框的寬度。 |
border-image-outset | 邊框圖像區(qū)域超出邊框的量。 |
border-image-repeat | 圖片的填充形式 |
4. 實例
- 使用
border-image
為元素自定義一個圖片邊框。
.demo{
width: 100px;
height: 100px;
background: #ccc;
border-width: 50px;
border-style: solid;
border-image: url(./../img/border-image.jpg);
}
效果圖
我們這使用的是 bordr-image
這個屬性,并定義了圖片路徑 其它的不設(shè)定使用默認值。
- 使用
border-image-source
為元素設(shè)定一個邊框。
.demo2{
width: 100px;
height: 100px;
background: #ccc;
border-width: 50px;
border-style: solid;
border-image-source: url(./../img/border-image.jpg);
}
效果圖
我們可以看到 例1 和 例2 兩個圖是一樣的,因為我們僅僅使用了 border-image-source
增加了圖片路徑而已。
- 我們在 demo2 上增加
border-image-slice
。
.demo2{
width: 100px;
height: 100px;
background: #ccc;
border-width: 50px;
border-style: solid;
border-image-source: url(./../img/border-image.jpg);
border-image-slice: 70;
}
效果圖
通過給 slice
設(shè)定一個 70 我們得到了一個漂亮的邊框,下面重點說下這個屬性值是如何作用在邊框圖片上的。
4. 繼續(xù)在 demo2的基礎(chǔ)上增加 border-image-outset
。
.demo2{
width: 100px;
height: 100px;
background: #ccc;
border-width: 20px;
border-style: solid;
border-image-source: url(./../img/border-image.jpg);
border-image-slice:20;
border-image-outset:22px;
}
效果圖
從效果圖中的紅色箭頭我們可以看到,邊框圖片和灰色元素之間有一條 2px 的白線,這是因為我設(shè)置了 image-outset
向外偏移 了 22px 的原因。
- 使用
border-image-repeat
來為 demo2 設(shè)定圖片的填充形式
.demo2{
width: 100px;
height: 100px;
background: #ccc;
border-width: 20px;
border-style: solid;
border-image-source: url(./../img/border-image.jpg);
border-image-slice:20;
border-image-outset:22px;
border-image-repeat: repeat;
}
效果圖
屬性值 | 描述 |
---|---|
stretch | 默認值,拉伸圖片來填充區(qū)域。 |
repeat | 平鋪并重復(fù)圖像來填充區(qū)域。 |
round | 類似 repeat 值。如果無法完整平鋪所有圖像,則對圖像進行縮放以適應(yīng)區(qū)域。 |
space | 不拉伸圖片,而是讓圖片成四周環(huán)繞即左上右上右下左下。 |
initial | 關(guān)鍵字用于設(shè)置 CSS 屬性為它的默認值 。可以用于任何 HTML 元素上的任何 CSS 屬性。 |
inherit | 繼承父級的設(shè)定 |
5. 兼容性
IE | Edge | Firefox | Chrome | Safari | Opera | ios | android |
---|---|---|---|---|---|---|---|
11 | 12+ | 50+ | 5+ | 9.1+ | 43+ | 9.3+ | 2.1+ |
6. 經(jīng)驗分享
- 這個屬性使用并不太難,不過其中的
border-image-slice
屬性在使用的時候有一個小技巧,就是當想要其中image
不失真即不拉伸,slice
要和width
一樣。
例如:
.demo{
border-width:20px;
border-image-slice:20;
}
還有一點要注意的是 slice
不需要掛單位。
2. 如果想填充中心可以加上-webkit-border-image
就像下面這樣
.demo{
-webkit-border-image: url(./../img/border-image.jpg) 20 20 stretch;
}
這是 border-imgae
的連寫方式,第一個和第二個 20 都是 slice
,認出它的最后方法就是 它們都不帶單位。
7. 小結(jié)
border-image
使用時候一定要設(shè)定border-style
雖然這個屬性沒什么用,但是如果不設(shè)定它border-image
就不生效。border-image-slice
如果設(shè)定數(shù)值當px
用時候直接寫數(shù)字就可以 如果加上px
反而會不生效。border-width
用來設(shè)定邊框的寬度,它決定圖片邊框展示的厚度(即圍繞寬度)。