详解css3之border-image_html/css_WEB-ITnose
border-image简介
css3中新增了一个属性border-image,这个属性允许开发者使用图片来定义边框,扩充了 CSS2 中仅有的几个预定义边框样式(border-style)。
border-image 是一个简写属性,分别设定了以下几个属性。
border-image-source
border-image-slice
border-image-width
border-image-outset
border-image-repeat
为什么图片可以作为边框?
在开始学习border-image之前我有一个疑问,图片是怎么应用到容器的边框上的?
看下图
简单的说就是把图片的中间部分去掉,从而形成一个类似边框的框架。
那么如何使用被划分出来的八格素材来生成一个边框呢?
左上、右上、左下、右下的四格素材分别作为边框的四个角,而上下左右的四格素材分别经过不同形式的扩展,形成边框的四条边。上图很好的说明了图片形成边框的处理形式。
border-image-source
border-image-source属性用来指定边框所需素材的路径,语法可以参照backgound-image。
需要注意的是,如果只设置了border-image-source属性而其他属性使用缺省值,则边框素材不会被划分九宫格,而是将整个素材按照边框宽度缩放至合适尺寸后安放在边框四角。
边框图片
如下图
border-image-slice
border-image-slice属性用来设置边框素材的切割尺寸,如下图,依次是上横切割线,右竖切割线,下横切割线,左竖切割线。数值分别代表从上、右、下、左边缘向素材中心延伸的像素/百分比数
注意:切割的数值只接受像素和百分比两个单位,并且像素单位必须省略,即只接收数值或者百分比的形式。例如,border-image-slice: 10 10 30 10代表图片素材按照下图的样式被切割:
border-image-width
border-image-width用来设置边框素材的宽度,当同时设置了border-image-width和border-width属性时,那么边框的实际宽度由border-width属性决定。此时,如果border-image-width属性小于border-width属性,边框图片会沿边框的外侧分布而内侧留空形成 padding 的效果;如果border-image-width属性大于border-width属性,边框图片会仍会沿边框的外侧分布而内测溢出,如下图
border-image-repeat
border-image-repeat属性用来设置上下左右四边(即2、4、5、7四个素材块)的重复形式,分别有stretch repeat round space四个取值
stretch:指定用拉伸方式来填充边框背景图。
repeat:指定用平铺方式来填充边框背景图。当图片碰到边界时,如果超过则被截断。
round:指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的大小直至正好可以铺满整个边框。
space:指定用平铺方式来填充边框背景图。图片会根据边框的尺寸动态调整图片的之间的间距直至正好可以铺满整个边框。
border-image-outset
border-image-outset属性会产生使 border-image 相对于原始位置向外侧推移的效果,设置border-image-outset属性会使 border-image 溢出,但不会影响整个盒模型的尺寸,因此在设置此属性时要特别注意防止元素间的相互干扰。
如下图
后续
border-image是css3属性所以存在兼容性问题,需要在属性前面设置-webkit等
推荐阅读
-
css3学习系列之移动属性详解
-
详解CSS3选择器:nth-child和:nth-of-type之运用
-
CSS3之圆角_html/css_WEB-ITnose
-
CSS3之弹性布局_html/css_WEB-ITnose
-
CSS3学习笔记之border-radius_html/css_WEB-ITnose
-
CSS3:clip-path详解_html/css_WEB-ITnose
-
HTML之marquee(文字滚动)详解_html/css_WEB-ITnose
-
CSS3之圆角_html/css_WEB-ITnose
-
React Native 之 flexbox 布局详解篇 (清晰明了)_html/css_WEB-ITnose
-
详解用CSS3制作圆形滚动进度条动画效果_html/css_WEB-ITnose