非主流瀏覽器Nascape中CSS的顯示與IE的差別_CSS教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
盡管Nascape瀏覽器已經(jīng)是非主流。但我們從顯示差別的研究中,還是可以學(xué)習(xí)到很多兼容方面的知識(shí),拓展我們的思維。
我們?cè)谶M(jìn)行網(wǎng)頁(yè)布局的時(shí)候要對(duì)付的最棘手情況之一是:相同的CSS代碼被不同的瀏覽器解釋后會(huì)生成不同的效果。在以前,各種不同的瀏覽器生成極其不同的頁(yè)面是隨處可見的,而現(xiàn)在我們可以用所謂的符合標(biāo)準(zhǔn)的瀏覽器獲得更好的效果。然而,顯示效果的差別還是無法避免。
當(dāng)前處于領(lǐng)導(dǎo)地位的一些瀏覽器在處理浮動(dòng)效果上就存在著這樣的差別。假如有人想創(chuàng)建一個(gè)能夠隨著瀏覽器窗口的大小變化而動(dòng)態(tài)更改大小多欄的布局,那么這將是一個(gè)非凡麻煩的問題。
簡(jiǎn)單的沒有浮動(dòng)的頁(yè)面
假設(shè)你有兩個(gè)div——div#one和div#two,它們都有固定的寬度。假如沒有浮動(dòng)或者絕對(duì)的定位,這些div就會(huì)以一個(gè)摞在另一個(gè)之上的形式放在瀏覽器窗口的左側(cè)(如例A所示),因?yàn)闃?biāo)準(zhǔn)的頁(yè)面安排順序是從左到右,從上到下,塊級(jí)元素(block-level element)都會(huì)在前一個(gè)元素下面緊接著開始一個(gè)新的行。
下面是所有例子都需要的一段HTML:
下面的CSS代碼用于基本的、不帶浮動(dòng)的版本:
基本的浮動(dòng)
當(dāng)你創(chuàng)建一個(gè)包含有float: left或者float: right屬性的CSS樣式,并把它應(yīng)用到諸如div標(biāo)簽這樣的塊級(jí)元素上的時(shí)候,div就會(huì)從文檔的普通文本安排順序里被刪除,并被強(qiáng)制放到包含元素(containing element)的左側(cè)或者右側(cè)。假如包含元素是一個(gè)主體標(biāo)簽,那么div就會(huì)浮動(dòng)到瀏覽器窗口的一側(cè)。否則,浮動(dòng)的div就會(huì)移動(dòng)到包含div的邊緣,而以前是不會(huì)這樣的。
假如你有一個(gè)以上的浮動(dòng)元素,那么第二個(gè)和隨后的浮動(dòng)元素會(huì)緊接著第一個(gè)排成一條,其排列方式非常像文本里的一行字母。一系列浮動(dòng)元素會(huì)對(duì)齊成一行,直到撐滿瀏覽器窗口的整個(gè)寬度,然后換到下一行,就像段落里的文字那樣排列。
固定寬度的浮動(dòng)
只要div#one和div#two具有固定寬度,而且其總寬度小于瀏覽器窗口的寬度,它們就會(huì)像例B所示的那樣緊挨著排在一起。幾個(gè)大的瀏覽器在處理固定寬度浮動(dòng)的方式上保持著相當(dāng)?shù)囊恢滦浴O旅娴腃SS代碼所生成的頁(yè)面在IE6、Netscape 7、Mozilla 1和Opera 7里顯示出來是一模一樣的。
可變寬度的浮動(dòng)帶來了可變的結(jié)果
當(dāng)你想把div變成寬度可變的時(shí)候,生成浮動(dòng)效果不一致的問題就浮現(xiàn)出來了。例如,假設(shè)你想要在頁(yè)面的左側(cè)放一個(gè)固定寬度欄,用于導(dǎo)航按鈕的列表,而想在右側(cè)放另外一個(gè)欄,讓它根據(jù)瀏覽器窗口(的大�。┳杂蓴U(kuò)展和收縮。
你可能會(huì)認(rèn)為自己用兩個(gè)左側(cè)浮動(dòng)的div就能實(shí)現(xiàn)這個(gè)效果;一個(gè)是固定寬度的,而另一個(gè)把寬度設(shè)定為自動(dòng),讓div自動(dòng)調(diào)整大小,這樣它就能夠填補(bǔ)第一個(gè)div和瀏覽器窗口右側(cè)之間的空白。例C就是下面代碼顯示的結(jié)果:
假如在IE里顯示這個(gè)例子,你會(huì)獲得預(yù)計(jì)的效果,即左邊是固定寬度的欄,緊挨著它右側(cè)的是一個(gè)可變寬度的欄;但是,相同的代碼在其他當(dāng)前流行的瀏覽器上卻會(huì)生成不同的結(jié)果。第二個(gè)div會(huì)掉到第一個(gè)的下面,而不是接著這一行放在右邊。結(jié)果就和不帶浮動(dòng)的頁(yè)面非常類似。
解決方案
要獲得這種兩欄布局,其中一欄能夠自動(dòng)調(diào)整大小的理想效果的一種解決方案是對(duì)第一欄使用浮動(dòng)div,但是要從必須調(diào)整大小的那一欄里把浮動(dòng)刪掉。由于浮動(dòng)欄和普通的文檔安排順序是分離的,所以常規(guī)的div會(huì)被放在上方,但是在浮動(dòng)div的下方。在左邊添加一個(gè)padding,并讓其等于浮動(dòng)div的寬度,而常規(guī)div的內(nèi)容看起來就會(huì)像是放在左邊div右側(cè)的一個(gè)欄里。例D說明了這個(gè)技巧。下面的代碼能夠在當(dāng)前所有的瀏覽器里生成相同的效果。
盡管當(dāng)前Netscape/Mozilla瀏覽器一般都被認(rèn)為要比IE更加符合標(biāo)準(zhǔn),但是我個(gè)人認(rèn)為IE生成浮動(dòng)元素的效果要比前兩個(gè)瀏覽器更加一致。但是假如不考慮哪一個(gè)生成的效果是“正確的”,那么其差別就會(huì)給Web建造者帶來最頭疼的問題。要避免你的頁(yè)面設(shè)計(jì)出現(xiàn)問題,知道瀏覽器生成的效果會(huì)有所不同是第一步,也是最重要的一步。
我們?cè)谶M(jìn)行網(wǎng)頁(yè)布局的時(shí)候要對(duì)付的最棘手情況之一是:相同的CSS代碼被不同的瀏覽器解釋后會(huì)生成不同的效果。在以前,各種不同的瀏覽器生成極其不同的頁(yè)面是隨處可見的,而現(xiàn)在我們可以用所謂的符合標(biāo)準(zhǔn)的瀏覽器獲得更好的效果。然而,顯示效果的差別還是無法避免。
當(dāng)前處于領(lǐng)導(dǎo)地位的一些瀏覽器在處理浮動(dòng)效果上就存在著這樣的差別。假如有人想創(chuàng)建一個(gè)能夠隨著瀏覽器窗口的大小變化而動(dòng)態(tài)更改大小多欄的布局,那么這將是一個(gè)非凡麻煩的問題。
簡(jiǎn)單的沒有浮動(dòng)的頁(yè)面
假設(shè)你有兩個(gè)div——div#one和div#two,它們都有固定的寬度。假如沒有浮動(dòng)或者絕對(duì)的定位,這些div就會(huì)以一個(gè)摞在另一個(gè)之上的形式放在瀏覽器窗口的左側(cè)(如例A所示),因?yàn)闃?biāo)準(zhǔn)的頁(yè)面安排順序是從左到右,從上到下,塊級(jí)元素(block-level element)都會(huì)在前一個(gè)元素下面緊接著開始一個(gè)新的行。
下面是所有例子都需要的一段HTML:
示例代碼 [hl5o.cn]
<body>
<div id="one">
Port side text...
</div>
<div id="two">
Second column text...
</div>
</body>
<div id="one">
Port side text...
</div>
<div id="two">
Second column text...
</div>
</body>
下面的CSS代碼用于基本的、不帶浮動(dòng)的版本:
示例代碼 [hl5o.cn]
div#one {
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
width: 300px;
padding: 0px 10px 5px 10px;
margin: 0px;
background-color: silver;
}
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
width: 300px;
padding: 0px 10px 5px 10px;
margin: 0px;
background-color: silver;
}
基本的浮動(dòng)
當(dāng)你創(chuàng)建一個(gè)包含有float: left或者float: right屬性的CSS樣式,并把它應(yīng)用到諸如div標(biāo)簽這樣的塊級(jí)元素上的時(shí)候,div就會(huì)從文檔的普通文本安排順序里被刪除,并被強(qiáng)制放到包含元素(containing element)的左側(cè)或者右側(cè)。假如包含元素是一個(gè)主體標(biāo)簽,那么div就會(huì)浮動(dòng)到瀏覽器窗口的一側(cè)。否則,浮動(dòng)的div就會(huì)移動(dòng)到包含div的邊緣,而以前是不會(huì)這樣的。
假如你有一個(gè)以上的浮動(dòng)元素,那么第二個(gè)和隨后的浮動(dòng)元素會(huì)緊接著第一個(gè)排成一條,其排列方式非常像文本里的一行字母。一系列浮動(dòng)元素會(huì)對(duì)齊成一行,直到撐滿瀏覽器窗口的整個(gè)寬度,然后換到下一行,就像段落里的文字那樣排列。
固定寬度的浮動(dòng)
只要div#one和div#two具有固定寬度,而且其總寬度小于瀏覽器窗口的寬度,它們就會(huì)像例B所示的那樣緊挨著排在一起。幾個(gè)大的瀏覽器在處理固定寬度浮動(dòng)的方式上保持著相當(dāng)?shù)囊恢滦浴O旅娴腃SS代碼所生成的頁(yè)面在IE6、Netscape 7、Mozilla 1和Opera 7里顯示出來是一模一樣的。
示例代碼 [hl5o.cn]
div#one {
float: left;
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
float: left;
width: 300px;
padding: 0px 10px 5px 10px;
margin: 0px;
background-color: silver;
}
float: left;
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
float: left;
width: 300px;
padding: 0px 10px 5px 10px;
margin: 0px;
background-color: silver;
}
可變寬度的浮動(dòng)帶來了可變的結(jié)果
當(dāng)你想把div變成寬度可變的時(shí)候,生成浮動(dòng)效果不一致的問題就浮現(xiàn)出來了。例如,假設(shè)你想要在頁(yè)面的左側(cè)放一個(gè)固定寬度欄,用于導(dǎo)航按鈕的列表,而想在右側(cè)放另外一個(gè)欄,讓它根據(jù)瀏覽器窗口(的大�。┳杂蓴U(kuò)展和收縮。
你可能會(huì)認(rèn)為自己用兩個(gè)左側(cè)浮動(dòng)的div就能實(shí)現(xiàn)這個(gè)效果;一個(gè)是固定寬度的,而另一個(gè)把寬度設(shè)定為自動(dòng),讓div自動(dòng)調(diào)整大小,這樣它就能夠填補(bǔ)第一個(gè)div和瀏覽器窗口右側(cè)之間的空白。例C就是下面代碼顯示的結(jié)果:
示例代碼 [hl5o.cn]
div#one {
float: left;
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
float: left;
width: auto;
padding: 0px 10px 5px 10px;
margin: 0px;
background-color: silver;
}
float: left;
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
float: left;
width: auto;
padding: 0px 10px 5px 10px;
margin: 0px;
background-color: silver;
}
假如在IE里顯示這個(gè)例子,你會(huì)獲得預(yù)計(jì)的效果,即左邊是固定寬度的欄,緊挨著它右側(cè)的是一個(gè)可變寬度的欄;但是,相同的代碼在其他當(dāng)前流行的瀏覽器上卻會(huì)生成不同的結(jié)果。第二個(gè)div會(huì)掉到第一個(gè)的下面,而不是接著這一行放在右邊。結(jié)果就和不帶浮動(dòng)的頁(yè)面非常類似。
解決方案
要獲得這種兩欄布局,其中一欄能夠自動(dòng)調(diào)整大小的理想效果的一種解決方案是對(duì)第一欄使用浮動(dòng)div,但是要從必須調(diào)整大小的那一欄里把浮動(dòng)刪掉。由于浮動(dòng)欄和普通的文檔安排順序是分離的,所以常規(guī)的div會(huì)被放在上方,但是在浮動(dòng)div的下方。在左邊添加一個(gè)padding,并讓其等于浮動(dòng)div的寬度,而常規(guī)div的內(nèi)容看起來就會(huì)像是放在左邊div右側(cè)的一個(gè)欄里。例D說明了這個(gè)技巧。下面的代碼能夠在當(dāng)前所有的瀏覽器里生成相同的效果。
示例代碼 [hl5o.cn]
div#one {
float: left;
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
width: auto;
padding: 0px 10px 5px 160px;
margin: 0px;
background-color: silver;
}
float: left;
width: 150px;
margin: 0px;
background-color: red;
}
div#two {
width: auto;
padding: 0px 10px 5px 160px;
margin: 0px;
background-color: silver;
}
盡管當(dāng)前Netscape/Mozilla瀏覽器一般都被認(rèn)為要比IE更加符合標(biāo)準(zhǔn),但是我個(gè)人認(rèn)為IE生成浮動(dòng)元素的效果要比前兩個(gè)瀏覽器更加一致。但是假如不考慮哪一個(gè)生成的效果是“正確的”,那么其差別就會(huì)給Web建造者帶來最頭疼的問題。要避免你的頁(yè)面設(shè)計(jì)出現(xiàn)問題,知道瀏覽器生成的效果會(huì)有所不同是第一步,也是最重要的一步。
相關(guān)CSS教程:
CSS教程Rss訂閱Div+Css教程搜索
CSS教程推薦
猜你也喜歡看這些
- html元素xhtml文檔根元素特性小結(jié)
- Default style sheet - HTML4標(biāo)簽的默認(rèn)樣式列表
- XHTML入門學(xué)習(xí)教程:XHTML標(biāo)簽
- 通過實(shí)例掌握BR和P標(biāo)簽的區(qū)別
- HTML中級(jí)教程span和div標(biāo)簽
- xthml的基礎(chǔ)問答
- HTML表格標(biāo)記教程(46):表格的表尾標(biāo)記
- HTML5的結(jié)構(gòu)和語(yǔ)義——語(yǔ)義性的塊級(jí)元素(三)
- HTML結(jié)構(gòu)更加清晰、規(guī)范,學(xué)習(xí)HTML5優(yōu)化結(jié)構(gòu)的思路。
- DIV CSS布局基礎(chǔ):HTML標(biāo)記(二)
- 相關(guān)鏈接:
- 教程說明:
CSS教程-非主流瀏覽器Nascape中CSS的顯示與IE的差別
。