在css2.0中,在圆角的制作时候,都是用圆角背景图片来做,当时我使用的就是用四个空标签使用圆角背景图,然后定位到相应的位置去实现,现在有了css3的Border-radius方便了很多。
使用css3的Border-radius,不仅可以减少图片的制作,更新维护也更方便了,而且相对来说也可以提高网站的性能。
语法
border-radius : none | <length>{1,4} [ / <length>{1,4} ]?
取值:
<length>:由浮点数字和单位标识符组成的长度值。不可为负值。
相关属性:
border-top-left-radius: <length> <length> //左上角
border-top-right-radius: <length> <length> //右上角
border-bottom-right-radius:<length> <length> //右下角
border-bottom-left-radius:<length> <length> //左下角
<length> <length>中第一个值是圆角水平半径,第二个值是垂直半径。
说明:
border-radius是一种缩写方法。
第一个值是水平半径。第二个是垂直半径,如果第二个值没有设置,那么水平和垂直半径相等。
border-radius的四个值是按照top-left、top-right、bottom-right、bottom-left的顺序来设置
如果只有一个值,如:border-radius:5px。那么top-left、top-right、bottom-right、bottom-left都相等,就是四边的圆角一样。
如果有2个值,如:border-radius:5px 4px。top-left与 bottom-right相同为5px。top-right 则与bottom-left相同为4px。
如果有3个值 如:border-radius:5px 4px 3px。 top-left为5px, top-right则与bottom-left相同为4px。那么bottom-right为3px。
如果有4个值 如:border-radius:5px 4px 3px 2px。 top-left为5px; top-right为4px;bottom-left为3px;那么bottom-right为2px。
浏览器兼容
目前IE9+、Firefox 4+、Google Chrome 10.0+ 、 Opera 支持 border-radius 属性。ie8和ie8以下的不支持此属性。
对于老版的浏览器,border-radius需要根据不同的浏览器内核添加不同的前缀,Mozilla内核需要加上“-moz”,Webkit内核需要加上“-webkit”等比如:-moz-border-radius;-webkit-border-radius。ie9下没有私有属性,直接使用border-radius。
那么通常我们就需要这样写:
-moz-border-radius:5px;
-webkit-border-radius:5px;
border-radius:5px;
下面来看具体的例子:
demo公用样式css:
.border-com{
width:200px;
height:80px;
background:#eee;
}
一、水平半径和垂直半径相等时
1、一个值:border-radius:5px
等价于:
border-top-left-radius:5px;
border-top-right-radius:5px;
border-bottom-right-radius:5px;
border-bottom-left-radius:5px;
html:
<div class=”border-com demo”></div>
css:
.demo{ -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; border:2px solid #f60; }
效果:
2、2个值:border-radius:10px 5px
等价于:
border-top-left-radius:10px;
border-top-right-radius:5px;
border-bottom-right-radius:10px;
border-bottom-left-radius:5px;
html:
<div class=”border-com demo1″></div>
css:
.demo1{ -moz-border-radius:10px 5px; -webkit-border-radius:10px 5px; border-radius:10px 5px; border:2px solid #f60; }
效果:
3、3个值:border-radius:20px 10px 5px
等价于:
border-top-left-radius:20px;
border-top-right-radius:10px;
border-bottom-right-radius:5px;
border-bottom-left-radius:10px;
html:
<div class=”border-com demo2″></div>
css:
.demo2{ -moz-border-radius:20px 10px 5px; -webkit-border-radius:20px 10px 5px; border-radius:20px 10px 5px; border:2px solid #f60; }
效果:
4、4个值:border-radius:20px 10px 5px 3px
等价于:
border-top-left-radius:20px;
border-top-right-radius:10px;
border-bottom-right-radius:5px;
border-bottom-left-radius:3px;
html:
<div class=”border-com demo3″></div>
css:
.demo3{ -moz-border-radius:20px 10px 5px 3px; -webkit-border-radius:20px 10px 5px 3px; border-radius:20px 10px 5px 3px; border:2px solid #f60; }
效果:
二、水平半径和垂直半径不同时
1、border-radius:20px / 10px;
水平半径为20px ,垂直半径为10px
等价于:
border-top-left-radius:20px 10px;
border-top-right-radius:20px 10px;
border-bottom-right-radius:20px 10px;
border-bottom-left-radius:20px 10px;
html:
<div class=”border-com demo4″></div>
css:
.demo4{ -moz-border-radius:20px / 10px; -webkit-border-radius:20px / 10px; border-radius:20px / 10px; border:2px solid #f60; }
效果:
2、border-radius:20px 15px 10px 5px / 12px 8px 4px 2px;
等价于:
border-top-left-radius:20px 12px;
border-top-right-radius:15px 8px;
border-bottom-right-radius:10px 4px;
border-bottom-left-radius:5px 2px;
html:
<div class=”border-com demo5″></div>
css:
.demo4{ -moz-border-radius:20px 15px 10px 5px / 12px 8px 4px 2px; -webkit-border-radius:20px 15px 10px 5px / 12px 8px 4px 2px; border-radius:20px 15px 10px 5px / 12px 8px 4px 2px; border:2px solid #f60; }
效果:
举一反三,大家可以还可以做出更多的效果。
三、特别例子
1、当border-radius的半径值小于border边框的值的时候,下面看看是怎么情况
html:
<div class=”border-com demo6″></div>
css:
.demo6{ -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; border:12px solid #f60; }
效果:
通过上面的例子我们发现,当border-radius的半径值小于border边框的值的时候,我们发现边框内部就没有圆角效果了。
这种情况那么是为什么?因为我们的border-radius的内径值是等于外径值减去边框厚度值,当他们的值为负时,内径默认为0,所以内部是直角的,最前面我们讲过border-radius其值是不能为负值的。
以上的例子我们都设置了边框,当没有边框时就不存在这样的情况了。
当我们把border-radius改大一点,我们再来看看:
css:
.demo7{ -moz-border-radius:17px; -webkit-border-radius:17px; border-radius:17px; border:12px solid #f60; }
效果: