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. SQL SERVER 2012修改数据库名称(包括 db.mdf 名称的修改)

    假设原来数据库名为db,附加数据库为db.mdf和db_log.ldf.需要改成dbt,及dbt.mdf和dbt_log.ldf. 步骤: .首先把原来的数据库进行备份(选择数据库->右键-&g ...

  2. 详细解析 HTTP 与 HTTPS 的区别

    详细解析 HTTP 与 HTTPS 的区别 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览 ...

  3. ubuntu sudo不能用的解决办法

    输入sudo 出现 sudo: /etc/sudoers 可被任何人写 sudo: 没有找到有效的 sudoers 资源,退出 sudo: sudoers的权限被改了 pkexec chmod 044 ...

  4. 申请微信小程序步骤

    一.注册 注册网址:https://mp.weixin.qq.com/ 选择账号类型:选择 小程序 注册账号 填写邮箱密码并激活:未注册过公众平台.开放平台.企业号.未绑定个人号的邮箱. 填写主体信息 ...

  5. 【转】C# GDAL 配置

    共生成9个dll,如下图: 1.在程序中添加*_csharp.dll四个文件的引用: 2.将剩余的五个文件复制到程序的Debug文件夹中:(如果不复制这五个文件就会出现类似“OSGeo.GDAL.Gd ...

  6. WebRequest的get及post提交

    static string get_html(string url) { var request = WebRequest.Create(url); var response = request.Ge ...

  7. SQL Server ->> PARSE函数

    这个函数和TRY_PARSE一起从SQL Server 2012引入.它的存在是因为TRY_PARSE一旦遇到无法成功转换就会以NULL值返回,而如果你希望以报错的形式,你就可以用PARSE. 比如 ...

  8. ns2.35-classifier.cc

    line143:recv() /* -*- Mode:C++; c-basic-offset:8; tab-width:8; indent-tabs-mode:t -*- */ /* * Copyri ...

  9. 工作好搭档(一):松林 SL-B3 人体工学椅

    本人从事码农这行职业,已经整整十年零九天,十年一觉如旧梦,仿佛昨天还在SARS. 2008年,我累到腰痛,脖子痛,怎么休息也不见好,去中医院检查,医生诊断,坐的太久,坐姿不对,运动少,轻度颈椎,腰肌劳 ...

  10. Kafka与MQ的区别

    作为消息队列来说,企业中选择mq的还是多数,因为像Rabbit,Rocket等mq中间件都属于很成熟的产品,性能一般但可靠性较强, 而kafka原本设计的初衷是日志统计分析,现在基于大数据的背景下也可 ...