我們經(jīng)常會用到div高度自適應(yīng),但是經(jīng)常不兼容啊,下面我來介紹div高度自適應(yīng)方法總結(jié),有需要的朋友可參考參考。
看下面代碼:
代碼如下 |
復(fù)制代碼 |
<style type="text/css">
.mytest
{
width:100px;
height:100px;
border:1px solid green;
}
</style>
<div class="mytest">據(jù)英國《每日電訊報》11月30日報道,以色列安全內(nèi)閣當天批準在約旦河西岸和東耶路撒冷猶太人定居點新建3000套住房,此舉旨在抗議聯(lián)合國29日批準給與巴勒斯坦觀察員國地位。巴以和談進程也因此蒙上巨大</div>
</body>
</html>
|
以上代碼中固定了div的高度為100px,如果內(nèi)容的高度超過100px的話,除了在IE6下能夠達到高度自適應(yīng),其他瀏覽器都會出現(xiàn)內(nèi)容溢出的現(xiàn)象,顯示不能夠達到我們想要的效果,下面就來修改一下代碼 。
代碼如下 |
復(fù)制代碼 |
<style type="text/css">
.mytest
{
width:100px;
height:auto!important;
height:100px;
min-height:100px;
border:1px solid green;
}
</style>
|
<div class="mytest">據(jù)英國《每日電訊報》11月30日報道,以色列安全內(nèi)閣當天批準在約旦河西岸和東耶路撒冷猶太人定居點新建3000套住房,此舉旨在抗議聯(lián)合國29日批準給與巴勒斯坦觀察員國地位。巴以和談進程也因此蒙上巨大陰</div>
</body>
</html>以上代碼通過運用!important和min-height屬性實現(xiàn)了各個瀏覽器都能夠達到高度自適應(yīng)效果。
上面都是介紹的是div中都是文本內(nèi)容的情況,但是還有可能是div中存有子div的情況,下面簡單介紹一下此種情況。先看一實例:
代碼如下 |
復(fù)制代碼 |
<style type="text/css">
.parent
{
border:2px solid red;
width:200px;
}
.children
{
width:200px;
height:200px;
background-color:green;
}
</style>
<div class="parent">
<div class="children"></div>
</div>
|
以上代碼中,父元素只規(guī)定了寬度沒有規(guī)定高度,子元素在正常的文檔流中,所以子元素能夠?qū)⒏冈負伍_。
再看下面這一實例:
代碼如下 |
復(fù)制代碼 |
<style type="text/css">
.parent
{
border:2px solid red;
width:200px;
}
.children
{
width:200px;
height:200px;
float:left;
background-color:green;
}
</style>
<div class="parent">
<div class="children"></div>
</div>
|
從上面代碼的運行可以看出,父元素并沒有被撐開,這個是因為子元素float屬性值設(shè)置為left,從而脫離了文檔流。如果想讓上面的父元素達到高度自適應(yīng),就要清除子元素的浮動。修改代碼如下:
代碼如下 |
復(fù)制代碼 |
<style type="text/css">
.parent
{
border:2px solid red;
width:200px;
overflow:hidden;
}
.children
{
width:200px;
height:200px;
float:left;
background-color:green;
}
</style>
<div class="parent">
<div class="children"></div>
</div>
|
以上代碼通過給父元素的樣式中添加overflow:hidden即可清除浮動。
如果說父元素就像最開始的例子一樣,固定了高度,并且還要實現(xiàn)高度自適應(yīng)效果,就可以參閱元素中內(nèi)容是文本的情況,解決方法是一樣的。代碼如下:
代碼如下 |
復(fù)制代碼 |
<style type="text/css">
.parent
{
border:2px solid red;
width:200px;
height:auto!important;
height:100px;
min-height:100px;
}
.children
{
width:200px;
height:200px;
float:left;
background-color:green;
}
.clear
{
clear:both;
}
</style>
<div class="parent">
<div class="children"></div>
<div class="clear"></div>
</div>
|
上面講述的都是css,我另外介紹一通過js的方法,原理是js獲取兩個子div的高度然后比較哪個大,然后分別設(shè)置div的高度,下面的實例演示3列式的。
js代碼如下:
代碼如下 |
復(fù)制代碼 |
<script>
var a=Math.max(document.getElementById("left").offsetHeight,document.getElementById("center").offsetHeight,document.getElementById("right").offsetHeight); //獲取3個div的最大高度
document.getElementById("left").style.height = a + "px";
document.getElementById("center").style.height = a + "px";
document.getElementById("right").style.height = a + "px";
</script>
|
需要注意的是這個js代碼請放在頁面底部