CSS解决未知高度垂直居中

尽管有CSS的vertical-align特性,但是并不能有效解决未知高度的垂直居中问题(在一个DIV标签里有未知高度的文本或图片的情况下)。

标准浏览器如Mozilla, Opera, Safari等.,可将父级元素显示方式设定为TABLE(display:
table;) ,内部子元素定为table-cell (display:
table-cell),通过vertical-align特性使其垂直居中,但非标准浏览器是不支持的。

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

<html>
<head>
<title>CSS未知高度的DIV垂直居中</title>
<style>
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%;}
#middle[id] {display:
table-cell; vertical-align: middle; position: static;}
#inner
{position: relative; top: -50%;width: 400px;margin: 0 auto;}
div.greenBorder {border: 1px solid green;
background-color: ivory;}
</style>
</head>
<body>
<div id="outer">

<div id="middle">
<div
id="inner" class="greenBorder">
qee<br/>qee<br/>qee<br/>qee<br/>qee<br/>qee<br/>
</div>

</div>
</div>
</body>
</html>

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

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

时间: 2024-08-14 12:07:17

CSS解决未知高度垂直居中的相关文章

CSS实现未知高度图文混合垂直居中

(从已经死了一次又一次终于挂掉的百度空间人工抢救出来的,发表日期 2014-06-26) CSS实现未知高度图文混合垂直居中,阅读CSS实现未知高度图文混合垂直居中. IE6,IE7,FF3测试通过 CSS* { margin:0; padding:0; list-style:none;} #vertical_box { width:100%; display:table; border:1px red solid; height:400px; /*针对IE的hack*/ *position:r

用CSS让未知高度内容垂直方向居中

<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Demo</title> <style type="text/css"> #outer{ width:500px; height:200px; margin: 50px auto; border:1px solid #CCC; display:table; tex

巧用CSS居中未知高度的块元素

在网页中让一个未知高度的块元素水平垂直居中是一个老生常谈的问题,但是总是有些特殊场景让你无法得心应手的实现居中,本文介绍几种常用的经典的居中方法,总有一种适合你! 1. position .parent { width: 200px; height: 200px; margin: auto; border: 1px solid red; position: relative; } .child { position: absolute; width: 100px; height: 50%; to

css在未知高度的情况下实现垂直居中

.img{width:100px;height:110px;display:table-cell;text-align:center;vertical-align:middle;border:1px solid red;overflow:hidden;} "`

css实现固定高度及未知高度文字垂直居中的完美解决方案

在工作当中我们经常碰到类似于"固定高度文字垂直居中及未知高度垂直居中问题",或者 "图片垂直居中问题",而我们最容易会想到使用表格来垂直居中,或者如果是单行文字的话使用height(高度)和line-height(行高)来解决,但是假如页面有多行文字的话 固定高度该怎么解决? 或者未知高度我们该用css怎么解决? 且兼容各个游览器! 一:单行文字垂直居中: 如果一个容器中只有一行文字的话,让他垂直居中比较简单 直接定义height(高度)和 line-height(

css实现高度垂直居中

1:单行文字垂直居中: 如果一个容器中只有一行文字的话,定义height(高度)和 line-height(行高)相等即可. 如:<div style="height:25px;line-height:25px;overflow:hidden">aa</div> 2:多行文本固定高度垂直居中: 核心:display:table 和display:table-cell ;vertical-align:middle; 兼容:ie7+ 1 <div class=

关于未知高度的垂直居中

1.内容为纯文字的时候的垂直居中 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>未知高度垂直居中</title> <style type="text/css"> .box{width: 200px;height: 500px;background-color: yello

CSS中设置DIV垂直居中的N种方法 兼容IE浏览器

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的<td>.<th>.<caption>等,而像<div>.<span>这样的元素是没有valign特性的,因此使用vertica

CSS总结(六)——元素的垂直居中(已知高度/未知高度)

元素的垂直居中 1.已知高度宽度元素的水平垂直居中 ①  绝对定位居中 .center{ margin:auto; position:absolute; top:0; left:0; bottom:0; right:0; } ②  绝对定位与负边距实现 .center{ width:100px; height:100px; position:absolute; top:50%; left:50%; margin:-50px 0 0 -50px; } 2.未知高度宽度元素的水平垂直居中 ①  当元