关于未知高度的垂直居中

1.内容为纯文字的时候的垂直居中

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>未知高度垂直居中</title>
        <style type="text/css">
        .box{width: 200px;height: 500px;background-color: yellow;}
        .box:before{content:"我是备胎";width: 0;height: 100%;display: inline-block;vertical-align: middle;}
        .boxWrap{display: inline-block;vertical-align: middle;}
        </style>
</head>
<body>
        <div class="box">
                <div class="boxWrap">
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                </div>
        </div>
</body>
</html>

解释:也许你会想到vertical-align属性,但是vertical-align是需要有参照物的,如果直接给他vertical-align:middle是不行的
        所以,这就是为什么加content:"";的原因,给内容一个参照物就可以轻松居中了。当然还需要用到display:inline-block;属性因为没有这个属性的话他们就不能在一行显示,更别谈参照垂直居中了。

2.先看看box套box吧

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>未知高度垂直居中</title>
        <style type="text/css">
        .box{width: 200px;height: 500px;background-color: yellow;font-size: 0;text-align: center;}
        .box:before{content:"";width: 0;height: 100%;display: inline-block;vertical-align: middle;font-size:14px;}
        .boxWrap{display: inline-block;vertical-align: middle;font-size: 14px;background-color: #000;width: 100px;height: 100px;}
        </style>
</head>
<body>
        <div class="box">
                <div class="boxWrap"></div>
        </div>
</body>
</html>

3.内容是多种混合

先上一个有意思的bug
只需要在父级上加个font-size:0;即可。

当然罪魁祸首是这个display:inline-block;

因为父级的默认font-size导致两个div之间有间隙,所以把旁边的div挤下去了。

请看下图

好了,进入正题

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title>未知高度垂直居中</title>
        <style type="text/css">
        .box{width: 200px;height: 500px;background-color: yellow;font-size: 0}
        .box:before{content:"";width: 0;height: 100%;display: inline-block;vertical-align: middle;font-size:14px;}
        .boxWrap{display: inline-block;vertical-align: middle;font-size: 14px;}
        .box1{width: 300px;height: 200px;}
        </style>
</head>
<body>
        <div class="box">
                <div class="boxWrap">
                <h1>我是他们的头头</h1>
                <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcRXP8QWhU1KHIEwr7ULQevzAOLNXw4EOdrqvh6eNUURZqjz4on_sQ" style="width: 100%;">
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                快让我垂直居中,混蛋!<br>
                </div>
        </div>
</body>
</html>
时间: 2024-08-07 21:19:45

关于未知高度的垂直居中的相关文章

如何让未知高度div垂直居中

如何让未知高度div垂直居中:让div垂直居中对齐方法有多种多样,可以使用CSS让div在父元素中垂直居中,但是如果在不知道div高度的情况下将其在父元素中实现它的垂直居中对齐有难度,因为涉及到浏览器兼容性,下面就介绍一下通过js让未知高度的div在父元素中垂直居中,代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/htm

兼容各个浏览器的未知高度div垂直居中效果

兼容各个浏览器的未知高度div垂直居中效果:让div垂直居中与它的父对象中,并不像是让div在父元素中水平居中那么简单,只要简单的为此元素设置margin:0px auto即可,虽然将一些属性配合使用也可以将div垂直居中与父元素中,但是在某些浏览器中并不兼容,下面就介绍一种兼容各大浏览器的方式.先看一段代码实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta

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

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

CSS解决未知高度垂直居中

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

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.未知高度宽度元素的水平垂直居中 ①  当元

未知高度的图片垂直居中

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>未知高度的图片垂直居中</title> 6 <meta name="author" content="http://www.cnblogs.com/leafsummer?qq=11580563"> 7 <style>

div垂直居中的N种方法 单行/多行文字(未知高度/固定高度)

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

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

未知高度定宽div水平居中及垂直居中(兼容ie6及其他牛逼浏览器)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>css</title> <style type="text/css"> * { margin:0; padding:0; list-style:none; } #vertical_box { width:100%; display:table; border:1