若是咱们想把一图应用到边框而非背景,就像下面的这样效果url
可能最容易的方法就是两层标签,外层标签设置背景图片,内层标签设置背景色为白色就达到了效果,但是若是只用一层标签呢,怎么办?
其实思路是在背景图片之上, 再叠加一层纯白的实色背景
代码以下:spa
div { padding: 1em; border: 1em solid transparent; background: linear-gradient(white, white), url(../images/stone-art.jpg); background-size: cover; background-clip: padding-box, border-box; background-origin: border-box; }
或者再简写一下就是:code
div { padding: 1em; border: 1em solid transparent; background: linear-gradient(white, white) padding-box, url(../images/stone-art.jpg) border-box 0 / cover; }
具体效果见连接
再扩展一下,若是要实现以下所示的边框图像,像信封一下的效果,怎么办blog
其实有两种方式图片
使用repeating-linear-gradientip
div { padding: 1em; border: 1em solid transparent; background: linear-gradient(white, white) padding-box, repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0 / 6em 6em; max-width: 20em; font: 100%/1.6 Baskerville, Palatino, serif; }
具体效果见连接get
使用border-imageit
div { padding: 1em; border: 16px solid transparent; border-image: 16 repeating-linear-gradient(-45deg, red 0, red 1em, transparent 0, transparent 2em, #58a 0, #58a 3em, transparent 0, transparent 4em); max-width: 20em; font: 100%/1.6 Baskerville, Palatino, serif; }
具体效果见连接
可是使用border-image 方法存在一些问题class
每当咱们改变 border-image-slice 时, 都须要同时修改 borderwidth 来让它们相互匹配cli
因为咱们不能在 border-image-slice 属性中使用 em 单位, 只能把
边框厚度指定为像素单位
条纹的宽度须要在色标的位置信息中写好, 所以咱们在改变条纹宽
度时, 须要修改四处
先暂时写到这里后续再补充