纯css无图片的边框圆角实现原理

可以看到,不论采用图片实现圆角,还是各种“曲线救国”的圆角实现,在css3里面,都可以用一个border-radius全盘搞定,然而,因为border-radius属性仅仅少数几个新锐浏览器支持(比如FF4,IE9,CHROME等),当前使用的较多的可能还是用图片模拟,现在介绍一种不使用图片来实现圆角的方法,当然,这种方法对于像素的精确度要求较高,具体思路如下:

首先,圆角的生成类似一个金字塔,我们采用像素来调整,以便达到弧形的效果:

先构建HTML代码:

<div style="width:200px">
	<span class="a1"></span><span class="a2"></span><span class="a3"></span><span class="a4"></span>
	<div class="div_main">
	内容区内容区内容区内容区内容区内容区内容区内容区
	</div>
	<span class="b4"></span><span class="b3"></span><span class="b2"></span><span class="b1"></span>
</div>

然后是css代码:

.a1,.a2,.a3,.a4,.b1,.b2,.b3,.b4,.div_main{display:block;overflow:hidden;}
.a1,.a2,.a3,.b1,.b2,.b3{height:1px;}
.a2,.a3,.a4,.b2,.b3,.b4,.div_main{border-left:1px solid #999;border-right:1px solid #999;}
.a1,.b1{margin:0 5px;background:#999;}
/*border-width是为了微调像素,以便才看起来更协调*/
.a2,.b2{margin:0 3px;border-width:2px;}
.a3,.b3{margin:0 2px;}
.a4,.b4{margin:0 1px;height:2px;}

实现的原理

a1,a2,a3,a4是上半部分的结构样式;

b1,b2,b3,b4是下半部分的结构样式;

使用display:block使得每一个内部的span都变成块状元素,以便其宽度能100%伸张;

其中,a2,a3,a4,b2,b3,b4是圆角实现的主要class,采用margin递增的方式产生圆角,为了看起来更协调,对a2,b2进行了特别的处理,使其border-width变成2px;同时,a1的magrin变成5px;

需要注意的是,在使用下半部分时,顺序是反向的;b4—>b3-…

<span class="b4"></span><span class="b3"></span><span class="b2"></span><span class="b1"></span>

当然,你可能需要在div_main里面使用背景,那么记得对边线a2,a3,a4,b2,b3,b4也是用这个背景;

这种无图片的方法在对于自适应方面有一定的优势,不用采用图片的inner/outer容器设置背景图来实现自适应,但是,这种方法也有局限性,当要求的边框圆角角度需求较大或者说边线需求较宽的情况下,实现效果就不太协调,只能采用图片了,不过,值得欣慰的是,css3已经可以在一个元素上使用多张背景图;

效果图:

1

兼容性:

FF2.0+/IE5.0+/chrome/safari/

转载于:https://www.cnblogs.com/zorroLiu/archive/2011/06/08/2075199.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值