小小的总结一下:行内元素水平居中用text-align: center;块级元素水平居中用margin-left: auto; margin-right: auto;

首先讨论一下单行时的情况。

毫无疑问,这是最简单的一种情况。

HTML结构如下:

 <div class="demo">
<span>111111111111111111111111111111111111</span>
</div>

高度不固定(这种方法同样适用于多行文时的情况,下面就不再讨论)

 .demo {
text-align: center;
padding-top: 20px;
padding-bottom: 20px;
}

高度固定

 .demo {
text-align: center;
height: 100px;
line-height: 100px;
}

接下来,讨论下多行时的情况。

HTML结构如下:

 <div class="demo">
<span>111111111111111111111111111111111111<br />22222222222222222222</span>
</div>

高度不固定时只需要添加pading值就可以,不多加讨论了。

高度固定时

方法一:父元素设置display: table,子元素设置display:table-cell。利用了表格的特性。

 .demo {
height: 100px;
display: table;
margin-left: auto;
margin-right: auto;
}
.demo span {
display: table-cell;
vertical-align: middle;
}

方法二:父元素设置position: relative,子元素设置position: absolute。主要是利用了translate的中心是相对于元素本身的特点。

 .demo {
position: relative;
height: 100px;
} .demo span {
position: absolute;
left: 50%;
top: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
}

方法三:利用flex布局。

 .demo {
height: 100px;
display: -webkit-box;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: center;
-webkit-justify-content: center;
-ms-flex-pack: center;
justify-content: center;
-webkit-box-align: center;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}

方法四:利用:after,:before伪类,结合inline-block的特性实现垂直居中。

 .demo {
height: 100px;
text-align: center;
} .demo:after, .demo:before {
display: inline-block;
vertical-align: middle;
width:;
height: 100%;
visibility: hidden;
content: '';
} .demo span {
display: inline-block;
vertical-align: middle;
}

暂时就想到这些了。

最新文章

  1. .htaccess中Apache配置详解
  2. 以策略为导向的VI设计
  3. MySQL数据库集群进行正确配置步骤
  4. nodeJS+express+Jade写一个局域网聊天应用(node基础)
  5. ACM: 强化训练-Beautiful People-最长递增子序列变形-DP
  6. tomcat启动出错(转)
  7. JQuery 表格 隔行换色 和鼠标滑过的样式
  8. Linux中Kill进程的N种方法
  9. C++和java的区别
  10. 九度OJ 1082 代理服务器 -- 贪心算法
  11. jQuery Tags Input Plugin 插件的使用
  12. Swift实现OC中的单例模式
  13. LYNC2013介绍和基础架构准备角色
  14. 【Centos】修改系统字符集
  15. 这个接口管理平台 eoLinker 开源版部署指南你一定不想错过
  16. 【Python】批量修改指定目录下所有文件的文件名/后缀
  17. adb 安装安卓包
  18. rgba()和opacity之间的区别(面试题)
  19. 如何给30台centos7服务器分别增加相同的用户
  20. Linux交换空间(swap space)

热门文章

  1. linux之SQL语句简明教程---Subquery
  2. hdu 1010 Tempter of the Bone 深搜+剪枝
  3. poj1163 dp入门
  4. VMware虚拟机中调整Linux分区大小手记(转发)
  5. EditText默认不显示光标,不可编辑,点击它,进入编辑状态,光标显示
  6. UIButton, KVC, KVO
  7. JS判断是否在微信浏览器打开
  8. struts2的对象工厂(ObjectFactory)
  9. [Django] html 前端页面jQuery、图片等路径加载问题
  10. Delphi SysErrorMessage 函数和系统错误信息表