在制作網(wǎng)頁(yè)的過程中,自適應(yīng)問題是經(jīng)常遇到,而又最讓人頭疼的,看了好多種解決的方法,但是都不是萬(wàn)能的。今天遇到這個(gè)問題,實(shí)在讓我撓頭,借鑒了 Shark的方法,又給了我一個(gè)新思路。當(dāng)時(shí)沒仔細(xì)看LBS的樣式表,今天才發(fā)現(xiàn),。clear用的就是這個(gè)方法。接下來(lái),我會(huì)做個(gè)關(guān)于“自適應(yīng)高度”問題的匯總,以便今后遇到問題時(shí)候更快解決。
為了解決浮動(dòng)元素引起父元素?zé)o法獲得高度的問題,我們一般在子元素的最后加上一個(gè)Spacer Div(clearboth)。但是IE和Mozilla對(duì)div的解釋不同引起一些表現(xiàn)上的差異。
最簡(jiǎn)單的Spacer:
.HackBox{clearboth;}
IE可以正確地產(chǎn)生預(yù)期的效果,但是在Mozilla中不起作用。所以現(xiàn)在很多人是這么用的
.HackBox{ height0; clearboth;}
然后XHTML中加入一個(gè) ;,如下:
這回IE和Mozilla都起作用了,但是IE并不認(rèn) height0; 這個(gè)規(guī)則,結(jié)果IE中的這個(gè)Spacer Div就占了一定的高度,影響布局。
經(jīng)過N次實(shí)驗(yàn),我發(fā)現(xiàn)用下面的方法能比較完美的解決這個(gè)問題。
.HackBox{
border-top1px solid transparent !important;
margin-top-1px !important;
border-top0;
margin-top0;
clearboth;
visibilityhidden;
}
其實(shí)IE只需要有clearboth;這一條就可以實(shí)現(xiàn)我們的要求。那么下面這兩條規(guī)則有什么用呢?
border-top1px solid transparent;
margin-top-1px;
第一條規(guī)則產(chǎn)生1px的一個(gè)透明的上邊框,第二條將margin-top設(shè)置為-1,以抵消這條邊框?qū)Σ季之a(chǎn)生的影響。
但是不幸的是IE不支持transparent這個(gè)值,它會(huì)將這條邊框變?yōu)楹谏?_-
不幸中的萬(wàn)幸是IE這小子還有一個(gè)不支持的值,就是!important,IE會(huì)忽略這它而選擇按后面兩條顯示,結(jié)果就是不顯示邊框(也就是只有clearboth;起作用了)。而Mozilla卻會(huì)按!important指出的規(guī)則顯示。