以下方案的通用代码:

HTML code:

<div class="box">
<div class="content">
<!--content body-->
</div>
</div>

CSS code:

.box{width:100%;height:500px;background-color: #00ff00;}
.content{width:300px;height:300px;background-color: #f0f000;}

1.position top:50%;left:50%+margin-top: -1/2height;margin-left: -1/2width;

CSS样式:

 .box{position: relative;}
.content{position: absolute;top:50%;left:50%;margin-top: -150px;margin-left: -150px;}

原理:

内容块以盒子为参考做绝对定位,通过top:50%;left:50%;使内容块的左上角处于box的中心位置;

通过设置内容块的margin值margin-top: -150px;margin-left: -150px;,使其中心位置和box的中心位置重合,达到居中效果;

兼容:

兼容所有浏览器,包括IE6及以上;

2.position top:0;bottom:0;left:0;right:0;+margin: auto;

CSS样式:

.box{position: relative;}
.content{position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;}

原理:

内容块以盒子为参考做绝对定位,通过top:0;left:0;bottom:0;right:0;使内容块撑开为box大小;

设置宽高后,重新渲染内容块大小填充不了整个box,默认位于左上角,通过设置``margin:auto;`使内容块实现上下左右居中;

在文档流中,margin:auto;会被认为是margin-top:0;margin-bottom:0;而绝对定位使块脱离文档流,margin:auto;能让块在top:0;left:0;bottom:0;right:0;组成的边界中垂直居中;

margin:auto;在绝对定位中才能实现垂直居中;

兼容:

IE8以下不支持

3.display: table-cell;vertical-align:middle+margin:0 auto;

CSS样式:

.box{display: table-cell;vertical-align:middle;}
.content{margin:0 auto;}

原理:

table-cell可以将块设置成表格单元格形式,此时设置vertical-align:middle;将基线设置为单元格中间,故可实现垂直居中;

margin:0 auto;使内容块实现水平居中;

兼容:

IE6和7不兼容table-cell

4.inline-block+ vertical-align:middle;

CSS样式:

.box{text-align:center;}
.box:after{content:'';height:100%;display:inline-block;vertical-align:middle;}
.content{display:inline-block;vertical-align:middle;margin-left:-0.25em;}

原理:

vertical-align用于设置垂直对齐方式,定义行内元素的基线相对于元素所在行基线的垂直对其方式。假设有两个行内元素a和 b,a和b都是img,当a加了一个vertical-align:middle样式之后,b的底部(基线)就会对齐a的中间位置。

text-align使行内块居中显示,after伪类设置成行内块,并且设高度为100%,vertical-align:middle;以后将基线设置成box的中间线,相当于display:table-cell;

由于行内块默认有左右margin值,导致内容块与居中有偏差,故设一个左外边距为负值margin-left:-0.25em;

兼容:

IE6和7不支持inline-block

css布局之块上下左右居中的更多相关文章

  1. 理解 CSS 布局和块级格式上下文

    前言 BFC 的概念始于 CSS2,是个蛮古老的 CSS 话题了,网上也到处能搜到 BFC 的介绍,但是都不够简洁.本文系翻译自 Rachel Andrew 女士的博文 Understanding C ...

  2. css布局:块级元素的居中

    一.定宽: 1.定位居中(absolute) 方法一: html: <div class="main"></main> css: .main{ width: ...

  3. CSS布局奇技淫巧:各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  4. CSS布局技巧之——各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  5. css div上下左右居中

    相信大家都会遇到这样的问题,要求一个块上下左右居中,在这里我总结了几个好用的方法 1.已知要居中的块width height 假设  content 要在f里上下左右居中 <div class= ...

  6. CSS布局一

    CSS布局一 实例一(居中) div#container{ width:960px; height:650px; margin:0 auto; border:1px solid #ccc; /*就是说 ...

  7. css:子元素div 上下左右居中方法总结

    最近在面试,不停地收到了知识冲击,尤其是对于一些基础的css.html.js问题居多,所以自我也在做反思,今天就css问题,如何让一个子元素div块元素上下左右居中 (以下总结方法,都已得到验证). ...

  8. CSS布局——居中

    参考文章1.CSS布局奇淫技巧之--各种居中 2.http://www.imooc.com/article/2235 1.行内元素水平居中text-align:center对图片,按钮,文字等行内元素 ...

  9. 用CSS让DIV上下左右居中的方法

    转载自喜欢JS的无名小站 例如 一个父div(w:100%;h:400px)中有一个子div(w:100px;100px;).让其上下左右居中. 方法一(varticle-align) 理念 利用表格 ...

随机推荐

  1. vs错误【C1083 C1854 C4727】的若干解决办法(对预编译文件头的解释)

    这几天写程序,无意间把编译中间文件给删了,然后就出现了C1083编译错误. xxx.cpp ..\commen\xxx.cpp(2) : fatal error C1083: 无法打开预编译头文件:“ ...

  2. git创建标签

    创建标签 在Git中打标签非常简单,首先,切换到需要打标签的分支上: $ git branch * dev master $ git checkout master Switched to branc ...

  3. mongodb remove删除文档的用法

    在看<mongoDB权威指南>中,在删除文档时,出现问题: 书中介绍:采用db.foo.remove()命令则可以删除foo集合中所有的文档,但是在执行该命令时,shell客户端却报错. ...

  4. 了解Linux 命名空间

    转载: http://laokaddk.blog.51cto.com/368606/674256 命名空间提供了虚拟化的一种轻量级形式,使得我们可以从不同的方面来查看运行系统的全局属性.该机制类似于S ...

  5. applet部署,无需修改客户端设置。

    1  开发applet程序,编译成jar包 2  给jar包做数字签名: (1).用keytool生成密钥: keytool -genkey -keystore myapplet.keystore - ...

  6. 编tuxedo遇到服务问题

    各种错误的程序报构建服务: 1.  配置为执行环境变量tmboot –y启动管理流程和服务流程 2.  每日班似这个错误:buildserv:error while loading shared li ...

  7. HDOJ 1495 非常可乐 【BFS】

    非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. AngularJs (二) 搭建Deployd 服务爬坑

    Deployd 爬坑 按照书上的教程,介绍Deployd 这个东东,首先进入其deployd.com/网页,发现这个东东着实厉害. THE SIMPLEST WAY TO BUILD AN API 按 ...

  9. UICollectionView 简单的使用和注意事项

    UICollectionView 在创建的时候,要给它一个UICollectionViewFlowLayout (不然会崩溃),就像tableview一样,也要为它注册自定义的cell. UIColl ...

  10. STL模板_multimap_智能指针作为键值

    map的键值的类型 -可以是自定的类型(对象.函数指针.智能指针....) -但是有副作用-当自己定义的类型键值无法用系统自己提供的 < 或者 > 进行排序的时候,会出现各种问题 -所以需 ...