以下方案的通用代码:

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. nautilus-open-terminal右键随处打开终端

    Nautilus-Open-Terminal : 可随处打开终端的 Nautilus 插件 nautilus-open-terminal-0.17-4.el6.x86_64 是一个让你随处都可以打开终 ...

  2. 柯南君:看大数据时代下的IT架构(7)消息队列之RabbitMQ--案例(routing 起航)

    二.Routing(路由) (using the Java client) 在前面的学习中,构建了一个简单的日志记录系统,能够广播所有的日志给多个接收者,在该部分学习中,将添加一个新的特点,就是可以只 ...

  3. Navicat for mysql 导出sql文件 导入sql文件

    运行速度快 不受大小限制 安全高效

  4. java学习之多线程

    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程(Lightweight Process,LWP)是程序中一个单一 ...

  5. 数据库CRUD操作

    CRUD操作: C:create 增加数据: insert into 表名 values('N001','汉族') 普通 insert into 表名 values('','','') 如果有自增长列 ...

  6. javascript数组去重算法-----4(另一种写法)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 怎样在一个页面使多个setInterval函数正常执行

    var firstInterval; var secondInterval; function firstAlert(){ if(firstInterval) clearInterval(firstI ...

  8. 音乐ID3 中 专辑封面解析(APIC帧)

    ID3V2 中 APIC 帧标识 专辑封面.前几天 百度 谷歌 都没有找到具体的说明.有点小伤人. 最好参考  Android 中的 id3.cpp 以及一个java 开源 id3 库.找到这里的规格 ...

  9. Windows内核之进程的终止和子进程

    1 进程终止的方法: <1>主线程的进入点函数返回(最好使用这种方法) <2>进程中的一个线程调用ExitProcesss函数(应该避免使用这样的方法). <3>还 ...

  10. CSS蒙版

    蒙版:就是在图片上添加一个图层,用于美化页面,增加页面的可读性 <!DOCTYPE html><html><head lang="en"> &l ...