CSS3属性Border-Radius详解[圆角]

qdgcs.co.cc前端攻城记又一讲。

上一次我们了解了css3的属性animation,这次我们回头看一下Border-Radius这个属性,这个属性目前被各大浏览器广泛支持,属于一个基本普及的属性。

支持情况如下:

下面我们来看一下它的使用方法

[css]

/*语法:border-radius : none | <length>{1,4} [/ <length>{1,4} ]? <length>: 由浮点数字和单位标识符组成的长度值。不可为负值。*/
.p1
{
border-radius: 15px;/*它的是border-radius: 15px/15px;的省略*/
}

[/css]

 

其实以上包括注释都还是border-radius的缩写方法。如果“/”前后的值都存在,那么“/”前面的值设置其水平半径,“/”后面值设置其垂直半径。如果没有“/”,则水平和垂直半径相等。另外其四个值是按照top-left、top-right、bottom-right、bottom-left的顺序来设置的其主要会有下面几种情形出现:

1、border-radius: [ <length>{1,4} ]; //这里只有一个值,那么top-left、top-right、bottom-right、bottom-left四个值相等

2、border-radius:[ <length>{1,4} ]  [ <length>{1,4} ] ; //这里设置两个值,那么top-left等于bottom-right,并且取第一个值;top-right等于bottom-left,并且取第二个值

3、border-radius:[ <length>{1,4} ]   [ <length>{1,4} ]   [ <length>{1,4} ];//如果有三个值,其中第一个值是设置top-left;而第二个值是top-right和bottom-left并且他们会相等,第三个值是设置bottom-right

4、border-radius:[ <length>{1,4} ]   [ <length>{1,4} ]  [ <length>{1,4} ]   [ <length>{1,4} ];//如果有四个值,其中第一个值是设置top-left;而第二个值是top-right,第三个值bottom-right,第四个值是设置bottom-left

现在我们来看一下更完整的写法,其实border-radius和border属性一样,还可以把各个角单独拆分出来,他们都是先Y轴在X轴,具体看下面:

border{

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>中第一个值是圆角水平半径,第二个值是垂直半径,如果第二个值省略,那么其等于第一个值,这时这个角就是一个四分之一的圆角,如果任意一个值为0,那么这个角就不是圆角。请看图示:

我们来看一下综合写法

[css]

.demo { border-radius: 10px 15px 20px 30px / 20px 30px 10px 15px; }
/*这个等同于*/
.demo {
border-top-left-radius: 10px 20px;
border-top-right-radius: 15px 30px;
border-bottom-right-radius: 20px 10px;
border-bottom-left-radius: 30px 15px;
}
/*由此我们可以看到他们的对应关系*/

[/css]

这个例子的效果如图:

对于border-radius还有一个内半径和外半径的区别,它主要是元素 边框值较大时,效果就很明显,当我们border-radius半径值小于或等于border的厚度时,我们边框内部就不具有圆角效果,例如下面的实例

.border-big { border: 15px solid green; border-radius: 15px; }

 

效果:

我们接着上面这个例子,把 border-radius半径值改成比边框值大一点:

.border-small { border: 15px solid green; border-radius: 25px; }

 

效果:

为何当border-radius的半径小于元素边框的厚度时,内部没有圆角效果?我在这里说一下,因为我们的border-radius的内径值是等于外径值减去边框厚度值,当他们的值为负时,内径默认为0,最前面讲border-radius取值时就说过其值不能为负值。同时也说明border-radius的内外曲线的圆心并不一定是一致的。只有当边框厚度为0时,我们内外曲线的圆心才会在同一位置。

最后我们来说一下利用border-radius画一个圆,代码如下:

[css]

/*圆形*/
.p3
{
width: 100px;
height: 100px;
border: 2px solid orange;
/*比例知识:当宽高相等,border-radius属性设置为它们的一半市,我们就得到了一个圆形*/
border-radius:50px;
}

[/css]

最后我们看一下本章出现的部分实例 DEMO实例

最后感谢大家阅读,转载烦请注明出处 qdgcs.co.cc前端攻城记

posted @ 2012-03-23 13:46  _北北  阅读(655)  评论(1编辑  收藏  举报