最近在做智能数据可视化大屏项目,其中border有两种实现方式,一种是用背景图片,但是这种方式有一个我不可接受的弊端,就是不同大小的模块不能保证边框一致,会有拉伸变形的情况,所以没有采用,另一种是使用css3的新样式属性border-image,但是实现过程有点乱,所以查阅资料整理如下:
border-image都有哪些属性
![](https://img.haomeiwen.com/i14039636/37a9d75ce9a3a6b4.png)
border-image总共有6个属性,接下来我将一一介绍
border-image-source
这个属性是我认为这些属性中最好理解的,与之前的background-image是一样的,就是指定一张图片,作为border-image的源图片,接下来所有的属性的效果都将作用于这张图片上
我们使用网上的图片为例
![](https://img.haomeiwen.com/i14039636/88e80b9052b5cc1c.png)
为了将每个菱形做区分,我们将图片编上序号
![](https://img.haomeiwen.com/i14039636/bb22ed88a2a19967.png)
这是一张90×90px的图片,他们每个菱形所占的位置都是一个30×30px的正方形
border-image-slice
这个属性的作用是裁切源图片,属性值与margin,padding类似,支持1-4个属性值,按照盒模型上右下左的顺序设置,比如设置属性border-image-slice:30
,这将把上面的源图片分割成9份,每份都是30×30px的小图片,类似下方图片
![](https://img.haomeiwen.com/i14039636/c67fcc0a1a78b051.png)
border-image-repeat
这9块区域将负责填充div(以div为例)边框对应的9个区域,四个角的图片直接可以贴到div的四个角上,但是每个div的宽高不确定,所以四个边的边框的图片该如何设置就是border-image-repeat的作用。
他有四个属性:stretch(默认)、repeat、round、space,分别代表:不重复*拉伸*铺满,重复*不拉伸*铺满,重复*拉伸*铺满,重复*不拉伸*不铺满。
我们来看看不用样式的效果
1、border-image-repeat:stretch
:不重复*拉伸*铺满
![](https://img.haomeiwen.com/i14039636/852dce023367cf55.png)
2、border-image-repeat:repeat
: 重复*不拉伸*铺满
![](https://img.haomeiwen.com/i14039636/0dd90db6eef5d088.png)
3、border-image-repeat:round
:重复*拉伸*铺满
![](https://img.haomeiwen.com/i14039636/4f6a1bdaf11afc5f.jpg)
4、border-image-repeat:space
: 重复*不拉伸*不铺满
![](https://img.haomeiwen.com/i14039636/6e00adf44976f2ac.jpg)
border-image-width
这个属性默认是边框的宽度,用来限制相应区域背景图的范围。首先相应背景区域的图像会根据这个属性值进行缩放。然后再重复或平铺或拉伸。
border: 3em double orange;
border-image: url(border.png) 27 round;
border-image-width: 6rem;
![](https://img.haomeiwen.com/i14039636/9a6ed28054693eb5.png)
border-image-width: 1.5rem;
![](https://img.haomeiwen.com/i14039636/df4f40af28a8b36b.png)
border-image-outset
相当于把原来的贴图位置向外延伸。不能为负值
border: 3em double orange;
border-image: url(border.png) 27 round;
border-image-width: 1.5rem;
border-image-outset: 1.5rem;
![](https://img.haomeiwen.com/i14039636/612bc092159b6ff3.png)
以上是关于border-image的总结,希望对大家有所帮助
网友评论