border-image 邊框圖片
這個屬性的兼容性不是很好,所以在正常的前端開發工作中很難用到,但是在不考慮兼容性的情況下,它無疑的一個很強大的屬性,因為它可以自定義漂亮的邊框,而不在是單調的線條。
1. 官方解釋
CSS 屬性允許在元素的邊框上繪制圖像。這使得繪制復雜的外觀組件更加簡單,也不用在某些情況下使用九宮格了。使用 border-image 時,其將會替換掉 border-style 屬性所設置的邊框樣式。雖然規范要求使用 border-image 時邊框樣式必須存在,但一些瀏覽器可能沒有實現這一點。
2. 慕課解釋
通過 border-image 屬性可以給元素添加自定義得而邊框樣式,而不單單是系統提供的那幾種。換句話說就是我們可以自定義一個圖片來充當元素的邊框對它進行環繞。
3. 語法
border-image:source slice repeat;
包含屬性
| 屬性 | 描述 |
|---|---|
| border-image-source | 背景圖片源 |
| border-image-slice | 需要展示出來圖片的尺寸,如果這個量等于圖片的尺寸就都相當于整個圖片展示出來 |
| border-image-width | 圖片邊框的寬度。 |
| border-image-outset | 邊框圖像區域超出邊框的量。 |
| 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 這個屬性,并定義了圖片路徑 其它的不設定使用默認值。
- 使用
border-image-source為元素設定一個邊框。
.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 設定一個 70 我們得到了一個漂亮的邊框,下面重點說下這個屬性值是如何作用在邊框圖片上的。
4. 繼續在 demo2的基礎上增加 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 的白線,這是因為我設置了 image-outset 向外偏移 了 22px 的原因。
- 使用
border-image-repeat來為 demo2 設定圖片的填充形式
.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 | 默認值,拉伸圖片來填充區域。 |
| repeat | 平鋪并重復圖像來填充區域。 |
| round | 類似 repeat 值。如果無法完整平鋪所有圖像,則對圖像進行縮放以適應區域。 |
| space | 不拉伸圖片,而是讓圖片成四周環繞即左上右上右下左下。 |
| initial | 關鍵字用于設置 CSS 屬性為它的默認值 ??梢杂糜谌魏?HTML 元素上的任何 CSS 屬性。 |
| inherit | 繼承父級的設定 |
5. 兼容性
| IE | Edge | Firefox | Chrome | Safari | Opera | ios | android |
|---|---|---|---|---|---|---|---|
| 11 | 12+ | 50+ | 5+ | 9.1+ | 43+ | 9.3+ | 2.1+ |
6. 經驗分享
- 這個屬性使用并不太難,不過其中的
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. 小結
border-image使用時候一定要設定border-style雖然這個屬性沒什么用,但是如果不設定它border-image就不生效。border-image-slice如果設定數值當px用時候直接寫數字就可以 如果加上px反而會不生效。border-width用來設定邊框的寬度,它決定圖片邊框展示的厚度(即圍繞寬度)。
如風般魅影 ·
2025 imooc.com All Rights Reserved |