首页
网络新闻
seo优化
网络营销
网络推广
建站知识
网络安全
网络编程
网络编程
奇闻怪事
主页
/
建站知识
/
CSS解决未知高度的垂直水平居中自适应问题
建站知识
2021-07-03 08:42
www.168986.cn
长沙网站建设
今天有人问起,晚上试着写出来,供参考; 以下代码兼容主流浏览器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>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://.w3./1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>.jb51.</title> <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> </html>
提示您可以先修改部分代码再运行
二、DIV已知高度,如何让他水平加垂直居中?
如果想水平加垂直居中的DIV已知高度和宽度,是最好办的了!
1、先让这个DIV绝对定位;
2、让他距离上边50%,左边50%;这会这个DIV的左上角这个点就是窗口的正中间;
3、因为已经知道了这个DIV的高和宽了,那么再从这里点向左移动总宽的一半就可以了,也就是200PX; 向上呢也同理;
复制代码
代码如下:
<style>
#info{:50%;left:50%; position:absolute; width:600px; height:400px; margin:-200px -300px; border:1px solid #f00;}
</style>
<div id="info">this is test.</div>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://.w3./1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>.jb51.</title> <style> #info{:50%;left:50%; position:absolute; width:600px; height:400px; margin:-200px -300px; border:1px solid #f00;} </style> </head> <body> <div id="info">this is test.</div> </body> </html>
提示您可以先修改部分代码再运行
三、DIV不知道高度怎么让他水平和垂直居中?
这个比较麻烦,用上边的方法的一半再加一些代码才能实现!
我先按上边代码意思接着写,注意,下边的代码是我写好的第一步,只支持IE6和IE7,不过先看一下!
复制代码
代码如下:
<style>
body {padding:0; margin:0; }
#infoBox{ position:absolute; :50%; width:100%; text-align:center;}
#info{position:relative; :-50%; right:0; border:1px solid #333399; text-align:center;} /这里可以指个宽度试试,是可以自适应的/
</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>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://.w3./1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>.jb51.</title> <style> body {padding:0; margin:0; } #infoBox{ position:absolute; :50%; width:100%; text-align:center;} #info{position:relative; :-50%; right:0; border:1px solid #333399; text-align:center;} /这里可以指个宽度试试,是可以自适应的/ </style> </head> <body> <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> </body> </html>
提示您可以先修改部分代码再运行
那么,如果让Firefox再支持一下就可以,对吧!所以接着写!
标准浏览器可将父级元素显示方式设定为display: table;,内部子元素设为display:table-cell 和vertical-align;使其垂直居中,但非标准浏览器是不支持;也就是说这样设完后IE6是不支持的,但FIREFOX和IE是支持的;
我用的是最笨的办法,从上往下一级级覆盖;
复制代码
代码如下:
<style>
body {padding:0; margin:0; }
/这些是专用FIREFOX写的,注意IE7也认识/
html,body{ height:100%;}
#infoBox[id]{text-align:center; width:100%; height:100%; display:table;}
#info[id]{ display:table-cell; vertical-align:middle;} /这里可以指个宽度试试,是可以自适应的/
/专为IE6写的/
html #infoBox{ position:absolute; :50%; width:100%; text-align:center; display:block; height:auto}
html #info{position:relative; :-50%; border:1px solid #333399; text-align:center;} /这里可以指个宽度试试,是可以自适应的/
/这理是专用IE7写的,注意[id]要加上,不然优先JI没有最上边那段NB/
+html #infoBox[id]{ position:absolute; :50%; width:100%; text-align:center; display:block; height:auto}
+html #info[id]{position:relative; :-50%; border:1px solid #333399; text-align:center;} /这里可以指个宽度试试,是可以自适应的/
</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>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://.w3./1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>.jb51.</title> <style> body {padding:0; margin:0; } /这些是专用FIREFOX写的,注意IE7也认识/ html,body{ height:100%;} #infoBox[id]{text-align:center; width:100%; height:100%; display:table;} #info[id]{ display:table-cell; vertical-align:middle;} /这里可以指个宽度试试,是可以自适应的/ /专为IE6写的/ html #infoBox{ position:absolute; :50%; width:100%; text-align:center; display:block; height:auto} html #info{position:relative; :-50%; border:1px solid #333399; text-align:center;} /这里可以指个宽度试试,是可以自适应的/ /这理是专用IE7写的,注意[id]要加上,不然优先JI没有最上边那段NB/ +html #infoBox[id]{ position:absolute; :50%; width:100%; text-align:center; display:block; height:auto} +html #info[id]{position:relative; :-50%; border:1px solid #333399; text-align:center;} /这里可以指个宽度试试,是可以自适应的/ </style> </head> <body> <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> </body> </html>
提示您可以先修改部分代码再运行
这时你又会发现,在IE和FIREFOX中怎么效果不一样呢?FIREFOX中没有那个边框;对的…… 如果你看一下info这个DIV,他其它是占高度100%的;这时的同一个布局在不同的浏览器是展示出来隐在效果已经完全不一样了;那么怎么办? 所以,再用一个办法;再加一个空的DIV就行了,我起了个好名字,叫tnnd; 的效果如下;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://.w3./TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://.w3./1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>.jb51.</title> <style> body {padding:0; margin:0; } /这些是专用FIREFOX写的,注意IE7也认识/ html,body{ height:100%;} #infoBox[id]{text-align:center; width:100%; height:100%; display:table;} #info[id]{ display:table-cell;vertical-align:middle;} /这里可以指个宽度试试,是可以自适应的/ /专为IE6写的/ html #infoBox{ position:absolute; :50%; width:100%; text-align:center; display:block; height:auto} html #info{position:relative; :-50%; text-align:center;} /这里可以指个宽度试试,是可以自适应的/ /这理是专用IE7写的,注意[id]要加上,不然优先JI没有最上边那段NB/ +html #infoBox[id]{ position:absolute; :50%; width:100%; text-align:center; display:block; height:auto} +html #info[id]{position:relative; :-50%; text-align:center;} /这里可以指个宽度试试,是可以自适应的/ #tnnd{ border:1px solid red; width:500px; margin:0 auto; font-size:12px; line-height:1.8;} </style> </head> <body> <div id="infoBox"> <div id="info"> <div id="tnnd"> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> <a href="http://.zishu./blogview.asp?logID=818" target="_blank">CSS几个居中问题的解决办法 </a> </div> </div> </div> </body> </html>
提示您可以先修改部分代码再运行
后边这种是最麻烦的,重点在于IE67和FIREFOX中间的差别和他们相互之间是如何的一些关系;我看过很多关于这个问题的解决方法,都不是特别的理想,希望这种方法能解决大部分的问题!
本来以为半小时弄完,没有想到卡在FIREFOX这里了,弄了二个多小时!周末了,不早了,凌晨230了,睡了!晚安……
相关资料可参考
1、CSS解决未知高度垂直居中 -- 垂直居中方面可参考一下
2、CSS作的小灯笼效果 -- hack方面参考
网络推广网站推广转载请注明出处子鼠
上一篇:
CSS cursor 属性 -- 鼠标指针样式效果
下一篇:
不用js可以实现信息提示效果
长沙网站设计
如何进行东阳SEO关键词优化?
边坝哪有关键词排名优化:提升你的网站流量与
安国百度优化服务:提升您的在线可见性
阜康新手做SEO怎么做
山西seo网站排名关键词优化:提升您网站曝光率
临沂seo网站排名关键词优化:提高你的网站可见
广西SEO网站推广怎样付费比较合理
双辽SEO网站推广:提升你的网站可见性与流量
辽宁企业网站优化购买方式有哪些
提升宝清百度SEO排名的实用技巧与策略
静宁百度SEO排名:提升您网站曝光率的关键策略
彭州百度SEO排名的提升策略和实施指南
广南百度关键词SEO:提升网站排名的关键策略
辽宁关键词优化怎么做论坛营销
吉林百度seo排名如何做到让用户满意
内黄百度优化服务:提升在线可见性的关键
狼蚁网络搜索
狼蚁网络导航
长沙seo优化
如何进行东阳SEO关键词优化?
边坝哪有关键词排名优化:提升你的网站流量与
安国百度优化服务:提升您的在线可见性
阜康新手做SEO怎么做
山西seo网站排名关键词优化:提升您网站曝光率
长沙网络营销
1
免费私人服务器
2
南宁企业建站
3
html网站模板建站
4
高端网站开发 高端网站开发流程
5
中国域名服务商有哪些?2021年中国十大域名注册
长沙网站建设
符合谷歌喜好的网站优秀内容撰写技巧分享
CSS3解决移动页面上点击链接触发色块的问题
北京SEO优化的注意事项有哪些
详解CSS3+JS完美实现放大镜模式
css3截图_动力节点Java学院整理