未知高度的DIV内文字垂直居中用CSS怎么实现

html-css018

未知高度的DIV内文字垂直居中用CSS怎么实现,第1张

利用vertical-align:middle和dispaly: table在高级版本的浏览器实现效果

布局div:

未添加样式的效果图:

添加CSS样式效果:

最终实现的效果:

在IE6 7 下的方案 :

/*IE6*/

*html .wrapper{position:absolutetop:50%width:100%text-align:centerdisplay:blockheight:auto}

*html .subwrap{position:relativetop:-50%text-align:center}

/*IE7 可以合并 但是为了更好说明 没有合并*/

*+html .wrapper{position:absolutetop:50%width:100%text-align:centerdisplay:blockheight:auto}

*+html .subwrap{position:relativetop:-50%text-align:center}

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

如题

解析:

尽管有CSS的vertical-align特性,但是并不能有效解决未知高度的垂直居中问题(在一个DIV标签里有未知高度的文本或图片的情况下)。标准浏览器如Mozilla, Opera, Safari等.,可将父级元素显示方式设定为TABLE(display: table) ,内部子元素定为table-cell (display: table-cell),通过vertical-align特性使其垂直居中,但非标准浏览器是不支持的。

非标准浏览器只能在子元素里设距顶部50%,里面再套个元素距顶部-50% 来抵消。

CSS:

body {padding: 0margin: 0}body,{height: 100%}

#outer {height: 100%overflow: hiddenposition: relativewidth: 100%background:ivory}

#outer[id] {display: tableposition: static}

#middle {position: absolutetop: 50%} /* for explorer only*/

#middle[id] {display: table-cellvertical-align: middleposition: static}

#inner {position: relativetop: -50%width: 400pxmargin: 0 auto} /* for explorer only */

div.greenBorder {border: 1px solid greenbackground-color: ivory}

<div id="outer">

<div id="middle">

<div id="inner" class="greenBorder">

</div>

</div>

</div>

以上CSS代码的优点是没有hacks,采用了IE不支持的CSS2选择器#value[id]。

CSS2选择器#value[id]相当于选择器#value,但是Inter Explorer不支持这种类型的选择器。同样地.value[class],相当于.value,这些只有标准浏览器能读懂。

测试:Firefox1.5、Opera9.0、IE6.0、IE5.0通过。

<style>

*{ margin:0 padding:0 float:none}

    li { list-style:none}

    /*关键样式*/

    .zxx_align_box_2{display:table-cell width:500px height:200px padding:0 10px border:4px solid #beceeb color:#069 font-size:10em text-align:center vertical-align:middle} 

    .zxx_align_box_2 .zxx_align_word{display:inline-block line-height:24px font-size:12px vertical-align:middle text-align:left}

    .zxx_align_box_2 span img{ max-width:500px max-height:200px *width:expression(document.documentElement.offsetWidth>500?500:auto)*height:expression(document.documentElement.offsetHeight>200?200:auto)}

</style> <div class="zxx_align_box_2"><span class="zxx_align_word">无论是单行还是多行,都可以居中显示无论是单行还是多行,都可以居中显示无论是单行还是多行,都可以居中显示无论是单行还是多行,都可以居中显示无论是单行还是多行,都可以居中显示无论是单行还是多行,都可以居中显示无论是单行还是多行,都可以居中显示<span style=" color:#c00">,注:可根据需要改变尺寸边框即可,内容文字大小、图片大小随便放,但是有一点,不能混放啊,如非得走这路,那非得用JS了,css再强大也是有限的。</span></span></div>

    <div class="zxx_align_box_2"><span class="zxx_align_word"><a href="#"><img src="image/expression.png" /> </a></span></div>

图片你自己随便找一个随便试。