float定位二
xhtml:
<div id="center" class="column"> <h1>This is the main content.</h1> </div> <div id="left" class="column"> <h2>This is the left sidebar.</h2> </div> <div id="right" class="column"> <h2>This is the right sidebar.</h2> </div>
CSS:
body {margin: 0;padding-left: 200px;padding-right: 190px;min-width: 240px;} .column {position: relative;float: left;} #center {width: 100%;} #left {width: 180px; right: 240px;margin-left: -100%;} #right {width: 130px;margin-right: -100%;}
兩行三列
xhtml:
<div id="header">這里是頂行</div> <div id="warp"> <div id="column"> <div id="column1">這里是第一列</div> <div id="column2">這里是第二列</div> <div class="clear"></div> </div> <div id="column3">這里是第三列</div> <div class="clear"></div> </div>
CSS:
#header{width:100%; height:auto;} #wrap{ width:100%; height:auto;} #column{ float:left; width:60%;} #column1{ float:left; width:30%;} #column2{ float:right; width:30%;} #column3{ float:right; width:40%;} .clear{ clear:both;}
三行三列
xhtml:
<div id="header">這里是頂行</div> <div id="warp"> <div id="column"> <div id="column1">這里是第一列</div> <div id="column2">這里是第二列</div> <div class="clear"></div> </div> <div id="column3">這里是第三列</div> <div class="clear"></div> </div> <div id="footer">這里是底部一行</div>
CSS:
#header{width:100%; height:auto;} #wrap{ width:100%; height:auto;} #column{ float:left; width:60%;} #column1{ float:left; width:30%;} #column2{ float:right; width:30%;} #column3{ float:right; width:40%;} .clear{ clear:both;} #footer{width:100%; height:auto;}
PS:這里列出的是常用的例子,而非研究之用,對(duì)一每個(gè)盒子,我都沒有設(shè)置margin,padding,boeder等屬性,是因?yàn)槲覀(gè)人覺得,含有寬度定位的時(shí)候,最好不好用到他們,除非必不得已,因?yàn)槿绻皇沁@樣的話,解決瀏覽器兼容問題,會(huì)讓你頭疼,而且產(chǎn)生一系列CSS代碼,我覺得這樣的效率和效果都不好!
3.CSS布局高級(jí)技巧
margin和padding總是有可能要用到,而產(chǎn)生的問題如何解決呢?由于瀏覽器解釋容器寬度的方法不同:
IE 6.0 Firefox Opera等是 真實(shí)寬度=width+padding+border+margin IE5.X 真實(shí)寬度=width-padding-border-margin
很明顯,第一種下很完美的布局在第二種情況下后果是很凄慘的!
解決的方法是 hack
div.content { width:400px; //這個(gè)是錯(cuò)誤的width,所有瀏覽器都讀到了 voice-family: "\"}\""; //IE5.X/win忽略了"\"}\""后的內(nèi)容 voice-family:inherit; width:300px; //包括IE6/win在內(nèi)的部分瀏覽器讀到這句,新的數(shù)值(300px)覆蓋掉了舊的 } html>body .content { //html>body是CSS2的寫法 width:300px; //支持CSS2該寫法的瀏覽器(非IE5)有幸讀到了這一句 }
div.content { width:300px !important; //這個(gè)是正確的width,大部分支持!important標(biāo)記的瀏覽器使用這里的數(shù)值 width(空格)/**/:400px; //IE6/win不解析這句,所以IE6/win仍然認(rèn)為width的值是300px;而IE5.X/win讀到這句,新的數(shù)值(400px)覆蓋掉了舊的,因?yàn)?important標(biāo)記對(duì)他們不起作用 } html>body .content { //html>body是CSS2的寫法 width:300px; //支持CSS2該寫法的瀏覽器有幸讀到了這一句 }
具體解釋點(diǎn)擊下面鏈接查看
m.95time.cn/tech/site/2006/3170.asp www.jluvip.com/blog/article.asp?id=114
列等高技巧
n行n列布局,每列高度(事先并不能確定哪列的高度)的相同,是每個(gè)設(shè)計(jì)師追求的目標(biāo),做法有:背景圖填充、加JS腳本的 方法和容器溢出部分隱藏和列的負(fù)底邊界和正的內(nèi)補(bǔ)丁相結(jié)合的方法。
背景圖填充法:
xhtml:
<div id="wrap"> <div id="column1">這是第一列</div> <div id="column1">這是第二列</div> <div class="clear"></div> </div>
css:
#wrap{ width:776px; background:url(bg.gif) repeat-y 300px;} #column1{ float:left; width:300px;} #column2{ float:right; width:476px;} .clear{ clear:both;}
就是將一個(gè)npx寬的一張圖片在外部容器縱向重復(fù),定位到兩列交錯(cuò)的位置縱向重復(fù),在視覺上產(chǎn)生了兩列高度一樣的錯(cuò)覺
JS腳本法:
m.95time.cn/bbs/NewsDetail.asp?id=2453983 代碼的原理基本就是這樣,讀取高度,判斷高度,高度相等。
容器溢出部分隱藏和列的負(fù)底邊界和正的內(nèi)補(bǔ)丁相結(jié)合的方法
這篇文章說的很詳細(xì)了:
m.95time.cn/tech/web/2006/3210.asp
還有:
www.jluvip.com/blog/article.asp?id=151
滿屏高度布局(最窄770px最寬1024px經(jīng)典布局)
m.95time.cn/tech/web/2005/3124.asp
今天和一個(gè)網(wǎng)友兩天,他提到:給一個(gè)外國(guó)公司做網(wǎng)站,要求1.800x600滿屏。2.1024x767滿屏。3.1280下居中。4.不許用JS。 我突然想起了這篇文章,哈哈!把它感覺不可思議的事情解決了!但是好像對(duì)于IE5有點(diǎn)問題。
經(jīng)典論壇討論帖: http://m.95time.cn/bbs/NewsDetail.asp?id=2506047
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁(yè) div+css布局漫談 [1] 下一頁(yè)
◎進(jìn)入論壇網(wǎng)站綜合、網(wǎng)頁(yè)制作版塊參加討論
|