睡蓮‧池水間

Guest
2012-Feb-12  
0 位會員和 8 位訪客在線上

文章 :: 標準之路

IE 8 不再支援 CSS Expression

睡蓮
 
池水間 
IE 8 不再支援 CSS Expression
上星期IE在官方blog中公佈了IE 8 版本在標準模式下,不再支援CSS Expression。從網頁標準的角度來看,這消息無疑令人振奮,至少看到了微軟兌現網頁標準的承諾,不斷在技術方面下功夫。

何謂CSS Expression?就是在CSS的屬性後面插入程式碼,且支援自定義屬性,專用於IE瀏覽器。我慣常的做法是遇到IE不支援CSS屬性的時候才會用到,通常針對IE 6 以下版本的居多。IE 7 對CSS支援情況相對於IE 6 來說已有少許改進,會用到CSS Expression的情況較IE 6 以下來得少。

舉個簡單例子,當要給寬度設定上或下限時,一般的屬性標準寫法是:max-width或 min-width,但這種屬性在IE 6以下版本無效,這時候便用CSS Expression方法來解決,算是CSS Hack的一種。

例如給<div id="example"></div>設定了100%寬度時,指定下限寬度為600px,按標準的寫法是:

#example{
          width:100%;
          min-width:600px;
          }

min-width在大部份支援網頁標準的瀏覽器下都有效,唯是IE 6以下版本無效,這時候便插入CSS Exprission如下:

#example{
          width:100%;
          min-width:600px;
          width:expression(this.Width < 600 ? "600px" : "100%" );
          }

但是插入CSS Expression換來的代價,就是不能通過W3C標準驗證。

解決的方法是使用IE 條件註釋,將CSS Exprission從選擇符中抽離出來,在html檔裡的<head>與</head>之間插入如下代碼:

<!--[if lt IE 7]>
<style type="text/css">
/*<![CDATA[*/
#example{
              width:expression(this.Width < 600 ? "600px" : "100%" );
}
/*]]>*/
</style>
<![endif]-->

<!--[if lt IE 7]>意思是如果IE版本小於7 ,就使用裡面的代碼,否則就略過。這樣的用法保證CSS和HTML檔皆能通過W3C標準驗證。

另外,上文提及支援自定義屬性的CSS Expression,就如自定義id和class選擇符一樣,可以隨意給屬性這樣定義:waterlily:expression。

CSS Expression用法就是這麼有彈性,但終究不是網頁標準的用法。IE 8的決定,讓CSS與程式碼各歸其位,該用CSS的時候用CSS,該用程式碼時就回去用Javascript。

    «« 49個影響網站排名的因素 - 完整版 網站重構到底是什麼 »»    

引用

  • 文章地址: http://waterlily-lsl.com/modules/article/view.article.php/c1/91
  • 引用地址: http://waterlily-lsl.com/modules/article/trackback.php/91

評分

10
9
8
7
6
5
4
3
2
1


 

API: RSS | RDF | ATOM

回覆及設定

    關閉


 

最 新 發 表 及 資 訊 區

此為池水間 banner ,需要安裝 Adobe Flash Player 才能觀看內容。

最新留言

最新留言:2012-Jan-6 11:13am
留言編號:76
留言者: wuji888
網主回覆:
總留言數: 71

前往萍踪留影

造訪統計

今天:311
昨天:544
本週:311
本月:6151
總計:376535
平均:292

連結

Powered By XOOPS
Valid XHTML 1.1
Valid CSS 3
登 入