常用的css垂直居中方案
在进行HTML制作页面的过程中,总会遇到需要将元素或者文字进行水平垂直居中的要求。下面优尚设计就为大家介绍 CSS 中几种常用到的水平垂直居中的方法。
行内元素(单行文字垂直居中)
要点:设置 line-height = height
.test { height: 200px; border: 1px solid red; line-height: 200px }
块级元素:绝对定位
优点:兼容性不错
缺点:需要提前知道尺寸
.parent { position: relative; height: 200px } .child { position: absolute; top: 50%; left: 50%; margin-top: -20px; margin-left: -40px; width: 80px; height: 40px; background: #00f }
块级元素:绝对定位 + transform
优点:不需要提前知道尺寸
缺点:兼容性不好
.parent { position: relative; height: 200px } .child { position: absolute; top: 50%; left: 50%; width: 80px; height: 40px; background: #00f; transform: translate(-50%,-50%) }
块级元素:绝对定位 + margin: auto;
优点:不需要提前知道尺寸,兼容性好
缺点:这个方法是我最喜欢用的一个,要说缺点的话,我目前还不知道。
.parent { position: relative; height: 200px } .child { position: absolute; top: 0; right: 0; bottom: 0; left: 0; margin: auto; width: 80px; height: 40px; background: #00f }
块级元素:padding
缺点:如果高度固定,需要提前计算尺寸(只在某些特定情况适用)
.parent { padding: 5% 0 } .child { padding: 10% 0; background: #00f }
块级元素:display: table-cell
.parent { display: table; width: 600px; height: 200px; border: 1px solid red } .child { display: table-cell; vertical-align: middle }
或者:
.parent { display: table-cell; height: 300px; border: 1px solid red; vertical-align: middle }
同样适用于多行文字的垂直居中处理
HTML代码:
<div class="parent"> <span class="child">深圳市优尚企业形象设计有限公司成立于2013年,十年来一直立足深圳,面向全国。为品牌和企业提供品牌网站建设、集团网站建设、营销型网站建设、小程序开发、微信公众号开发、网站搜索引擎优化、品牌口碑营销等服务。我们通过商业策略、技术实现、情感连结融入互联网设计来创造具有活力的网站视觉及营销体验,结合线上资源来实现有效的价值传播</span> </div>
CSS代码:
.parent { display: table-cell; width: 400px; height: 300px; border: 1px solid red; vertical-align: middle } .child { display: inline-block; background: #00f; vertical-align: middle }
块级元素:display: flex
缺点:兼容性不好
.parent { display: flex; width: 600px; height: 200px; border: 1px solid red; align-items: center; justify-content: center } .child { background: #00f }
块级元素:伪元素
.parent { width: 300px; height: 300px; border: 1px solid red; text-align: center } .child { display: inline-block; width: 100px; height: 40px; background: #00f; vertical-align: middle } .parent::before { display: inline-block; height: 100%; content: '' vertical-align: middle }
块级元素:calc()
缺点:兼容性太差,需要计算,并不推荐。
.parent { position: relative; width: 300px; height: 300px; border: 1px solid red } .child { padding: -webkit-calc((100% - 100px)/ 2); padding: -moz-calc((100% - 100px)/ 2); padding: -ms-calc((100% - 100px)/ 2); padding: calc((100% - 100px)/ 2); width: 100px; height: 100px; background: #00f; background-clip: content-box }
块级元素:inline-block
HTML 代码:
<div class="parent"> <div class="child">深圳市优尚企业形象设计有限公司</div> <div class="brother">十年来一直立足深圳,面向全国</div> </div>
CSS 代码:
.parent { position: relative; width: 400px; height: 400px; border: 1px solid red } .brother,.child { display: inline-block; vertical-align: middle } .child { background: #00f; font-size: 12px } .brother { height: 400px; font-size: 0 }
表格元素:table
当然,还有一种方法,就是使用 table 布局:因为 html 还要加 table 等标签,冗余有点多,而且结构也改变了。
<table> <tr> <td align="center" valign="middle">content</td> </tr> </table>
您可能感兴趣的内容