從截圖中, 我們可看出,
問題1:右邊的內容多時,會導致左邊露空白;或者左邊內容多時,會導致右邊露空白。怎么解決?
問題2:右邊那一大塊層的寬度應該設置多少呢?設置小了,會與右邊界不對齊,設置大了,整塊層會被擠到下一行去。怎么辦?
其實,兩個問題,都可歸結到同一個問題,即如何使得層的高度或寬度達到自適應的效果?
且看下面的HTML和CSS代碼,詳細講解在CSS代碼注釋中:
運行截圖如下:
我們來探討一下影響DIV寬度或高度的屬性有哪些?
DIV的寬度 = width + padding + border + margin |
僅從一條公式上看,可能有點難理解,我們通過測試代碼和截圖來觀察一下。為了測試結果觀察直觀,我們只測試一邊,即左邊,即本來padding、border、margin的寬度計算,都是左右兩邊都算在內的,這里就只測試左邊,右邊同理。
我們在Firefox中測試,截圖如下:
我們來分析一下DIV4,如下圖:
對照上面的代碼和截圖,我們可以清楚地理解“div的寬度 = width + padding + border + margin”這條公式。
對于Web前端開發者來說,最頭痛的事情就是因瀏覽器的差異而引起的網頁顯示效果的差異,而對于這條寬度計算公式,在其他瀏覽器中會不會有不兼容的問題呢?
幸好,大部分常用的瀏覽器,我機器上都安裝了,測試結果是:在Firefox、Opera、Google、IE8、IE7顯示都跟上面的截圖一樣,也就是說,在這些瀏覽器中,寬度的計算公式是:
DIV的寬度 = width + padding + border + margin |
而在IE6中測試,結果卻不是這樣,請看運行截圖:
由上圖可以看出,在IE6的寬度計算是:
DIV的寬度 = width + margin |
而border和padding,是占用了width的位置。這一點,在前端開發中要注意。
我們都知道CSS中定位屬性position的值,除了默認的值外,還有absolute,relative和fixed。我平時比較常用absolute和relative,而position:fixed卻沒多關注。或許是因為當初在CSS中文手冊中看到position:fixed旁邊有說明“IE5.5及NS6尚不支持此屬性”吧。
前段時間,在做一個項目時需要使一個層相對于瀏覽器邊框固定,那時用position:absolute試了下,發覺absolute是對網頁邊框而言的。后來,上網查了一些根據滾動條的移動,動態地改變left和top的值的JavaScript語句,雖然能實現了類似的效果,但滾動條移動時,那個層晃來晃去的,感覺不好看,想要一種能使層固定不動的做法。
且看下面的代碼:
<style type="text/css"> |
我們用上面這段代碼來定義頁面上的一個層“help”(id=“help”)。這樣就能實現我們想要的效果了。
在IE8、Firefox、Opera、Google等瀏覽器中測試,都沒有問題,唯獨低版本的IE中,這個屬性無效。