方法一:position加margin 
方法二: diaplay:table-cell 
方法三:position加 transform 
方法四:flex;align-items: center;justify-content: center 
方法五:display:flex;margin:auto 
方法六:纯position 
方法七:兼容低版本浏览器,不固定宽高

总结

这种css布局平时用的比较多,也是面试题常出的一个题,网上一搜一大丢,不过还是想自己总结一下。

这种方法比较多,本文只总结其中的几种,以便加深印象。

效果图都为这个:

方法一:position加margin

/**html**/

<div class="wrap">

   <div class="center"></div>

</div>

/**css**/

.wrap {

   width: 200px;

   height: 200px;

   background: yellow;

   position: relative;

}

.wrap .center {

   width: 100px;

   height: 100px;

   background: green;

   margin: auto;

   position: absolute;

   left: 0;

   right: 0;

   top: 0;

   bottom: 0;

}

兼容性:主流浏览器均支持,IE6不支持

方法二: diaplay:table-cell

<!-- html -->

<div class="wrap">

    <div class="center"></div>

</div>

/*css*/

.wrap{

   width: 200px;

   height: 200px;

   background: yellow;

   display: table-cell;

   vertical-align: middle;

   text-align: center;

}

.center{

   display: inline-block;

   vertical-align: middle;

   width: 100px;

   height: 100px;

   background: green;

}

兼容性:由于display:table-cell的原因,IE6\7不兼容

方法三:position加 transform

<!-- html -->

<div class="wrap">

   <div class="center"></div>

</div>

/* css */

.wrap {

   position: relative;

   background: yellow;

   width: 200px;

   height: 200px;}

.center {

   position: absolute;

   background: green;

   top:50%;

   left:50%;

   -webkit-transform:translate(-50%,-50%);

   transform:translate(-50%,-50%);

   width: 100px;

   height: 100px;

}

兼容性:ie9以下不支持 transform,手机端表现的比较好。

方法四:flex;align-items: center;justify-content: center

<!-- html -->

<div class="wrap">

   <div class="center"></div>

</div>

/* css */

.wrap {

   background: yellow;

   width: 200px;

   height: 200px;

   display: flex;

   align-items: center;

   justify-content: center;

}

.center {

   background: green;

   width: 100px;

   height: 100px;

}

移动端首选

方法五:display:flex;margin:auto

<!-- html -->

<div class="wrap">

   <div class="center"></div>

</div>

/* css */

.wrap {

   background: yellow;

   width: 200px;

   height: 200px;

   display: flex;

}
.center { background: green; width: 100px; height: 100px; margin: auto; }

移动端首选

方法六:纯position

<!-- html -->

<div class="wrap">

   <div class="center"></div>

</div>

/* css */

.wrap {

   background: yellow;

   width: 200px;

   height: 200px;

   position: relative;

}

/**方法一**/

.center {

   background: green;

   position: absolute;

   width: 100px;

   height: 100px;

   left: 50px;

   top: 50px;

  

}

/**方法二**/

.center {

   background: green;

   position: absolute;

   width: 100px;

   height: 100px;

   left: 50%;

   top: 50%;

  margin-left:-50px;

  margin-top:-50px;

}

兼容性:适用于所有浏览器

方法六中的方法一计算公式如下:

子元素(conter)的left值计算公式:left=(父元素的宽 - 子元素的宽 ) / 2=(200-100) / 2=50px; 
子元素(conter)的top值计算公式:top=(父元素的高 - 子元素的高 ) / 2=(200-100) / 2=50px;

方法二计算公式: 
left值固定为50%; 
子元素的margin-left= -(子元素的宽/2)=-100/2= -50px; 
top值也一样,固定为50%

子元素的margin-top= -(子元素的高/2)=-100/2= -50px;

方法七:兼容低版本浏览器,不固定宽高

<!-- html -->

<div class="table">

   <div class="tableCell">

       <div class="content">不固定宽高,自适应</div>

   </div>

</div>

/*css*/

.table {

   height: 200px;/*高度值不能少*/

   width: 200px;/*宽度值不能少*/

   display: table;

   position: relative;

   float:left;

   background: yellow;

}      

.tableCell {

   display: table-cell;

   vertical-align: middle;

   text-align: center;        

   *position: absolute;

   padding: 10px;

   *top: 50%;

   *left: 50%;

}

