1. 程式人生 > 其它 >CSS3圓角邊框“完全解讀”

CSS3圓角邊框“完全解讀”

HTML5學堂小編:圓形,一個很奇妙的形狀,在各種地方都可以看得到,特別是現在各類網站,都會有各種的圓形。圓角的製作曾經困擾了開發者很久,以至於以前開發者只能使用圖片來替代。但是當CSS3的這個border-radius出現之後,對於開發者而言簡直就是福利,只需要在需要圓的地方給上一句程式碼就可以了。一起來學習學習吧~~~

如何理解border-radius

border-radius——CSS3的圓角屬性。但是除了圓角的定義外,它還可以做點別的事情。radius其實指的是邊框所在圓的半徑,這個CSS3屬性不僅能夠建立圓角,還可以建立橢圓角(如圖下圖第2),而把這些角按照不同的順序和大小來展現,也能夠繪製成多種多樣的圖形。以下圖例就是通過定義border-radius得到的效果。

基本語法

想要完成上述的這些圖例,我們及很有必要來了解一下其語法到底是怎麼樣的。書寫形式如下:

border-radius : none | {1,4} [/ {1,4} ]?;

none代表的是不設定圓角。後面的引數值代表水平或者垂直方向的圓角值設定,其中前部分引數{1,4}代表水平方向的值,後部分引數[/ {1,4} ]?代表垂直方向的值,可省略。

提醒:border-radius是CSS3的屬性,書寫的時候建議加上核心字首。

border-radius可以通過值來定義樣式相同的角,也對每個角分別定義。下面的圖解釋了各個寫法所表示的效果。

針對圓角的設定,每個角上的兩個值分別代表該角的水平方向和垂直方向的半徑,上圖有4個值與8個值的解釋,對比看下圖,理解起來可以更清楚一些。

詳細案例分析

把上述的基本圖形進行組合,還可以描繪成不同的圖案,如下面的幾個簡單舉例。僅border-radius就能實現這麼豐富的圖案,如果我們再加上邊框大小、顏色等,將會新增更多的質感。

1)Pac-Man

經典的“吃豆人”遊戲是一個缺了四分之一的圓形,把它畫出來,那必然是需要用到圓角屬性的,當然除了圓角,還需要藉助一個transparent(指定全透明色彩)屬性來配合。如下的程式碼案例:

.pac-man {
    width: 0px;
    height: 0px;
    border: 60px solid yellow;
    border-color: yellow transparent yellow yellow ;
    -webkit-border-radius: 60px;
    -moz-border-radius: 60px;
    -ms-border-radius: 60px;
    border-radius: 60px;
}
<div class="pac-man"></div>

效果如下:

程式碼解析:上述案例中,我們主要是寫了一個寬高都為0,但是邊框大小是60px的圓,然後藉助transparent屬性讓這個圓形的右邊變成透明,以此來呈現一個“吃豆人”的形象。

2)"愛心"製作

"愛心"這個標示會出現在各種不同的場合,聊天的表情、某網頁的圖示都有愛心這個形狀,藉助圓角能不能製作愛心,要怎麼做?

本例中,就使用圓角,藉助偽元素:before和:after以及CSS3中的旋轉為大家制作了一個"愛心"。具體程式碼如下:

.heart{
    position: relative;
    width: 160px;
    height: 200px;
} 
.heart:before{
    position: absolute;
    left: 20px;
    width: 80px;
    height: 120px;
    content: " ";
    background: #f00;
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px 100px 0 0;
    -webkit-transform: rotate(-45deg);
} 
.heart:after{
    position: absolute;
    left: 48px;
    top: 0px;
    width: 80px;
    height: 120px;
    content: " ";
    background: #f00;
    -moz-border-radius: 100px;
    -webkit-border-radius: 100px;
    border-radius: 100px 100px 0 0;
    -webkit-transform: rotate(45deg);
}
<div class="heart"></div>

效果如下:

程式碼解析:上述案例中,藉助偽元素來實現兩個左上角和右上角都出現圓角的塊狀,減少了div的使用。然後藉助CSS3的另外一個特性-旋轉,分別正向和逆向完成一個愛心的拼接,最後展現出來。

3)陰陽圖

本案例展示了一個陰陽圖的做法,通過使用標籤的偽元素、元素邊框以及定位的操作,用層疊的視覺效果給大家展示一個"八卦"的樣子。具體的程式碼如下:

.wrap .gossip {
    position: relative;
    width: 96px;
    height: 48px;
    border-color: #000;
    border-style: solid;
    border-width: 2px 2px 50px 2px;
    background: #fff;
    border-radius: 100%;
}
.wrap .gossip:before {
    position:
    absolute;
    top: 50%;
    left: 0;
    width: 12px;
    height: 12px;
    border: 18px solid #000;
    background: #fff;
    content: "";
    border-radius: 100%;
}
.wrap .gossip:after {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 12px;
    height: 12px;
    border: 18px solid #fff;
    background: #000;
    content: "";
    border-radius:100%;
} 
<div class="gossip"></div>

效果如下:

程式碼解析:上述案例中,陰陽圖的上半部分是寬高度展示的,下半部分是元素的邊框展示的,然後藉助兩個偽元素記憶偽元素的邊框來實現黑色和白色的小圓,從而實現整個陰陽圖的製作。