一直都很想写一篇关于CSS实现圆角的文章,今天不想再错过。之前有一篇用CSS去实现三角形有很多种方法,但这里用CSS2.0实现圆角只有一种方法。我们知道,如果使用最新的CSS3.0,只需要使用它独有的属性border-radius即可。比如,要圆角10px,则为border-radius:10px。但是,CSS2.0却没有提供类似的属性,于是前端们发挥它们的聪明才智,不靠背景图,而只用CSS2.0也完成了圆角的功能。
原理:利用CSS的margin,以及DIV上下排列的宽度相差两像素来模拟圆角。
<style> .corner{width:500px;height:auto;background:green;overflow:hidden;} .top,.bottom{background:#fff;} .c1,.c2,.c3,.c4{display:block;height:1px;background:green;overflow:hidden; } .c1{margin:0 5px;} .c2{margin:0 3px;} .c3{margin:0 2px;} .c4{margin:0 1px;height:2px;} </style>
<div class="corner"> <div class="top"> <span class="c1"></span> <span class="c2"></span> <span class="c3"></span> <span class="c4"></span> </div> <div class="bottom"> <span class="c4"></span> <span class="c3"></span> <span class="c2"></span> <span class="c1"></span> </div> </div>
|
下图分别是网页放大4倍的效果图:
图一:左边的是用CSS2.0模拟出来的圆角,里面的每个锯齿都是一个span(块),而右边是利用CSS3.0制作出来的。
图二:左边的是用CSS2.0模拟出来的圆角,里面的每个锯齿都是一个span(块),右边是利用作图工具制作出来的,若做圆角,需采用背景图的形式。
由上面的图片对比,可知CSS3.0制作出的圆角最为平滑,其次是作图工具,最后才是css2.o。若为了追求页面大小和制作方便,又想兼容各大浏览器,虽然代码量也增多了,但在打造圆角方面,也不失为一种方法。