.content {

   *position:relative;

   *top: -50%;

   *left: -50%;

    background: green;

}

转自:

css实现容器垂直水平居中的七中方法的更多相关文章

  1. 使用Sass优雅并高效的实现CSS中的垂直水平居中(附带Flex布局,CSS3+SASS完美版)

    实现css水平垂直居中的方法有很多,在这里我简单的说下四种比较常用的方法: 1.使用CSS3中的Flex布局 对于flex,我们要了解的是它是一个display的属性,而且必须要给他的父元素设置fle ...

  2. 纯CSS实现元素垂直水平居中-非固定宽度

    这里不讨论行内元素的居中!! 盒子垂直居中+水平居中的需求时经常遇到的,看到的较多实现逻辑是固定content-box的宽度,通过让margin-left和margin-top等于宽或高的负一半来实现 ...

  3. 【css】图片垂直水平居中

    一.已知宽高的图片实现垂直水平居中 1.借助margin-top负边距实现垂直居中 <!DOCTYPE html> <html> <head> <meta c ...

  4. Css实现垂直水平居中的六种方法

    经常在项目中用到,今天总结了一下: 演示地址:http://codepen.io/anon/pen/xGdpOa 以下两个类为公共类,便于更好的显示效果,非核心代码 .common{ width: 6 ...

  5. 纯CSS完美实现垂直水平居中的6种方式

    前言 由于HTML语言的定位问题,在网页中实现居中也不是如word中那么简单,尤其在内容样式多变,内容宽高不定的情况下,要实现合理的居中也是颇考验工程师经验的.网上讲居中的文章很多,但是都不太完整,所 ...

  6. 移动端toast 提示,HTML css 全屏垂直水平居中

  7. CSS垂直水平居中方法总结

    在布局的时候经常能用到居中,在此总结一下 html结构: <div class="wrap"> <div class="content"> ...

  8. css实现垂直水平居中的5种方法

    css实现垂直水平居中的5种方法 给父元素设置table-cell,text-align,vertical-align #big{ width: 200px; height: 200px; borde ...

  9. css实现垂直水平居中的方法(个数不限)?

    方法一:使用绝对定位 大家都知道margin:0 auto;能够实现水平居中,但却不知道margin:0 auto;也是可以实现垂直居中的: 给居中元素添加如下样式: .Absolute-Center ...

随机推荐

  1. 每天一个 Linux 命令(21):find命令之xargs

    在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行.但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出 ...

  2. Linux 文件压缩与归档

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  3. wireshark lua脚本

    1.目的:解析rssp2协议   2.如何使用wireshark lua插件 将编写的(假设为rssp2.lua)lua文本,放入wireshark 安装目录下,放哪里都行只要dofile添加了路径. ...

  4. AJAX应用小案例

    此案例在XAMPP本地服务器上运行,需要应用jquery3.1.1的版本,应用JSON传递数据 代码如下: html代码: <!DOCTYPE html><html lang=&qu ...

  5. SharePoint "System.Data.SqlClient.SqlException (0x80131904): Parameter '@someColumn' was supplied multiple times.“

    最近在处理SharePoint Office365的相关开发的时候发现了这样一个奇怪的现象: 无法通过API更新Editor field,只要已更新就会throw Exception,由于是Offic ...

  6. Django基础,Day7 - 添加静态文件 static files

    添加css样式文件 1.首先在app目录下创建static文件夹,如polls/static.django会自动找到放在这里的静态文件. AppDirectoriesFinder which look ...

  7. css3 同时加载两个动画

    最近在做H5,遇到这样的需求(如题) 先上一部分代码: .cur .p1d1d4{   width: 3rem;   margin: 2rem 5.3rem 0 0;   -webkit-animat ...

  8. AssetBundle

    AssetBundle是Unity推荐的一种资源打包方式,与不使用AssetBundle相比,它有如下优点: 1.AssetBundle是经过LZMA压缩过的,所以体积更小. 2.可以将AssetBu ...

  9. [译]Object.getPrototypeOf

    原文 概要 返回指定object的prototype. 语法 Object.getPrototypeOf(object) 参数 object 要返回原型的对象. 描述 当object参数不是一个对象的 ...

  10. Oracle初级函数的使用

    --1.字符函数--UPPER(string|column) 可以将字符转成大写select upper('helloword') from dual;select upper(ename) from ...