解決DIV列高度自適方法及優(yōu)缺點
你對解決DIV列高度自適方法是否熟悉,這里和大家分享一下,主要從三個方面向大家介紹,希望你能夠掌握。
解決DIV列高度自適方法及優(yōu)缺點
解決DIV列高度自適的方法有很多種,這里介紹三種最常用的方法給大家(下面所有例子以父main,子DIVleft、DIVright為例)。
1、利用“clear:both”背景填充(推薦?。。。?/strong>
這是使用最廣泛的一種做法,我一直都用此方法解決DIV列高度自適問題。三行二列布局,主要內(nèi)容在右邊,網(wǎng)頁寬度780px,左列240px,右列540px。
CSS代碼
- #main{
- width:780px;
- margin:0;
- background:url(bg.gif)#FFFFFFrepeat-yleft;
- text-align:left;
- }
- #DIVleft{
- float:left;
- width:240px;
- }
- #DIVright{
- float:right;
- width:540px;
- }
- .clear{
- border-top:1pxsolidtransparent!important;
- margin-top:-1px!important;
- border-top:0;
- margin-top:0;
- clear:both;
- visibility:hidden;
- }
- html代碼:<DIVidDIVid="main">
- <DIVidDIVid="DIVleft">DIV>
- <DIVidDIVid="DIVright">DIV>
- <DIVclassDIVclass="clear">DIV>
- DIV>
優(yōu)點:無hacks,完全的自適應(yīng)高度。
2、腳本控制高度
在
中加入如下代碼(假設(shè)DIVright的高度相對最高):
- <scriptlanguagescriptlanguage="javascript">
- document.getElementById"DIVleft").style.height
- =document.getElementById"DIVright").scrollHeight"px"
- script>
優(yōu)點:代碼超級簡單
缺點:要確定有某一列的高度始終是相對最高的,此方法比較被動。#p#
3、margin負值父子容器高度繼承
這個方法能較好地解決列高度相同的問題。三行二列布局,主要內(nèi)容在左邊,網(wǎng)頁寬度780px,左列540px,右列240px。
CSS代碼:
- #main{
- width:540px;
- float:left;
- background:#FFFFFF;
- text-align:left;
- }
- #DIVleft{
- width:540px;
- float:left;
- position:relative;
- margin-left:-540px;
- }
- #DIVright{
- width:240px;
- float:right;
- position:relative;
- margin:0-240px00;
- background:#F0F0F0;
- }
html代碼:
- <DIVidDIVid="main">
- <DIVidDIVid="DIVleft">
- <DIVidDIVid="DIVright">DIV>
- DIV>!
- DIV>
或許剛接觸的WebStandards的朋友對這種方法不怎么理解,現(xiàn)Blank分析一下:
[A]
[B][C]
上結(jié)構(gòu)中a包含c,c包含b。當b的高度為最高時,那么a和c將繼承b的高度,如果a和b位置重合,將顯示b的背景;而當c的高度最高時,那么a繼承將繼承c的高度,如果a和b位置重合,將顯示a的背景。這樣無論b最高或者c最高都將顯示DIV列高度相同。
優(yōu)點:兼有第一種方法的優(yōu)點,并且比第一種方法的代碼稍微簡潔。
缺點:整體結(jié)構(gòu)只能左對齊。
【編輯推薦】