CSS border-image

754 阅读2分钟

最近在做小程序的时候,需要实现在界面的四周添上一圈图片边框,一开始直接把边框当另外一个背景,跟原来背景嵌套,使用background-blend-mode。但是发现在不同设备下,边框的长短难以调整。于是分成了4条边框,分别做背景,然后repeat。因为这样做实在太挫了,在小伙伴的推荐下,使用了border-image。

分类

border-image分成下面这五类,初始值如下:

  • 1 border-image-source: none

  • 2 border-image-slice: 100%

  • 3 border-image-width: 1

  • 4 border-image-outset: 0

  • 5 border-image-repeat: stretch

1. border-image-source:

border-image: none | <image> 定边框图片的地址

2. bordre-image-slice:

bordre-image-slice [ <number> | <percentage> ]{1,4} && fill?

边框图像切片。指定4个值(4条分割线:top, right, bottom, left)将 border-image-source 分割成9宫格。

border-image-slice 四条线的值类型为:number | percentage。 number 不带单位的数值。1 代表 1个图片像素。 正确写法

border-image-slice: 10 10 10 10

border-image-slice: 10% 10% 10% 10%

percentage 百分比。 关键字fill的作用是:将border-image-source九宫格中间那一块切片作为DOM节点的背景。

3.border-image-width

border-image-width: [<length> | <percentage> | <number> | auto]{1, 4}

边框宽度,刚DOM节点分割成九宫格。与border-image-slice对应。

length:带px, em单位的尺寸

percentage:百分比

number: 不带单位的数字,表示border-width的倍数

auto:使用auto,border-image-width会使用border-image-slice的值。

4.border-image-outset

border-image-outset: [ <length> | <number> ]{1,4}

border-image-outset 字面意思是边框图片开端。作用是重新指定 border image area 的边界。

5.border-image-repeat

border-image-repeat: [stretch | repeat | round | space]{1, 2}

接收俩参数,第一个水平方向平铺,第二个垂直方向平铺。九宫格中间的区域受到俩参数影响。

repeat与round区别: round除了能平铺外还可以通过伸缩使背景完整显示

round与space区别: 虽然都能使背景完整显示space在小方块之间有一定空隙

简写

border-image: <‘border-image-source’> || <‘border-image-slice’> [ / <‘border-image-width’> | / <‘border-image-width’>? / <‘border-image-outset’> ]? || <‘border-image-repeat’>