您现在的位置:首页 >> 前端 >> 内容

【CSS】用border-image做背景图

时间:2017/8/28 9:31:00 点击:

  核心提示:需求背景:如何用css来制作这样的一张优惠券?尤其是金棕色的齿轮部分:(设计稿宽高为690px * 210px)我想到的最直接快速的方法就是用background的URL来设置:直接把下面整个图片作为...

需求背景:如何用css来制作这样的一张优惠券?尤其是金棕色的齿轮部分:(设计稿宽高为690px * 210px)

【CSS】用border-image做背景图

我想到的最直接快速的方法就是用background的URL来设置:直接把下面整个图片作为元素的背景,搞定!(宽高为690px * 210px,注意四边有1px,#e6e6e6,6px的圆角描边)

【CSS】用border-image做背景图

【CSS】用border-image做背景图

这样固然不失为一种快速实现的办法,但能否优化下呢?加载这么大一个图片,消耗的资源(加载速度、带宽等)肯定不少,能否只加载图片的一部分呢?

手工PS制作一张这样的图片:(宽高为210px * 32px)

【CSS】用border-image做背景图

实现的原理是:通过border属性来进行图片的拉伸。

CSS代码:(border-image的数值是border-width数值的200倍)

.cell {
    position: relative;
    height: 100%;
}

.cell::before {
    content: " ";
    overflow: hidden;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border-width: .03rem .03rem .03rem 1.01rem;
    border-style: solid;
    border-image: url("coupon_border_b59f76.png")  6 6 6 202 repeat round;
}

注意部分:

border-width: .03rem .03rem .03rem 1.01rem; border-style: solid; border-image: url("coupon_border_b59f76.png") 6 6 6 202 repeat round;

至于图片的宽高为什么是210px * 32px呢?

1、高度为32px:一个齿轮的高度为30px,加上上下各1px的描边,所以总高度为32px

【CSS】用border-image做背景图

2、宽度为210px:

2.1棕色部分的宽度为200px

【CSS】用border-image做背景图

2.2左边有1px的描边

【CSS】用border-image做背景图

2.3右边有6px的圆角

【CSS】用border-image做背景图

2.4中间留3px的带上下1px描边的白色距离用于横向拉伸(实际上只需要留1px即可,但因为我要适配移动端,移动端的Retina屏幕如果只拉伸1px,会模糊掉,所以一般针对移动端需要留2px来拉伸以至于像素不会模糊。另外这里又多留了1px是因为移动端适配,需要用设计稿的像素宽度除以2,若是209px除以2会有小数,我就在可以循环的部分多留了1px。)

【CSS】用border-image做背景图

这时候,200+1+6+3=210px,就是所需要的宽度。

Author:致知

Sign:路漫漫其修远兮,吾将上下而求索。

Tags:【C CS SS S】 
作者:网络 来源:LZGS_4的专栏