CSS布局之負margin-left的使用


有這樣一種情況,網頁主體部分有3欄,看上去分別是:左(left)、中(main)、右(right)三欄。但是它的html結構如下 :

 1 <div id="content">
 2     <div id="main">
 3         <p>Hello,CSS & HTML.</p>
 4         <p>I love this game.</p>
 5     </div>
 6     <div id="left">
 7         <p>I'm the sub colum.</p>
 8     </div>
 9     <div id="right">
10         <p>I'm the extra colum.</p>
11     </div>
12 </div>

現在,不能改變HTML的結構,請實現它們從左至右是分別是:left    main    right。

我能想到的實現它的方法常用有兩種:

第1種:絕對定位(本文忽略)

第2種:margin-left的負值與float的結合

下面我用第2種方法實現:

第1步:content固定寬度

1 #content { width:950px; overflow:hidden; margin-bottom:10px; }

 

第2步:main    left    right都浮動起來(但是main與left 的位置不對)

1 #main { float:left; width:550px; background:#dedede; }
2 #left { float:left; width:190px; background:#F90; }
3 #right { float:right; width:190px; background:#3CC; }

 

第3步:main往右邊擠,left往左邊擠(下面只列出不同的CSS部分,注意_display:inline是為了IE6)

1 #main { float:left; width:550px; background:#dedede; margin-left:200px; _display:inline; }
2 #left { float:left; width:190px; background:#F90; margin-left:-750px; }

 

最終,完整的CSS如下:

1 #content { width:950px; overflow:hidden; margin-bottom:10px; }
2 #main { float:left; width:550px; background:#dedede; margin-left:200px; _display:inline; }
3 #left { float:left; width:190px; background:#F90; margin-left:-750px; }
4 #right { float:right; width:190px; background:#3CC; }

 

本文在chrome   firefox   ie8   ie6下測試正常。本文到此結束!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM