DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> CSS入門知識 >> CSS詳解 >> IE與Firefox下對CSS解析的區別(4)
IE與Firefox下對CSS解析的區別(4)
編輯:CSS詳解     
陳舊的IE“雙倍占據”

原樣的相同代碼被在IE/Win中浏覽時以些微不同的方式顯示,下面的圖釋展示了IE/Win在布局上所做的。

這為什麼會發生?別問這種傻問題!這就是IE,記得嗎?符合標准只是理想的狀況,不指望實現,這個簡單的事實正驗證了。

重點

這個Bug僅當浮動邊界和浮動元素的方向相同時出現在浮動元素和容器盒的內邊緣之間,在這之後的任意有著相似邊界的浮動元素不會呈現雙倍邊界。只有特定的浮動行的第一個浮動元素會遭遇這個Bug。像居左的情況一樣,雙倍邊界同樣神秘地顯示在居右的相同方式。

最後,修復辦法!

直到現在(04年1月)這個Bug一直被認為是無法修復的,通常用來替代錯誤的邊界的控制方法如:一個不可視浮動元素的左邊距,連同一個內嵌的盒子一起,可視的盒子裝在不可視浮動元素裡;或者使用技巧僅對IE/Win設定邊界的1/2值。這辦法生效了,但是是混亂的而且搞糟了干淨的源代碼。不過現在全部結束
了。

SteveClason發現了一個修復辦法,描述在他的GuestDemo裡,修復了雙倍邊界和圍繞文字縮進Bug。這是一個經典的IE的Bug修復辦法,使用一個屬性來修復影響不相關屬性的Bug。

現在如何來做?

研究它,簡單地將{display:inline;}設置給浮動元素就是全部所需做的!是的,聽起來太簡單了,不是嗎?不過這是真的,僅僅一個display的”inline”聲明已經能夠勝任了。

熟悉規則的人知道浮動元素自動設置為”block”元素,而不管他們之前是什麼。就如Steve從W3C裡指出:

9.5.1Positioningthefloat:the‘float’property

“ThispropertyspecifIEswhetheraboxshouldfloattotheleft,right,ornotatall.Itmaybesetforelementsthatgenerateboxesthatarenotabsolutelypositioned.Thevaluesofthispropertyhavethefollowing
meanings:

left
Theelementgeneratesablockboxthatis
floatedtotheleft.Contentflowsontherightsideofthebox,
startingatthetop(subjecttothe‘clear’property).The‘display’is
ignored,unlessithasthevalue‘none’.

right
Sameas‘left’,butcontentflowsontheleftsideofthebox,startingatthetop.

none
Theboxisnotfloated.“

這說明浮動元素上的{display:
inline;}會被忽略,事實上所有的浏覽器沒有呈現任何改變,包括IE。但是,它不知何故讓IE停止將浮動元素的邊界翻倍。因而,這個修復辦法可以被直接應用,而沒有任何繁瑣的隱藏方法。如果將來的一款浏覽器決定對這個修復辦法抱恙,只要把這個修復裝入IE獨用的TanHack裡,細節如同IEThreePixelText-JogDemo。

下面是兩個使用了前面相同代碼的生動演示,第一個照常顯示了IE的Bug,下一個對浮動元素使用了”inline”修復。

  1. .floatbox{
  2. float:left;
  3. width:150px;
  4. height:150px;
  5. margin:5px05px100px;
  6. display:inline;
  7. }

Update(20060828):

6、空

  • 解析問題。

    在FF下空

  • 是不被解析的,也就是說,
  • 標簽所帶的CSS樣式是不被解釋的。但是在IE下空
  • 是一樣會被解析的。
    例如我定義如下CSS:

    1. #sidebarulli{
    2. list-style-type:none;
    3. list-style-image:none;
    4. margin-bottom:15px;
    5. }

    而我的sidebar使用了一個空的

  • 。那麼在FF下不被解析,而在IE下會出現15px的空白。

    【編輯推薦】

    1. IE和火狐的CSS兼容性問題歸總
    2. 微軟展示IE9浏覽器 力推IE8將取代IE6市場
    3. 探究IE和Firefox下的2款HTTP調試工具用法
    4. Firefox和IE浏覽器清除緩存方法揭秘
    5. 實現IE6、IE7、IE8多版本浏覽器共存的五種方法
  • XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
    Copyright © DIV+CSS佈局教程網 All Rights Reserved