圓角的實現(用最簡單的方法,我認為是這樣)

來源:互聯網
上載者:User
 

  



     

  這是我的一位同事總結的,寫得很好,在此分享一下

一、一張圖片完成圓角矩形的效果

為了避免介面的過於死板,設計人員經常會設計出圓角矩形的板塊來

放置內容。對於開發人員來說,這往往又成為一種負擔。在用table的

時代,人們往往會把圓角矩形分塊切成四塊,把表格弄成九宮格,在

四個角上分別塞上四張圓角圖片。至於四面的邊框,比較理想的做法

則是設定border。

到div的時代,大家會考慮用float的div浮動到四個角上,分別將其背

景圖片設定成切下來的四張圖片,邊框再想另外的辦法進行設定。

不過這種方法其實還是換湯不換藥,只不過把表格換成div,把img換

成背景圖片,其基本的思路還是如一樣支離破碎。

說它是支離破碎的思想,其實也是在看過百度hi首頁對圓角矩形的css

樣式設計以後才這麼認為的——因為他們的設計才是真正的簡單實用

,其模型就是一個邊框和一個圓形圖片。直角矩形加上矩形,然後在

四個角上放上四個小正方形,背景圖通過對background-position的設

置分別顯示圓形圖片的各個部分,這樣就化整為零,實現了圓角矩形

的基本模型了。接下來,將四個小正方形分別往外挪動1px的舉例,就

把四個角上原來的邊框覆蓋掉了。不妨來直接看看百度hi的首頁:

圖顯示的是圓角矩形右上方的一段代碼,看右邊的css代碼可知,這個

div被float:right設定到了右邊,然後被

position:relative,right:-1px,top:-1px等樣式使其往外邊框的頂部

和右邊凸出1px的距離,從而將原來在此處的直線邊框覆蓋住,讓其外

表顯示為圖片上的曲線。而圖片顯示的位置則被background-

position:right top設定為顯示右上方的部分,從而實現將圖片化整

為零的效果。舉一反三,其他角上的效果也可以通過同樣的辦法實現

在實際應用中,可能一個頁面上會存在若干個不同的圓角矩形效果。

有的顏色不一樣,有的圓角直徑不一樣,則可以將css中公用的部分提

取出來,只用額外再加上很少部分的代碼就能產生不同效果的圓角矩

形。比如像下面這樣的代碼:

.rect,.rect2

{width:8px;height:8px;position:relative;overflow:hidden;font

-size:1px;}.rect2{width:10px;height:10px;}.c1{background-

position:left top;top:-1px;left:-1px;float:left;}.c2

{background-position:right top;top:-1px;right:-

1px;float:right;}.c3{background-position:left bottom;bottom:

-1px;left:-1px;float:left;}.c4{background-position:right

bottom;bottom:-1px;right:-1px;float:right;}.cb{background-

image:url(/img/home/circle.gif);}.cb2{background-image:url

(/img/home/circle2.gif);}在使用的時候,c1,c2,c3,c4是公用的部

分,定義了四個角上的樣式,rect,rect2定義了四個角的大小,

cb,cb2定義了圓角部分的背景圖片,通過對這幾個樣式的聯合使用,

就可以創造兩種不同圓角矩形效果了。
比如:
<div style="border:solid 1px #F2F2F2;">
    <div class="rect c1 cb"></div>
    <div class="rect c2 cb"></div>
    圓角矩形1
    <div class="rect c3 cb"></div>
    <div class="rect c4 cb"></div>
</div>

<div style="border:solid 1px #F4F4F4;">
    <div class="rect2 c1 cb2"></div>
    <div class="rect2 c2 cb2"></div>
    圓角矩形2
    <div class="rect2 c3 cb2"></div>
    <div class="rect2 c4 cb2"></div>
</div>

將四個圓角的圖片放在一張圖片上,就將四次請求減少為一次了。對

於像百度hi這樣的高訪問量頁面來說,這筆帳算得可真是精明。

 

     

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.