转自这里:http://jinlong.github.io/blog/2013/08/13/centering-all-the-directions/

兼容低版本IE的方法

  • html使用表格结构
  • 背景图片居中
  • 使用css表达式
  • 绝对定位居中
  • display:inline-block
  • writing-mode方法
  • 负margin(实现必须知道定位元素的宽高)

只适合高级浏览器的方法

  • 使用button作为容器
  • 借助一个img标签,本质也是display:inline-block;
  • CSS3中的translate属性
  • 绝对定位法(top: 0; left: 0; bottom: 0; right: 0;)
  • CSS3 FlexBox

代码展示

绝对定位

<div class="container">
<p><img src="" /></p>
</div>
<style type="text/css">
div {
/*IE8与标准游览器垂直对齐*/
display:table-cell;
vertical-align:middle;
overflow:hidden;
position:relative;
text-align:center;
width:500px;/*装饰*/
height:500px;
border:1px solid #ccc;
background:#B9D6FF;
}
div p {
+position:absolute;
top:50%
}
img {
+position:relative;
top:-50%;
left:-50%;
}
</style>

CSS表达式

<div class="container">
<img />
</div>
.container{
/*IE8与标准游览器垂直对齐*/
display: table-cell;
vertical-align:middle;
width:500px;/*装饰*/
height:500px;
background:#B9D6FF;
border: 1px solid #CCC;
}
.container img{
display:block;/*让其具备盒子模型*/
margin:0 auto;
text-align:center;
margin-top:expression((500 - this.height )/2);/*让IE567垂直对齐 */
}

display:inline-block

<div class="container">
<i></i>
<img />
</div>
    <style type="text/css">
div {
display:table-cell;
vertical-align:middle;
text-align:center;
width:500px;
height:500px;
background:#B9D6FF;
border: 1px solid #CCC;
} </style>
<!--[if IE]>
<style type="text/css">
i {
display:inline-block;
height:100%;
vertical-align:middle
}
img {
vertical-align:middle
}
</style>
<![endif]-->

writing-mode

<div class="container">
<span>
<img />
</span>
</div>
div{
width:500px;
height:500px;
line-height:500px;
text-align:center;
background:#B9D6FF;
border:1px solid #f00;
}
div span{
height:100%\9;
writing-mode:tb-rl\9;
}
div img{
vertical-align:middle
}

使用button 居中  IE下点击会有1px down and right

<button>
<img src="" />
</button>

引入一个无语义的 img

<div class="itm">
<img src="" class="blank" alt="xx"/>
<img src="http://placehold.it/200x200" />
</div>
<style type="text/css">
.itm{border:2px solid #ccc;width:400px;height:400px;text-align:center;}
.blank{width:;height:100%;}
.itm img{vertical-align:middle;}
</style>

translate(-50%,-50%),因为translate是相对于自身的宽高

<div id="ex3_container">
  <div id="ex3_content">Hello World</div>
</div>
#ex3_container {
  width:200px; height:200px;
  background-color:yellow;
  position:relative;
}
#ex3_content {
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  -webkit-transform:translate(-50%,-50%);
  background-color:gray;
  color:white;
  position:absolute;
}

绝对定位 (不兼容IE6,7)

父容器元素:position: relative

注意:高度必须定义,建议加 overflow: auto,防止内容溢出。

<div class="outer">
<div class="iner"></div>
</div>
.outer{
position: relative;
width: 400px;
height: 400px;
border: 1px solid red;
}
.iner{
width: 50%;
height: 50%;
overflow: auto;
background-color: gray;
margin: auto;
position: absolute;
top:; left:; bottom:; right:;
}

视口居中  不兼容IE6

内容元素:position: fixed,z-index: 999,记住父容器元素 position: relative

.Absolute-Center {
width:50%;
height:50%;
overflow:auto;
margin:auto;
position:fixed;
top:;left:;bottom:;right:;
z-index:;
}

负 margin

.is-Negative {
width:300px;
height:200px;
padding:20px;
position:absolute;
top:50%;left:50%;
margin-left:-170px;/* (width + padding)/2 */
margin-top:-120px;/* (height + padding)/2 */
}

FlexBox   CSS3

.Container{
display: -webkit-box;
-webkit-box-align:center;
-webkit-align-items:center;
-webkit-box-pack:center;
-webkit-justify-content:center;
}

关于 CSS box-flex属性学习可以参考张鑫旭同学的博文:http://www.zhangxinxu.com/wordpress/?p=1338

