CSS3小分隊-進擊的border-radius,css3border-radius

來源:互聯網
上載者:User

CSS3小分隊-進擊的border-radius,css3border-radius
上一篇:《CSS float屬性小解——”浮“生若水》

~~強勢插入~~如果有想進一步瞭解float屬性的小夥伴,可以猛戳上面的連結,《CSS float屬性小解——”浮“生若水》這篇文章加入了不少自己的想法,用例子討論了float到底有沒有脫離文檔流這個問題,也許能給你帶來意外的收穫哦~~~~~~

下面切入正題。

當CSS3披荊斬棘來到我們面前,我們看到的是一個操作起來更加簡便、更加炫目的html世界。如果當CSS3完全盛行起來,當多個主流瀏覽器開始相容一個個CSS3屬性,那麼無論是對於前端開發人員,還是對於坐在瀏覽器前瀏覽網頁的我們,都將是一件非常美妙的事情,那時才是“舊時王謝堂前燕,飛入尋常百姓家”。

對於進擊的CSS3小分隊,讓我們依次掀開它們華麗的面紗。第一個出場的是border-radius。

一、CSS2代碼產生圓角

在網頁設計中,圓角可以用來美化地區,在css2中,如果我們要製作一個圓角,方法也不少,只不過都相對複雜。比如,最方便的可以用圓角圖片,但是會增加http請求,使用者體驗稍差,沒有純程式碼來得快捷;用代碼的話可以用多個元素層疊的思想來“堆”出一個圓角,但是代碼較多,看著就煩。當然還有其他方法,小夥伴們可以發揮奇思妙想,但是應該絕對沒有border-radius來得酣暢直接。

不管是不是百戰不殆,知己知彼還是很有必要的,所以在此先用CSS2的代碼來產生圓角來看看效果:

 

思路是用多個div進行疊加,從而得到圓角的效果。上面兩個角和下面兩個角的div類順序相反即可,主體div來確定地區的大小。代碼如下:

HTML Markup

<!--左上方/右上方--><div class="r_top"><div class="r_a"></div><div class="r_b"></div><div class="r_c"></div><div class="r_d"></div><div class="r_e"></div><div class="r_f"></div><div class="r_g"></div><div class="r_h"></div></div><div class="box"><!-- 主體部分 --></div><!--左下角/右下角--><div class="r_bottom"><div class="r_h"></div><div class="r_g"></div><div class="r_f"></div><div class="r_e"></div><div class="r_d"></div><div class="r_c"></div><div class="r_b"></div><div class="r_a"></div></div>View Code

CSS Code

<!--左上方/右上方--><div class="r_top"><div class="r_a"></div><div class="r_b"></div><div class="r_c"></div><div class="r_d"></div><div class="r_e"></div><div class="r_f"></div><div class="r_g"></div><div class="r_h"></div></div><div class="box"><!-- 主體部分 --></div><!--左下角/右下角--><div class="r_bottom"><div class="r_h"></div><div class="r_g"></div><div class="r_f"></div><div class="r_e"></div><div class="r_d"></div><div class="r_c"></div><div class="r_b"></div><div class="r_a"></div></div>View Code

讓我們放大看一下效果:

 

該暴露的都暴露出來了。。。放大後8個div的稜角都顯現無遺。也許在瀏覽網頁的時候很少有人會放大好幾倍去看,但這至少是一個存在的問題。

以上是用CSS2的一種方法做出來的圓角效果,明顯的代碼重複,代碼繁多,放大後還會有稜角出現。如果要用同樣的思路產生一個圓角半徑更大的圓角,而且希望得到的圓角效果更加圓潤,那麼就需要增加更多的標籤,更多重複繁多的代碼,這並不是我們想看到的。

二、CSS3進擊的border-radius

CSS3中加入的border-radius很好的解決了上述的問題,著實給我們帶來了極大的便利。首先來看它的文法:

border-radius : none | <length>{1,4} [/ <length>{1,4} ]?

border-radius是一種簡寫屬性,用來設定border-*-radius的屬性,值可以取數值,也可以取百分數,四個值是按照top-left、top-right、bottom-right、bottom-left的順序即從上開始順時針來設定的。下面分八種情況來討論。

