CSS3實戰第一波 讓我們盡情的圓角吧

2022-05-01 02:39:11 字數 2493 閱讀 7183

如果說,wap2.0網頁的機型、瀏覽器適配給我們無線製作經理造成了巨大的心理陰影,那麼從iphone、android這些高階手機應用 起,我們終於可以慶幸比其他同行提前迎來了乙個新時代,這兩種高階手機上的safari mobile和google android瀏覽器近乎完美的渲染效果,讓css3有了盡情揮灑的天地。

在沒有css3 以前,或者說,在webkit沒有佔絕對的優勢以前,圓角對於製作經理來說,都是乙個糾結的死角。九宮格、n層div巢狀、乙個的十八般切法,甚至不 惜恐嚇威脅設計師:你再做圓角,我就死給你看!好吧,到了高階手機時代,這一切恩怨都可以拋下了,乙個html元素、幾行css,全部搞定。現在我們可以 擁抱設計師,大聲宣布:讓我們盡情圓角吧!事情要從我們無線的第乙個高階手機web應用——手機微博高階版說起,作為乙個完全針對高階手機的web專案, 經過我們初步測試,css3的絕大多數屬性都能在iphone、android這些高階手機自帶瀏覽器上完美表現,那麼,此時不用更待何時?!於是,我們 的設計gg就有了一次痛快淋漓的圓角體驗,請看這些圓角們:

css3新增實現圓角的方法有2種,border-raidus和border-image,前一種合適背景是純色填充,或能規律平鋪,且有純色border的元素,例如這些:

對於這類圓角元素,我們只需定義背景、邊框和圓角角度。以這個按鈕元素為例:

這個按鈕完整的**是這樣的:

發私信

其中-webkit開頭的屬性針對webkit核心瀏覽器生效,就是我們的iphone、android高階機自帶瀏覽器,-moz開頭的屬性 主要是因為一般除錯都是在firefox下進行,為除錯時展示正常效果而加。有些人還會再加個border-radius,這個大概對chrome和 ie9生效,對目前高階手機上的瀏覽器這一項暫時沒用,讓我們先捨棄它吧。

另外,需要說明的是,border-radius,顧名思義,是要有border,才有radius,設定border-radius時,border-width不能為0。而類似這樣直接給定義圓角的設計,趕緊給我住手!

其中,對於一些只有半邊有圓角的物件,還可以單獨定義,webkit和moz下單獨定義每個圓角的屬性分別如下:

-webkit-border-top-left-radius:5px;

-webkit-border-top-right-radius:5px;

-webkit-border-bottom-left-radius:5px;

-webkit-border-bottom-right-radius:5px;

-moz-border-radius-topleft:5px;

-moz-border-radius-topright:5px;

-moz-border-radius-bottomleft:5px;

-moz-border-radius-bottomright:5px;

這類元素或多或少,因為一兩個畫素的陰影、發光效果不能完全平鋪,就可以利用border-image的九宮格原理,由一張來定義背景、邊 框、圓角。這種做法的缺陷是邊框、圓角和背景都是上固定的,只能水平或垂直拉伸元素寬度,不能直接通過css修改角度和元素高度或寬度。儘管如此,我 們還是要感謝這個css屬性帶來的全新體驗。

以這個按鈕為例:

它的背景是這樣乙個內發光、陰影的樣式,平鋪的話陰影還好說,但是左側的內發光就不好處理:

其中1、3、7、9作為四個角的背景;

2、4、6、8作為四個邊的背景,如果不想改變原有按鈕設計質感,只能2、8橫向拉伸;

中間的5作為中間部分的背景,同樣,要保持設計質感,只能橫向拉伸。

border-image的具體寫法是:

-webkit-border-image:url(blogimg/border.png) 5 5 5 5 repeat repeat;

-moz-border-image:url(blogimg/border.png) 5 5 5 5 repeat repeat;

其中第乙個引數是路徑;

第2-5個引數是九宮格分割時分別距離上、右、下、左的距離,可以簡寫成1-3個,注意,這裡的數值沒有單位(幾次效果沒出來,查了半天發現都是因為這裡習慣性的加了px,杯具),但是可以使用百分比;

最後兩個引數是x、y方向重複的方式,有round(平鋪),repeat(重複),stretch(拉伸)三種方式,預設是stretch,可簡寫成0-1個。

對於我們常用的按鈕來說,在橫向無論平鋪、重複,還是拉伸,效果都是一樣的。

這個按鈕完整的**是這樣的:

注意,這裡border-width必須配合使用,分別對應九宮格分隔出來的四條邊的寬度。其實即使是九宮格分割出來了4條邊,我們完全可以不使用 其中任何一條,只要將這條邊的border-width設定為0即可,這對用一張完整的圓角實現一對個半圓角按鈕是很有用的:

另外,在有border-image的情況下,定義其他樣式的border都是無效的。

好吧,最後,按照慣例,我們要感謝國家、感謝組織、感謝iphone、感謝賈伯斯,讓我們有了這一次偉大的實踐機會!願web標準早日一統天下,我們才能真正暢享css3的美好世界!

開題第一波,開胃菜,簡單的

聯想筆試題 1 設計函式 int atoi char s 2 int i j 4,k 8,l 16,m 32 printf d i 輸出是多少?3 解釋區域性變數 全域性變數和靜態變數的含義。4 解釋堆和棧的區別。5 論述含引數的巨集與函式的優缺點。google 面試題 1.下面哪項不是鍊錶優於陣列...

字串函式的實現(第一波)

首先我們來看看msdn庫里函式的大概模型 strcpy函式的功能就是字串拷貝,我們可以用指標移動賦值來實現 一直到 0 停止 根據函式功能我們可以寫出如下 define crt secure no warnings 1 include include char my strcpy char dest...

CSS3實戰 第一天

學習使用純css3畫實心圓 上 下 左 右半圓。實心圓 circle 實心上半圓 upcircle 實心下半圓 downcircle 實心左半圓 leftcircle 實心右半圓 rightcircle 對於上面的css 我們首先需要明白,要繪製圓角,我們需要使用border radius來實現。它...