CSS居中方法搜集的更多相关文章

  1. CSS居中方法

    css居中方法非常多,根据工作的实际情况采用恰当方法,可取到事半功倍的效果. 就常见的一些居中方法整理如下: 代码如下: <div class="con"> <d ...

  2. CSS 居中方法集锦

    记录收集纯CSS层面实现的水平.垂直居中方法可用于块级.行内快.内联元素以及文字图片等. 水平或垂直居中 1.1 text-align 1.2 margin 1.3 line-height 1.4 p ...

  3. CSS 居中方法集锦(*******************************)

      记录收集纯CSS层面实现的水平.垂直居中方法可用于块级.行内快.内联元素以及文字图片等. 水平或垂直居中 1.1 text-align1.2 margin1.3 line-height1.4 pa ...

  4. css居中方法与双飞翼布局

    居中 类型 方法 对应属性 水平 垂直 水平&垂直 1.父元素使用外边距自动 2.子元素显示行内块级元素,写入内容,父元素设置文本居中 3.给父元素开启非绝对和固定定位作为子元素开启绝对定位的 ...

  5. css居中方法小结

    水平居中 行内元素 如果被设置元素为文本.图片等行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的. 块状元素 当被设置元素为 块状元素 时用 text-align: ...

  6. css居中方法详解

    水平居中: 通过设置父元素,让子元素内容居中:text-align:center; 通过设置子元素本身,让子元素居中:margin:0 auto; 以上方法生效的前提条件是子元素没有被float元素影 ...

  7. css 居中方法

    垂直居中 利用“精灵元素”(ghost element)技术实现垂直居中,即在父容器内放一个100%高度的伪元素,让文本和伪元素垂直对齐,从而达到垂直居中的目的. .ghost-center { po ...

  8. CSS中各种各样居中方法的总结

    在开发前端页面的时候,元素的居中是一个永远都绕不开的问题.看似简单的居中二字,其实蕴含着许许多多的情况,对应着很多的处理方法,本文就试图对页面布局中的居中问题进行总结~~ 居中问题分为水平居中和竖直居 ...

  9. CSS居中的方法整合--水平居中

    原文 CSS的居中问题,是一个老生常谈的问题,各种居中方法层出不穷.是水平居中还是垂直居中?是block还是inline? 居中对象是一个还是多个?长度宽度是否确定?等等各种因素确定. 这里就从这些方 ...

随机推荐

  1. crawler_爬虫代理方案

    爬虫往往会遇到各种限制ip问题 理方案(爬虫) IP代理软件 优势标记: 是 自动切换IP 基本无开发成本标记: 黄色, 考虑切换IP时 ,网络瞬时异常 IP池,由商家维护 劣势标记: 非 部署 每个 ...

  2. Java 递归算法

    其基本思路是递归算法设计:对于一个复杂的问题,原问题分为几个子问题相似相对简单.继续下去,直到孩子可以简单地解决问题,这是导出复发,因此,有复发的原始问题已经解决. 关键是要抓住: (1)递归出口 ( ...

  3. 前端学习笔记(zepto或jquery)——对li标签的相关操作(五)

    对li标签的相关操作——has与find的差异性 demo代码: <ul> <li><p>1</p></li> <li>2< ...

  4. Linux报too many open files的解决方案

    今天系统中有一台服务器出现异常,有时连简单的shell命令都无法执行,各种奇怪的报错,有的时候又可以成功执行 如: -bash: error while loading shared librarie ...

  5. 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索

    原文:[高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索 摘要:地图服务,大家能想到哪些?POI搜素,输入提示,地址解析,公 ...

  6. 传智播客.Net培训就业班入学测试题

    2.对学员的结业考试成绩评测,要求在控制台中提示用户输入学员考试成绩,写一个方法,根据用户输入的成绩,返回一个等级:90分以上A级.80~90分B级.70~80分C级.60~70分B级.60分以下C级 ...

  7. 赵雅智_Android编码规范

    凝视 导入mycodetemplates.xml统一凝视样式 须要加凝视的地方 类凝视(必加) 方法凝视(必加) 块凝视主要是数据结构和算法的描写叙述(必加) 类成员变量和常量凝视(选择性加入) 单行 ...

  8. 突破IP限制动态替换代理ip。

    须要导入的两个jar包 实现的javabean <span style="font-size:18px;">package com.jx.po; public clas ...

  9. 安裝 Rails 開發環境

    安裝 Rails 開發環境 Give someone a program, you frustrate them for a day; teach them how to program, you f ...

  10. DevExpress asp.net 导出Excel 自动开启迅雷问题,默认保存为aspx页面

    目前采取曲线救国策略: 利用MVC ..... <dx:ASPxGridView ID="ASPxGridView1" runat="server" Au ...