1、border-radius:20px;屬性後只有一個值,那麼即top-left、top-right、bottom-right、bottom-left圓角半徑相等,效果如下:

 

2、border-radius:20px 40px;屬性後有兩個值,那麼即top-left和bottom-right取第一個值,top-right和bottom-left取第二個值,即對角取值,效果如下:

 

3、border-radius:20px 30px 40px;屬性後有三個值,那麼即top-left取第一個值,top-right和bottom-left取第二個值,bottom-right取第三個值,其實還是按照top-left、top-right、bottom-right、bottom-left的順序即從上開始順時針來設定的,因為正常情況下top-right和bottom-left取值相等,所以第三個值自然是bottom-right,效果如下:

 

4、border-radius:20px 30px 40px 50px;屬性後有四個值,那麼按照按照top-left、top-right、bottom-right、bottom-left的順序即從上開始順時針來設定,依次取值,效果如下:

 

以上為基本的四種取值,接下來列出另外四種取值形式,下面四種形式其實是和上面四種形式沒有什麼區別的,只是設定了不同的水平半徑和垂直半徑而已:

5、border-radius:水平半徑/垂直半徑,即border-radius:20px/40px;即四個圓角均取同一個水平半徑和垂直半徑,其實屬於1的變形,效果如下:

 

6、border-radius:水平半徑1 水平半徑2/垂直半徑1 垂直半徑2,即border-radius:20px 30px/40px 50px;即top-left和bottom-right取水平半徑1和垂直半徑1,top-right和bottom-left取水平半徑2和垂直半徑2,其實屬於2的變形,效果如下:

 

7、border-radius:水平半徑1 水平半徑2 水平半徑3/垂直半徑1 垂直半徑2 垂直半徑3,即border-radius:20px 30px 40px/50px 60px 70px;即top-left取水平半徑1和垂直半徑1,top-right和bottom-left取水平半徑2和垂直半徑2,bottom-right取水平半徑3和垂直半徑3,其實屬於3的變形,效果如下:

 

8、border-radius:水平半徑1 水平半徑2 水平半徑3 水平半徑4/垂直半徑1 垂直半徑2 垂直半徑3 垂直半徑4,即border-radius:20px 30px 40px 50px/60px 70px 80px 90px;即順時針依次取值,其實屬於4的變形,效果如下:

 

當然,除了像素等單位,還可以用百分比符號作單位,不要忘記哦~~~~~~~~~

讓我們放大效果看一下:

 

放大以後,圓角依然是像素層級的,一下子感覺整個世界都圓潤起來了呢。

當然,border-radius也可以拆開寫

border-top-left-radius: <length>  <length>   //左上方border-top-right-radius: <length>  <length>  //右上方border-bottom-right-radius:<length>  <length>  //右下角border-bottom-left-radius:<length>  <length>   //左下角

PS:對於較老的瀏覽器請不要忘記添加可惡的瀏覽器首碼-moz-/-webkit-

三、這貨能幹什麼

border-radius能幹什麼就是廚師做菜的問題了,不一樣的廚師有不一樣的思想,有不一樣的手藝,做出來的菜肴也千差萬別。

有這樣的菜品:

 

也有這樣的菜品:

 

還有這樣橢圓的菜品:

 

或者來個圓圓的大餅等等:

 

如所示,border-radius為我們產生橢圓和圓提供了很大的便利,也為我們產生更多的圖案提供的更多的可能。

四、小了個結

配合其他屬性,發揮主觀能動性,border-radius可以做出很多優雅的效果。關於border-radius至此告一段落,希望能給需要的朋友帶來協助,有新的想法和問題也歡迎討論,有講的不對的地方還懇請批評指正。

~~再次強勢插入~~如果有想進一步瞭解float屬性的小夥伴,可以猛戳下面的連結,《CSS float屬性小解——”浮“生若水》這篇文章加入了不少自己的想法,用例子討論了float到底有沒有脫離文檔流這個問題,也許能給你帶來意外的收穫哦~~~~~~

 

上一篇:《CSS float屬性小解——”浮“生若水》

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.