CSS border-image
CSS2設定邊框的樣式較為簡單,比如設定邊框的粗細程度,邊框顏色和邊框型別(實線或者點狀等)。
想要實現精美多變的邊框效果,是一件非常燒腦的工作,甚至說難以實現。
令人鼓舞的是,border-image屬性的出現可以幫助前端人員設定邊框的樣式更為豐富多樣。
一.基礎知識:
使用border-style屬性可以設定邊框的型別,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ width:200px; height: 100px; border-style: dotted; border-color: red; border-width: 1px; } </style> </head> <body> <div></div> </body> </html>
上面程式碼設定div的邊框型別為dotted,border-style屬性值極為有限,難以設定更為絢麗的邊框效果。
border-image可以規定圖片作為邊框樣式,由於圖片是比較容易做的美觀絢麗,於是實現邊框美觀絢麗成為較為容易的工作;可以認為border-image是border-style變數型別的一種。
特別說明:border-image屬性值為none或者圖片不可見時,顯示border-style屬性規定的邊框效果。
二.詳細說明:
語法結構:
[CSS] 純文字檢視 複製程式碼border-image: source slice / width / outset repeat
border-image是複合屬性,拆分如下:
[CSS] 純文字檢視 複製程式碼border-image-source border-image-slice border-image-width border-image-outset border-image-repeat
引數解析:
1.border-image-source:
用於規定是否用圖片定義邊框樣式或者規定影像來源路徑。
語法結構:
[CSS] 純文字檢視 複製程式碼border-image-source : none | <url>
屬性值預設為none,不使用圖片定義邊框。
用圖片定義邊框,與background-image屬性相仿,用url()規定圖片路徑,相對/絕對路徑都合法。
2.border-image-slice:
用於規定圖片的切割位置。
語法結構:
[CSS] 純文字檢視 複製程式碼border-image-slice: [ <number> | <percentage>]{1,4}&& fill?
預設值是100%。
number:純數值,不能夠帶單位,預設單位是畫素(px)。
percentage:相對於圖片的尺寸。
number和percentage都可以有1-4個值,取值方式與border-width相仿,遵循上右下左順序。
下面介紹一下它是如何具體切割圖片,先看一個圖片:
每一個小方塊尺寸是27px,那麼整個圖片的尺寸是81(27*3)畫素。
slice翻譯成中文是切割、劃分的意思,裁切方式是向內進行切割,如果有如下程式碼:
[CSS] 純文字檢視 複製程式碼border-image-slice:27px 27px 27px 27px
第一個27px是從圖片上邊緣向內27px進行切割。
第二個27px是從圖片右邊緣向內27px進行切割。
第三個27px是從圖片下邊緣向內27px進行切割。
第四個27px是從圖片左邊緣向內27px進行切割。
切割演示圖片如下:
上面以動態方式演示了是如何對圖片進行切割。
圖片被切割後,劃分為九個區域,與元素的九個區域一一對應。
介紹一下元素九個區域,CSS程式碼如下:
[CSS] 純文字檢視 複製程式碼div{ margin:0px auto; height:100px; width:100px; border-style:solid; border-width:20px; border-color:blue red; }
上述生成帶有邊框的div元素,具有潛在的九個區域,圖示如下:
邊框圖片九個區域與元素九個區域一一對應,也就是邊框圖片的相應部位就應用於元素的相應位置。
fill關鍵字如果存在的話,將會保留border-image中間的部分(預設是丟棄中間部分,留空處理)。
3.border-image-width:
用於規定邊框圖片寬度。
語法結構:
[CSS] 純文字檢視 複製程式碼border-image-width : [ <length> | <percentage> | <number> | auto ]{1,4}
邊框圖片繪製在指定的區域內的,這個區域叫做邊框圖片區域,border-image-width用來規定此區域的"厚度"。
此屬性可以省略,此時邊框圖片區域與元素的border是一致的。
此屬性可以有1-4個值,取值方式和border-width相仿,遵循上右下左方式。
4.border-image-outset:
用於規定邊框圖片區域超出元素邊框的尺寸。
語法結構:
[CSS] 純文字檢視 複製程式碼border-image-outset : [ <length> | <number> ]{1,4}
此屬性可以有1-4值,取值方式和border-width類似,同時也遵循上右下左方式。
5.border-image-repeat:
用於規定切割後的邊框圖片中間部分(演示圖片中的黃色部分)在元素對應部分的存在方式。
語法結構:
[CSS] 純文字檢視 複製程式碼border-image-repeat: [ stretch | repeat | round ]{1,2}
首先解釋一下三種方式的含義:
stretch:圖片以延展方式來填充該區域。
repeat:圖片以重複平鋪方式來填充該區域。
round:圖片以重複平鋪方式來填充該區域。如果沒有以整數的倍數來填充該區域,圖片會進行縮放以便於整數性倍數的平鋪填充。
此屬性可以有1-2個屬性值:
如果有一個,則用於上下左右四個方位。
如果有兩個,第一個用於上下方位,第二個用於左右方位。
如果省略此屬性,則預設使用stretch。
三.程式碼例項:
特別說明:以下程式碼例項都是以下面圖片作為邊框圖片,尺寸是(27*3)px。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ height:100px; width:200px; border:27px solid red; border-image:url("mytest/demo/bimg.jpg") 27; } </style> </head> <body> <div id="thediv"></div> </body> </html>
以上程式碼中,border-image-slice設定為27,由於沒有規定border-image-width,那麼將以邊框的尺寸為標準,又由於沒有規定border-image-repeat屬性,則預設採用stretch方式,也就是拉伸被切割的中間區域(也即是演示圖中的黃色區域)。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ height:100px; width:200px; border:54px solid red; border-image:url("mytest/demo/bimg.jpg") 27; } </style> </head> <body> <div id="thediv"></div> </body> </html>
此例項和例項一的唯一不同之處在於邊框的寬度,邊框圖片會自適應邊框的寬度尺寸。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ height:100px; width:200px; border:27px solid red; border-image:url("mytest/demo/bimg.jpg") 27 stretch repeat; } </style> </head> <body> <div id="thediv"></div> </body> </html>
在以上程式碼中,水平方位用stretch拉伸方式,垂直方位用repeat重複平鋪方式,repeat方式不會調整切割後邊框圖片中間部分(演示圖黃色部分)尺寸方式實現重複平鋪效果,所以會出現殘缺現象。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ height:100px; width:100px; border:27px solid red; border-image:url("mytest/demo/bimg.jpg") 27 repeat round; } </style> </head> <body> <div id="thediv"></div> </body> </html>
round方式可以自動調整切割後邊框圖片中間部分(演示圖黃色部分)尺寸方式實現重複平鋪效果,所以不會出現殘缺現象。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ height:100px; width:100px; border-style:solid; border-color:red; border-width:27px 54px; border-image:url("mytest/demo/bimg.jpg") 27; } </style> </head> <body> <div id="thediv"></div> </body> </html>
以上程式碼修改了邊框的尺寸,可以看出邊框圖片會跟著邊框尺寸進行自適應。
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> div{ height:100px; width:100px; border-style:solid; border-color:red; border-width:27px 54px; border-image:url("bimg.jpg") 27/27px; } </style> </head> <body> <div id="thediv"></div> </body> </html>
當規定了border-image-width屬性之後,邊框圖片就不會再適應邊框寬度了。
相關文章
- border-image實現與圓角漸變邊框例項頁面
- css 命名:BEM, scoped css, css modules 與 css-in-jsCSSJS
- 【CSS】CSS常用技巧CSS
- CSS速刷 - CSS效果CSS
- css43 CSS SpecificityCSS
- css15 CSS MarginsCSS
- css16 CSS PaddingCSSpadding
- CSS——CSS基礎(1)CSS
- CSS——CSS 值和單位CSS
- CSS速刷 - CSS動畫CSS動畫
- css34 CSS Opacity / TransparencyCSSS3
- css38 CSS Image SpritesCSSS3
- css44 CSS The !important RuleCSSImport
- css45 CSS Math FunctionsCSSFunction
- css23 CSS Links, CursorsCSS
- css11 CSS RGB ColorsCSS
- css12 CSS HEX ColorsCSS
- css17 CSS Height, WidthCSS
- css18 CSS Box ModelCSS
- 【CSS】CSS簡介,CSS基礎選擇器詳解CSS
- CSSCSS
- CSS中的“大白”——CSS 動畫CSS動畫
- CSS——CSS 結構和層疊CSS
- css26 CSS Layout - The display PropertyCSS
- WebRTC與CSS濾鏡(CSS filter)WebCSSFilter
- CSS系列 (03):CSS三大特性CSS
- Css規範整理:2、css盒模型CSS模型
- CSS基礎:CSS變數簡介CSS變數
- CSS flexCSSFlex
- CSS E:not()CSS
- CSS !importantCSSImport
- CSS @importCSSImport
- CSS calc()CSS
- CSS remCSSREM
- CSS currentColorCSS
- CSS(四)CSS
- CSS HSLA()CSS
- CSS HSL()CSS