An Experiment in Rounded Corners

今天下午突然有了一個想法,那就是在Internet Explorer中一定有簡單的實現圓角的方式。不幸的是,我開始的想法完全失敗了,跟以前一樣在同樣的地方停了下來。然而,我想試一下 VML 。VML是一個基於XML的方式,並且Microsoft已經推薦給了 W3C 。

要使VML可用的語法真的很沉重。你必須爲 VML 元素定義一個 behavior ,包含 VML namespace ,然後使用VML語法。是不是很奇怪它沒有被web developers熱衷。

下面的代碼包含了 VML namespace 然後聲明瞭前綴 prefix  v 來使用所有 VML元素。

<xml:namespace ns="urn:schemas-microsoft-com:vml" prefix="v" />

使用VML的 roundrect 元素可以支持圓角矩形。下面是基本的語法,我讓它包含一些基本的內容。注意前綴 v:prefix 。

<v:roundrect arcsize=".02" fillcolor="#000">

Lorem ipsum dolor sit amet, consectetuer adipiscing

</v>

圓角矩形有許多屬性,包括這裏用到的 arcsize 和 fillcolor 。不幸的是,不知道怎麼通過 CSS 來聲明 fill color ,這使得你得在兩個獨立的地方定義 fill color 。如果你想使用背景圖片,你需要查看 VML 的 fill 。

arcsize 與元素的 element size 相關,很不幸,因爲 box 的大小可能不同。

最後,我們需要一些CSS來使 VML 生效。

v\:roundrect {

behavior: url(#default#VML);

}

接下來,讓這個元素的樣式可以在其他瀏覽器中使用 (在IE中可能會表現的稍微差一點)。

v\:roundrect {

color: #FFF;

display: block;

background-color: #000;

-moz-border-radius: 10px;

-webkit-border-radius: 10px;

border-radius: 10px;

padding: 20px;

height: 100%;


/* IE-specific */

behavior:url(#default#VML);

/background-color: transparent;

}

所有瀏覽器都認識這個不尋常的元素,字體顏色被設置了,元素被設置爲 display: block 。Border-radius把它設置爲圓角。最重要的是,我使用了 IE hack 把背景色去掉。否則,你將得到一個圓角黑盒子,下面是一個方形的黑盒子。換句話說,就是一個 方盒子。

(你可以把 hack 放在獨立的文件中,通過條件註釋引入,我這裏是爲了簡單纔在這用 hack。)


最後一點注意,這在IE8下不會生效,但是可以在IE5到IE7中使用。

Feel free to check out the demo page.


原文地址:

http://snook.ca/archives/html_and_css/rounded_corners_experiment_ie/

發佈了0 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章