布局
CSS至關(guān)重要的作用, CSS的設(shè)計(jì)初衷.
CSS布局和幾年前table橫行時(shí)的布局又不太一樣, 在結(jié)構(gòu)化語(yǔ)義化的HTML文檔后面, CSS在格式化文檔的渲染效果, 把結(jié)構(gòu)化文檔用表現(xiàn)化語(yǔ)言來(lái)描述. 簡(jiǎn)而言之, 就是CSS不需要表現(xiàn)性標(biāo)簽!
CSS布局技術(shù)依賴于三個(gè)基本概念: 定位, 浮動(dòng), margin操縱. 布局技術(shù)之間沒(méi)有本質(zhì)的區(qū)別, 相同一種布局讓100個(gè)前端開(kāi)發(fā)工程師來(lái)做, 可能就有100種方法.
居中
在table時(shí)代, align和Valign相當(dāng)?shù)暮糜? 而在CSS中卻沒(méi)有簡(jiǎn)單實(shí)現(xiàn)的方法,所以在標(biāo)準(zhǔn)化剛剛開(kāi)始推廣的時(shí)候, 很多重構(gòu)項(xiàng)目中居中問(wèn)題變成了阻礙標(biāo)準(zhǔn)化進(jìn)步的絆腳石.
1. 自動(dòng)外補(bǔ)丁水平居中
一般情況下水平居中比較容易實(shí)現(xiàn), 只需要給要居中的容器設(shè)定寬度, 以及自動(dòng)水平外補(bǔ)丁就可以了.
比如HTML如下:
<body>
<div class="wrapper">
</div>
</body>
CSS如下:
body{}
.wrapper
很簡(jiǎn)單不是嗎? 但是有點(diǎn)小問(wèn)題... 我們親愛(ài)的IE家族里, IE5.x和IE 6不支持自動(dòng)外補(bǔ)丁, 但是同樣幸運(yùn)的是, IE將 text-align:center 理解為所有東西居中, 而不只是文本. 哈哈, 可以利用這個(gè)Bug.
將CSS改為:
body
.wrapper
這里就用到了一種Hack,不過(guò)不會(huì)影響其他瀏覽器的Hack就是好Hack,呵呵, 就先這么用著吧~
等等, 好像Netscape那邊也出問(wèn)題了, 用Netscape 6將窗口縮小到小于容器寬度時(shí), 容器的左邊就會(huì)跑到屏幕外邊去了, 而且還不會(huì)有滾動(dòng)條...萬(wàn)惡的瀏覽器大戰(zhàn)啊...
再來(lái)改改我們的CSS:
body
.wrapper
這樣就基本上ok了.