CSS解決未知高度的垂直水平居中自適應(yīng)問題
發(fā)布時間:2009-04-04 03:32:38 作者:佚名
我要評論

今天有人問起,晚上試著寫出來,供參考; 以下代碼兼容主流瀏覽器IE6、IE7、Firefox、Opera。
從最簡單的開始…………
一、如何讓一個DIV水平居中?
這個簡單不作過多說明!
[code]
<style>
body { text-align:center}
#info{ margin:0
今天有人問起,晚上試著寫出來,供參考; 以下代碼兼容主流瀏覽器IE6、IE7、Firefox、Opera。
從最簡單的開始…………
一、如何讓一個DIV水平居中?
這個簡單不作過多說明!
<style>
body { text-align:center}
#info{ margin:0 auto; width:500px; text-align:left; border:1px solid #3333FF}
</style>
</head>
<body>
<div id="info">this is test.</div>
</body>
提示:您可以先修改部分代碼再運(yùn)行
二、DIV已知高度,如何讓他水平加垂直居中?
如果想水平加垂直居中的DIV已知高度和寬度,是最好辦的了!
1、先讓這個DIV絕對定位;
2、讓他距離上邊50%,左邊50%;這會這個DIV的左上角這個點(diǎn)就是窗口的正中間;
3、因?yàn)橐呀?jīng)知道了這個DIV的高和寬了,那么再從這里點(diǎn)向左移動總寬的一半就可以了,也就是200PX; 向上呢也同理;
<style>
#info{top:50%;left:50%; position:absolute; width:600px; height:400px; margin:-200px -300px; border:1px solid #f00;}
</style>
<div id="info">this is test.</div>
提示:您可以先修改部分代碼再運(yùn)行
三、DIV不知道高度怎么讓他水平和垂直居中?
這個比較麻煩,用上邊的方法的一半再加一些代碼才能實(shí)現(xiàn)!
首先我先按上邊代碼意思接著寫,注意,下邊的代碼是我寫好的第一步,只支持IE6和IE7,不過先看一下!
<style>
body {padding:0; margin:0; }
#infoBox{ position:absolute; top:50%; width:100%; text-align:center;}
#info{position:relative; top:-50%; right:0; border:1px solid #333399; text-align:center;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
</style>
<div id="infoBox">
<div id="info">
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
</div>
</div>
提示:您可以先修改部分代碼再運(yùn)行
那么,如果讓Firefox再支持一下就可以,對吧!所以接著寫!
標(biāo)準(zhǔn)瀏覽器可將父級元素顯示方式設(shè)定為display: table;,內(nèi)部子元素設(shè)為display:table-cell 和vertical-align;使其垂直居中,但非標(biāo)準(zhǔn)瀏覽器是不支持;也就是說這樣設(shè)完后IE6是不支持的,但FIREFOX和IE是支持的;
我用的是最笨的辦法,從上往下一級級覆蓋;
<style>
body {padding:0; margin:0; }
/*這些是專用FIREFOX寫的,注意IE7也認(rèn)識*/
html,body{ height:100%;}
#infoBox[id]{text-align:center; width:100%; height:100%; display:table;}
#info[id]{ display:table-cell; vertical-align:middle;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
/*專為IE6寫的*/
*html #infoBox{ position:absolute; top:50%; width:100%; text-align:center; display:block; height:auto}
*html #info{position:relative; top:-50%; border:1px solid #333399; text-align:center;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
/*這理是專用IE7寫的,注意[id]要加上,不然優(yōu)先JI沒有最上邊那段NB*/
*+html #infoBox[id]{ position:absolute; top:50%; width:100%; text-align:center; display:block; height:auto}
*+html #info[id]{position:relative; top:-50%; border:1px solid #333399; text-align:center;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
</style>
<div id="infoBox">
<div id="info">
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
</div>
</div>
</html>
提示:您可以先修改部分代碼再運(yùn)行
這時你又會發(fā)現(xiàn),在IE和FIREFOX中怎么效果不一樣呢?FIREFOX中沒有那個邊框;對的…… 如果你看一下info這個DIV,他其它是占高度100%的;這時的同一個布局在不同的瀏覽器是展示出來隱在效果已經(jīng)完全不一樣了;那么怎么辦? 所以,再用最后一個辦法;再加一個空的DIV就行了,我起了個好名字,叫tnnd; 最后的效果如下;
提示:您可以先修改部分代碼再運(yùn)行
后邊這種是最麻煩的,重點(diǎn)在于IE67和FIREFOX中間的差別和他們相互之間是如何的一些關(guān)系;我看過很多關(guān)于這個問題的解決方法,都不是特別的理想,希望這種方法能解決大部分的問題!
本來以為半小時弄完,沒有想到卡在FIREFOX這里了,弄了二個多小時!周末了,不早了,凌晨2:30了,睡了!晚安……
相關(guān)資料可參考:
1、CSS解決未知高度垂直居中 -- 垂直居中方面可參考一下
2、CSS作的小燈籠效果 -- hack方面參考
轉(zhuǎn)載請注明出處:子鼠
從最簡單的開始…………
一、如何讓一個DIV水平居中?
這個簡單不作過多說明!
復(fù)制代碼
代碼如下:<style>
body { text-align:center}
#info{ margin:0 auto; width:500px; text-align:left; border:1px solid #3333FF}
</style>
</head>
<body>
<div id="info">this is test.</div>
</body>
提示:您可以先修改部分代碼再運(yùn)行
二、DIV已知高度,如何讓他水平加垂直居中?
如果想水平加垂直居中的DIV已知高度和寬度,是最好辦的了!
1、先讓這個DIV絕對定位;
2、讓他距離上邊50%,左邊50%;這會這個DIV的左上角這個點(diǎn)就是窗口的正中間;
3、因?yàn)橐呀?jīng)知道了這個DIV的高和寬了,那么再從這里點(diǎn)向左移動總寬的一半就可以了,也就是200PX; 向上呢也同理;
復(fù)制代碼
代碼如下:<style>
#info{top:50%;left:50%; position:absolute; width:600px; height:400px; margin:-200px -300px; border:1px solid #f00;}
</style>
<div id="info">this is test.</div>
提示:您可以先修改部分代碼再運(yùn)行
三、DIV不知道高度怎么讓他水平和垂直居中?
這個比較麻煩,用上邊的方法的一半再加一些代碼才能實(shí)現(xiàn)!
首先我先按上邊代碼意思接著寫,注意,下邊的代碼是我寫好的第一步,只支持IE6和IE7,不過先看一下!
復(fù)制代碼
代碼如下:<style>
body {padding:0; margin:0; }
#infoBox{ position:absolute; top:50%; width:100%; text-align:center;}
#info{position:relative; top:-50%; right:0; border:1px solid #333399; text-align:center;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
</style>
<div id="infoBox">
<div id="info">
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
</div>
</div>
提示:您可以先修改部分代碼再運(yùn)行
那么,如果讓Firefox再支持一下就可以,對吧!所以接著寫!
標(biāo)準(zhǔn)瀏覽器可將父級元素顯示方式設(shè)定為display: table;,內(nèi)部子元素設(shè)為display:table-cell 和vertical-align;使其垂直居中,但非標(biāo)準(zhǔn)瀏覽器是不支持;也就是說這樣設(shè)完后IE6是不支持的,但FIREFOX和IE是支持的;
我用的是最笨的辦法,從上往下一級級覆蓋;
復(fù)制代碼
代碼如下:<style>
body {padding:0; margin:0; }
/*這些是專用FIREFOX寫的,注意IE7也認(rèn)識*/
html,body{ height:100%;}
#infoBox[id]{text-align:center; width:100%; height:100%; display:table;}
#info[id]{ display:table-cell; vertical-align:middle;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
/*專為IE6寫的*/
*html #infoBox{ position:absolute; top:50%; width:100%; text-align:center; display:block; height:auto}
*html #info{position:relative; top:-50%; border:1px solid #333399; text-align:center;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
/*這理是專用IE7寫的,注意[id]要加上,不然優(yōu)先JI沒有最上邊那段NB*/
*+html #infoBox[id]{ position:absolute; top:50%; width:100%; text-align:center; display:block; height:auto}
*+html #info[id]{position:relative; top:-50%; border:1px solid #333399; text-align:center;} /*這里可以指個寬度試試,是可以自適應(yīng)的*/
</style>
<div id="infoBox">
<div id="info">
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
this is test.
</div>
</div>
</html>
提示:您可以先修改部分代碼再運(yùn)行
這時你又會發(fā)現(xiàn),在IE和FIREFOX中怎么效果不一樣呢?FIREFOX中沒有那個邊框;對的…… 如果你看一下info這個DIV,他其它是占高度100%的;這時的同一個布局在不同的瀏覽器是展示出來隱在效果已經(jīng)完全不一樣了;那么怎么辦? 所以,再用最后一個辦法;再加一個空的DIV就行了,我起了個好名字,叫tnnd; 最后的效果如下;
提示:您可以先修改部分代碼再運(yùn)行
后邊這種是最麻煩的,重點(diǎn)在于IE67和FIREFOX中間的差別和他們相互之間是如何的一些關(guān)系;我看過很多關(guān)于這個問題的解決方法,都不是特別的理想,希望這種方法能解決大部分的問題!
本來以為半小時弄完,沒有想到卡在FIREFOX這里了,弄了二個多小時!周末了,不早了,凌晨2:30了,睡了!晚安……
相關(guān)資料可參考:
1、CSS解決未知高度垂直居中 -- 垂直居中方面可參考一下
2、CSS作的小燈籠效果 -- hack方面參考
轉(zhuǎn)載請注明出處:子鼠
相關(guān)文章
純Css實(shí)現(xiàn)Div高度根據(jù)自適應(yīng)寬度(百分比)調(diào)整
這篇文章主要介紹了純Css實(shí)現(xiàn)Div高度根據(jù)自適應(yīng)寬度(百分比)調(diào)整,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著2020-07-16css和css3彈性盒模型實(shí)現(xiàn)元素寬度(高度)自適應(yīng)
這篇文章主要介紹了css和css3彈性盒模型實(shí)現(xiàn)元素寬度(高度)自適應(yīng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋2019-05-15- 對象height:100%并不能直接產(chǎn)生效果,是因?yàn)楦涓笇ο笥嘘P(guān),下面有個示例為大家詳細(xì)介紹下,感興趣的朋友可以參考下2013-09-04
CSS min-height IE6、IE7、FF下DIV自適應(yīng)高度
IE6、IE7、FF下DIV自適應(yīng)高度2010-05-13純CSS無hacks的跨游覽器自適應(yīng)高度多列布局 推薦
翻譯自Matthew James Taylor的Equal Height Columns with Cross-Browser CSS and No Hacks,有些部分根據(jù)我的理解改了,讓一些初心者更好理解。2009-11-12- 用css控制textarea文本域的高度隨內(nèi)容的變化而變化,不出現(xiàn)滾動條.2009-07-11
CSS 實(shí)現(xiàn)高度自適應(yīng)鋪滿整屏的實(shí)現(xiàn)
這篇文章主要介紹了CSS 實(shí)現(xiàn)高度自適應(yīng)鋪滿整屏的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)2020-11-23