1.Flexbox布局:

display:flex;
justify-content:center;
align-items:center;
width:100%;

2.Bootstrap栅格布局

一共12格,分成3块,每块占4列。居中的内容写在中间的那一块。

3.圣杯/双飞翼(水平自适应居中的基础上)

第一步:居中的div写在最前面,width:100%撑满一整行。三个div都向左浮动float:left;

<div class="main">Main</div>
<div class="left">Left</div>
<div class="right">Right</div>

第二步:让三个div显示在同一行

div.left { marin-left:100%}
div.right{ marin-left:自身的宽度}

第三步:让中间的div能够自适应

圣杯布局的做法:

div.main{
padding-left:左div的宽度;
padding-right:右div的宽度;
}

双飞翼布局的做法:

div.main内部再添加一个div.mc

然后设置div.mc的margin

margin-left:左div的宽度;
margin-right:右div的宽度;

现在,水平居中已经实现了;

第四步:垂直居中



div.left,div.right,div.main外面再加一个div.wrap,

然后对div.con设置 display:table,对div.wrap设置

display:table-cell;
vertical-align:middle;

4.relative/positive + top/left+tarnsform

父元素:

position:relative

子元素:

position:absolute;
top:50%;
left:50%;
transform: translate(-50%, -50%);

transform: translate(-50%, -50%);意思是向右移动自身50%的宽度,向下移动自身50%的高度。

为什么有了top:50%;left:50%还要 transform: translate(-50%, -50%);

最初:

加了top:50%;left:50%后:

还需要再往左、往上挪一挪:

5.relative/positive + top/left+left + margin

和方法4一样,用top和left挪到中间:

这之后用margin-leftmargin-right进行处理:

先给div.child设置宽度,然后设置margin

6.用top,left,bottom,right

计算公式:

top + div.child 的 height +bottom = div.parent 的 height

left + div.child 的 width +right = div.parent 的 width

如果子元素是行内元素,如<p>,要注意一开始就要去掉margin和padding

方法4、5、6有的demo,详见 github

div自适应水平垂直居中的方法的更多相关文章

  1. div盒子水平垂直居中的方法推荐

    父盒子是position:relative 方法一:(宽高确定) div绝对定位水平垂直居中[margin 负间距], 方法二: (宽高确定) div绝对定位水平垂直居中[margin:auto实现绝 ...

  2. div盒子水平垂直居中的方法

    这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居中同样的效果,也支持联合可变高度方式使用.内容块定义t ...

  3. DIV文字水平垂直居中的方法

    水平居中 text-align:center 垂直居中(vertical-align) vertical-align:middle; vertical-align时而没效果 然而真实使用的时候,我们会 ...

  4. div盒子水平垂直居中方法

    文章转载自:div盒子水平垂直居中的方法 - 雪明瑶 这个问题比较老,方法比较多,各有优劣,着情使用. 一.盒子没有固定的宽和高 方案1.Transforms 变形 这是最简单的方法,不仅能实现绝对居 ...

  5. 一个div在另一个div中水平垂直的方法

    html <div id="main"> <div id="box"> 一个div在另一个div中垂直居中实现方法 </div&g ...

  6. 53.CSS---CSS水平垂直居中常见方法总结

    CSS水平垂直居中常见方法总结 1.元素水平居中 当然最好使的是: margin: 0 auto; 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是 ...

  7. Div实现水平垂直居中

    在实际应用中很多地方不仅要求实现元素的水平居中或者垂直居中效果,还可能会在水平方向和垂直方向上都要实现居中效果,下面就简单介绍几种元素水平垂直居中的方法(注:不同的方法会存在一些优缺点以及兼容性问题) ...

  8. css3 flex 详解,可以实现div内容水平垂直居中

    先说一下flex一系列属性: 一.flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐) ※ flex-direction:row- ...

  9. css的div动态水平垂直居中

      div动态水平垂直居中,思路如下: (1)先定位.如果相对于距离最近的父元素,用absolute:如果相对于body,用fixed. (2)然后,top和left都设为50%. (3)要居中的di ...

随机推荐

  1. spring的aop 基于schema

    AOP为Aspect Oriented Programming的缩写,意为:面向切面编程 一 前期工作 1.新建一个java项目,我是使用的maven,所以我新建了一个简单的maven项目,因为mav ...

  2. IntelliJ IDEA16 热部署,解决每次修改java文件就得重启tomcat的问题

    这样就可以了....

  3. ERP与电子商务的集成

    目前现状: 一般来说,企业中存在三种流:物资流.资金流和信息流,其中,信息流不是孤立存在的,它与物资流和资金流密切相关,反映了物资和资金流动前.流动中和流动后的状况. 电子商务与ERP被分裂开来,没有 ...

  4. 初学js的穷举思想

    初学者,最关机键的,就是掌握for的穷举思想. 穷举:穷尽.完全.全部. 具体方法: 外层:用for循环一一列举所有可能性 内层:用if语句进行判断,如果满足条件就输出,不满足的跳出进行下次循环. & ...

  5. Ubuntu上如何搭建Android开发环境

    1.以下是开始Android应用程序编程之前需要的软件列表: a.Java JDK5 及以后版本 b.Java运行环境 c.Android Studio 2.安装Android Studio: x64 ...

  6. Java基础之final和static关键字

    一.final        根据程序上下文环境,它可以修饰非抽象类.非抽象类成员方法和变量.         final类不能被继承,没有子类,final类中的方法默认是final的.        ...

  7. SQL日期转换

    SQL 语句日期用法及函数 --DAY().MONTH().YEAR()——返回指定日期的天数.月数.年数: select day(cl_s_time) as '日' from class  --返回 ...

  8. Dapper批量添加

    Public void Add() {  List<PPQuery> lists = GetDataByFile(tempFilePath); private static readonl ...

  9. 未在本机注册Microsoft.ACE.OleDb.12.0

    服务器版本:Windows Server 2008 R2 64位.IIS7 已经安装了Microsoft Access database engine 2010 X64. 在服务器上可以用SQL Se ...

  10. 如何向数据库中添加TIMESTAMP(6)类型的数据

    to_timestamp('2011-11-11 11:11:11.1','yyyy-mm-dd hh24:mi:ss.ff')