相似于CSS中的background(背景)属性。 例如:background:url(xx.jpg) 27px no-repeat;指的是图片(url(xx.jpg)),位置(27px),重复性(no-repeat)。web
border-image与此相似,border-image包括图片,剪裁位置(与background位置同样,也是数值,也支持百分值),重复性。
例如:border-image:url(border.png) 27 repeat; 指的就是图片(url(border.png)),剪裁位置(27),重复方式(repeat)。网络
下面咱们将border-image的复合写法分解描述, border-image的主要参数就是上面提到的三个:图片,剪裁位置,重复性。 其实还有另外两个,文章最后面再讲。更好理解
距离图片上部30%的地方,距离右边35%,距离底部40%,左边30%的地方各剪裁一下。也就是对图片进行了“四刀切”,造成了九个分离的区域,这就是九宫格,这是下面深刻讲解border-image的基础。url
取值为repeat(重复)只是其中之一,其他两个是round(平铺)和stretch(拉伸)。其中,stretch是默认值。spa
参数0~2个,0则使用默认值 – stretch,例如:border-image:url(border.png) 30% 40%;就等同于border-image:url(border.png) 30% 40% stretch stretch;;1则表示水平方向及垂直方向均使用此参数;2个参数的话则第一个参数表水平方向,第二个参数表示垂直方向。例如:border-image:url(border.png) 30% 40% round repeat;表示水平方向round(平铺),垂直方向repeat(重复)。3d
关于round 和repeat 的区别。
round会凑整填充(进行了适度的拉伸)。repeat不进行拉伸,不凑整。 具体效果看文章后边的例子。code
经过裁切属性值,将边框背景图切出了“九宫格”的模型,那这张背景图怎么对应地贴在div的边框上呢?blog
<————————>
图片
咱们用下图(27×3)px *(27×3)pxpng 作实验,我给不一样部位加了一个序号作标志,便于观察。ip
// 加一个蓝色背景的父级,便于咱们分析效果。 .border_image { width: 400px; height: 115px; border: 3em double orange; -webkit-border-image: url(border.png) 27 round; border-image: url(border.png) 27 round; } .box { background: blue; } <div class="box"> <div class="border_image"></div> </div>
效果以下rem
//去掉重复属性,即默认都为stretch border-image: url(border.png) 27;
效果以下
//使用repeat border-image: url(border.png) 27 repeat;
效果以下
//边框宽度改变 border-image: url(border.png) 27 repeat stretch; border-width: 3rem 1rem;
效果以下
这个属性默认是边框的宽度,用来限制相应区域背景图的范围, 首先相应背景区域的图像会根据这个属性值进行缩放。而后再重复或平铺或拉伸。 在复合写法中应该位于 slice属性 和repeat属性中间 用“/”间隔 如:border-image:url(border.png) 27 / 6rem / repeat;
语法:border-image-width: [ <length> | <percentage> | <number> | auto ]{1,4}
length 带 px, em, in … 单位的尺寸值 percentage 百分比 number 不带单位的数字;它表示 border-width 的倍数 auto 使用 auto, border-image-width 将会使用 border-image-slice 的值
border: 3em double orange; border-image: url(border.png) 27 round; border-image-width: 6rem;
效果以下
(白框为border)
border-image-width: 1.5rem;
效果以下
(白框为border)
border: 3em double orange; border-image: url(border.png) 27 round; border-image-width: 6rem 1.5rem;
效果以下
(白框为border)
语法:border-image-outset: [ <length> | <number> ]{1,4} 至关于把原来的贴图位置向外延伸。不能为负值,试一下就知道。 在复合写法中应该位于 border-image-width 后面,用“/”间隔 如:border-image:url(border.png) 27 / 6rem / 1.5rem /repeat; 向外延伸1.5rem再贴图。。
border: 3em double orange; border-image: url(border.png) 27 round; border-image-width: 1.5rem; border-image-outset: 1.5rem;
效果以下:
(白框为border)
ps 部分资料来源网络
亲们,看懂没?不懂请留言,帮你解答。。保会。。