如何用border-image實現文字氣泡邊框

開發活動中,遇到了一個很簡單的文字氣泡效果,大概就是這樣的。
css

image
emmmm,看起來很簡單。實現思路以下

  1. 主體是個div,加上漸變和邊框還有圓角便可。
  2. 左側元寶切圖,用::before定位在左側。
  3. 右側老鼠切圖,用::after定位在右側。

基本沒啥難度,分分鐘就能搞定了。直到...前端

產品:哦對了,這個氣泡圖後面要在後臺作成可配置的,到時候咱們直接上傳圖片就好了,算是用戶的我的簽名。 我:!!!(╯‵□′)╯︵┻━┻git

這就有點尷尬了,總不能到時候讓產品也一張圖片before,一份after,中間漸變本身寫吧。估計分分鐘會被本身砍死的。
早年在公司聽安卓的同事講過一種叫作.9png的東西,因而在網上搜了下,前端能不能實現相似的效果。果真發現了。github

.9png

什麼是.9png呢?.9png是安卓那邊的一種圖片格式,專門用來作氣泡效果的。它的特色就是把一份圖片分紅9分,最角落的四個區域是不會被拉伸的。只會拉伸中間部分。
ui

image

這樣就算你的內容區域撐大了,角落保留的元素不會發生形變。

前端實現

聰明的同窗能夠直接戳這裏看效果 codepen.io/gong12339/p…url

前端實現.9png須要用到如下幾個屬性。spa

官方推薦的.9png的圖分辨率是81 * 81,這樣切出來的9個區域每個都是27 * 27的寬高。我這裏由於是長方形,因此切片的位置須要本身測量。並且個人圖片很明顯不支持縱向拉伸code

.border {
  border-width: 18px 44px 25px 28px;
  border-style: solid;
  border-image-source:url(https://raw.githubusercontent.com/gong12339/vic-blog/master/static/img/border.9.png);
  border-image-slice:25 44 25 28 fill;
  border-image-width:25px 44px 25px 28px;
}
複製代碼
  • border-width: 27px; 設置邊框寬度
  • border-style: solid; 設置邊框類型
  • border-image-source: url('a.png') 設置圖片地址,沒啥好講的
  • border-image-slice: 27 27 27 27; 設置切片位置 (上 右 下 左),若是都同樣也能夠只寫一個
  • border-image-width: 27px 27px 27px 27px; 設置邊框寬度(上 右 下 左),若是都同樣也能夠只寫一個

這裏重點講一下border-image-slice,它的意思就是距圖片的上、右、下、左相應的距離畫條線,而後將圖片切成9個區域(注意不能帶單位)。 cdn

image
到這裏咱們已經基本完成了配置
相關文章
相關標籤/搜索