CSS 解决未知高度垂直居中实现代码
发布时间:2010-06-06 21:10:22 作者:佚名 我要评论
尽管有CSS的vertical-align特性,但是并不能有效解决未知高度的垂直居中问题(在一个DIV标签里有未知高度的文本或图片的情况下)。
标准浏览器如Mozilla, Opera, Safari等.,可将父级元素显示方式设定为TABLE(display: table;) ,内部子元素定为table-cell (display: table-cell),通过vertical-align特性使其垂直居中,但非标准浏览器是不支持的。
非标准浏览器只能在子元素里设距顶部50%,里面再套个元素距顶部-50% 来抵消。
CSS
body {padding: 0; margin: 0;}
body,html{height: 100%;}
#outer {height: 100%; overflow: hidden; position: relative;width: 100%; background:ivory;}
#outer[id] {display: table; position: static;}
#middle {position: absolute; top: 50%;} /* for explorer only*/
#middle[id] {display: table-cell; vertical-align: middle; position: static;}
#inner {position: relative; top: -50%;width: 400px;margin: 0 auto;} /* for explorer only */
div.greenBorder {border: 1px solid green; background-color: ivory;}
xhtml
<div id="outer">
<div id="middle">
<div id="inner" class="greenBorder">
</div>
</div>
</div>
以上CSS代码的优点是没有hacks,采用了IE不支持的CSS2选择器#value[id]。
CSS2选择器#value[id]相当于选择器#value,但是Internet Explorer不支持这种类型的选择器。同样地.value[class],相当于.value,这些只有标准浏览器能读懂。
测试:Firefox1.5、Opera9.0、IE6.0、IE5.0通过。
提示:您可以先修改部分代码再运行
非标准浏览器只能在子元素里设距顶部50%,里面再套个元素距顶部-50% 来抵消。
CSS
复制代码
代码如下:body {padding: 0; margin: 0;}
body,html{height: 100%;}
#outer {height: 100%; overflow: hidden; position: relative;width: 100%; background:ivory;}
#outer[id] {display: table; position: static;}
#middle {position: absolute; top: 50%;} /* for explorer only*/
#middle[id] {display: table-cell; vertical-align: middle; position: static;}
#inner {position: relative; top: -50%;width: 400px;margin: 0 auto;} /* for explorer only */
div.greenBorder {border: 1px solid green; background-color: ivory;}
xhtml
复制代码
代码如下:<div id="outer">
<div id="middle">
<div id="inner" class="greenBorder">
</div>
</div>
</div>
以上CSS代码的优点是没有hacks,采用了IE不支持的CSS2选择器#value[id]。
CSS2选择器#value[id]相当于选择器#value,但是Internet Explorer不支持这种类型的选择器。同样地.value[class],相当于.value,这些只有标准浏览器能读懂。
测试:Firefox1.5、Opera9.0、IE6.0、IE5.0通过。
提示:您可以先修改部分代码再运行
相关文章
纯CSS定位的固定垂直居中浮动层代码,附经典解说 《详解定位与定位应用
关于在html中浮动层是众多网页爱好者刚开始的难点,主要在于定位。如果你对CSS定位还不够了解 可以接着往下看,运行里面的内容即可。 【需求】: 将一个网页分成头、身2009-07-01- 如题,用html,css如何实现垂直居中。水平居中我们知道最简便的方法就是margin:auto,但是margin只是相对宽度有效。2010-03-18
用CSS让img input select button 图片,文本框,下拉菜单,按扭垂直居中的
一直以来,在HTML中,img input select button 这里元素,垂直对齐,比较难。结果我长大了。我发现了一个现像,其实解决这些问题只是一句话的事。2011-03-08- 网页制作Webjx文章简介:利用 CSS 来实现对象的垂直居中有许多不同的方法,比较难的是选择那个正确的方法。我下面说明一下我看到的好的方法和怎么来创建一个好的居中网站。2009-04-02
- 用过 Fireworks / PhotoShop 的人应该都知道,在画布中将一个页面模块居中是多容易的事,可如果是垂直居中,前端就苦逼了2011-10-30
- 全屏垂直居中的一个办法 DIV+CSS , 这个方面有一点不好, 就是不能自动适应,必须把高和宽写死!2011-10-07
- 宽度自适应:就是元素的宽度根居里面的内容来变化2012-06-14
- 图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项目可能会用到这个方案2010-12-18
- 最近上网上找了些关于CSS实现垂直居中的方法,方法挺多,下面就我看到的几种好方法在这里说明一下,使用 CSS 实现垂直居中并不容易。2011-09-05
- 看到问此问题的很多,所以花点时间整理下,欢迎大家提意见,做补充修改,谢谢2012-01-21
最新评论