FF與IE關於height width理解的差異

2021-06-16 00:31:00 字數 1305 閱讀 6758

最近在做網頁的過程中遇到了一些瀏覽器的標準問題,這裡想把最有心得的地方寫下來。

由於我的電腦上只安裝了ie6.0和firefox,所以目前只能在這兩個環境下測試。最初的頁面是在ie6.0環境下開發,等噴了一地血總算弄出了想要的版式以為大功告成時用firefox一檢視所有的div的位置都亂七八糟,超級鏈結的樣式也走了型。才知道前面噴的血只是熱身罷了。引發問題的地方一部分是由於預設設定的不同,還有一部分是標準的差異,以下只說最有心得的地方,其它亂七八糟的問題一概不提了。

最讓人頭疼的是ie6.0與firefox對width和height屬性的作用域不同。在網上查的時候有人說ff會把padding的值加到width和height上,但我覺得那樣理解不對,歸根結底還是作用域的不同引起的。網頁裡乙個容器從外向裡有四層:margin(邊距),bording(邊框),padding(填充距),content(內容)。在ie6.0中width和height兩個屬性的作用域是margin以內的內容而即padding+bording+content,而在ff中width和height的作用域是content。對於這種差異在兩種瀏覽器中檢視以下**就明白了。

這個容器在ie6.0和firefox下相同嗎?

以上**產生的容器的大小明顯不一樣。

在網上查的資料中有一種方法是利用了瀏覽器之間對**理解能力的差異性來解決這種問題。期中一種是利用ie6.0和ff對!imprtant的理解能力,即ie6.0不會優先處理!important的**,但由於有文章說這種方法會在ie7.0產生新的問題,所以我沒有嘗試。還有種方法,**如下:

#topbar /* moz */

* html #topbar /* ie6 */

*+html #topbar /* ie7 */

課以看到各個瀏覽器對這三斷的理解能力是不同的。這段**很有效,借助它我完成了頁面對ff的相容。但我認為瀏覽器之間標準的差異性本來就是一種錯誤,那麼利用差異來解決差異只是一種錯上加錯,時下流行的說法就是不和諧,以後在別的瀏覽器上還可能會出現更大的問題。所以最終我還是摒棄了這種方法。我的最終解決方法是利用了瀏覽器對**理解的共同點來達到同樣的目的,求同而不存異,大和諧。我先用乙個容器來定義width和height,然後再在這個容器裡面巢狀容器來定義padding,border,這樣,對不同瀏覽器這些的理解是不會存在不同的,即盡最大的可能求同。如下**產生的容器在不同的瀏覽器裡看應該是相同的了:

雖然這段**相比上面的長很多,但按照模組來看的話不難理解,每個容器完成自己該完成的任務,絕不多做少做,我知道會發生什麼,不可能出現我所意料之外的事情,我想這樣很好。當然,這個方法有很大的缺陷,就是容器是死的,大小絕對不能改變,所以我想在可以的情況下還是要避免,只在個別情況下才能適用。

IE與FF的CSS區別

ie和ff對盒模型的解釋區別 ie和ff對盒模型的解釋也不一樣,說明 test test 顯示的寬頻是 650px ie box的總寬度是 width padding border margin寬度總和 ff box的總寬度就是 width的寬度,padding border margin的寬度在含...

ie與火狐ff的區別

1.document.formname.item itemname 問題 說明 ie下,可以使用 document.formname.item itemname 或 document.formname.elements elementname firefox下,只能使用 document.formn...

IE和FF區別關於css和js

css 1.ul標籤ff中有padding值,沒有margin,ie中相反 解決辦法 將ul的padding和margin都設為0,js1.ie中innertext在火狐中沒有,使用textcontext 2.在ajax中返回物件狀態ie使用readystate,火狐中必須是readystate,所...