美文网首页让前端飞
垂直居中方法总结

垂直居中方法总结

作者: 米几V | 来源:发表于2017-05-03 17:21 被阅读0次

  垂直居中是一个老话题,我总结一下我所遇到的垂直居中方法,欢迎大家更正补充。


单行文本

  相信大家对单行文本垂直居中并不陌生,让height等于line-height就可以,示例如下:

<p class="one_line">这里是高度为150像素的标签内的单行文字。</p>

.one_line{width:300px;height:150px;line-height:150px;text-align:center;font-size:12px;border:1px dashed#cccccc;color:#5588aa;}

图1:单行文字垂直居中

多行文本

1.基于vertical-align的方法

<div class="multi_line_1">

   <p>这里是高度为150像素的标签内的多行文字,文字大小为12像素。这里是第二行,用来测试多行的显示效果。</p>

</div>

.multi_line_1{line-height:150px;}

.multi_line_1>p{display: inline-block; line-height: 1.4em; vertical-align: middle; background: #5588aa; margin-top:0;font-size: 12px;}


图2:多行文本垂直居中

2.基于table-cell的方法

  其html代码参考“基于vertical-align的方法”,代码渲染结果同图2。

.multi_line_3{height:150px;display:table-cell;vertical-align:middle;}

.multi_line_3>p{background:#5588aa;}

3.基于calc()函数

   calc()函数的出现,使我们可以在css中能动态计算长度值。其html代码参考“基于vertical-align的方法”,代码渲染结果同图2。

.multi_line_5{height:150px;position:relative;}

.multi_line_5>p{width:250px;height:70px;position:absolute;background:#5588aa;margin:0;top:calc(50% -35px);left:calc(50% -125px);font-size: 12px;}

浏览器对calc()函数的支持情况如下:

浏览器对calc()函数的支持情况

使用calc()函数时要注意,函数内部的-和+运算符的两侧各加一个空白符,否则会产生解析错误!这个规则如此怪异,是为了向前兼容:未来,在calc()函数内部可能会允许使用关键字,而这些关键字可能会包含连字符。

4.基于translate()

   当我们使用绝对定位并将top设置为50%,此时待居中元素顶端距离父元素顶端的距离为父元素高度的一半,如果能将带居中元素向上移动自身高度的一半,则实现了垂直居中。随着css3的出现,使其变为可能,当我们在translate()变形函数中使用百分比时,是以这个元素自身的高度和宽度进行计算和移动的。其html代码参考“基于vertical-align的方法”,主要代码如下:

.multi_line_4{height:150px;position:relative;}

.multi_line_4>p{background:#5588aa;position:absolute;margin-top:0; transform: translate(-50%,-50%); top:50%;left:50%;}


5.基于flex布局的方法

  Flex布局为弹性布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持。有关flex布局的讲解请参考这里。浏览器对flex布局的支持情况如下:

浏览器对flex布局的支持情况

   当我们使用flex布局时,margin:auto不仅水平方向上将元素居中,垂直方向上也是。我们需要做的非常简单,将待居中元素的父元素设置为flex布局,即display:flex,然后再将待居中元素的margin设为auto,代码渲染结果同图2。

.multi_line_2{display:flex;height:150px;}

.multi_line_2>p{background:#5588aa;margin:auto;}

  Flex布局的另一个好处是,它可以将匿名容器(即未被标签包裹的文本节点)垂直居中。

<div class="multi_line_6">这里是高度为150像素的标签内的多行文字,文字大小为12像素。这里是第二行,用来测试多行的显示效果。</div>

.multi_line_6{display:flex;height:150px;align-items:center;}

相关文章

  • CSS水平垂直居中总结

    CSS水平居中、垂直居中、水平垂直居中方法总结 文字的水平居中: 单行文字的垂直居中: 让有宽度的div水平居中:...

  • Css让div在屏幕上居中

    # 让div在屏幕上居中(水平居中+垂直居中)的方法总结 - html代码如下: - Css居中方法 (敲黑板)...

  • CSS垂直居中

    CSS垂直居中的方法总结: 1.利用padding垂直居中(line-height用于单行文本居中) **不需要设...

  • 实现元素水平居中的五种方法

    概述 我们平时看到的居中效果主要分为三大类,水平居中,垂直居中和水平垂直居中,在这里总结以下元素水平居中的方法。 ...

  • css实现水平垂直居中的方法总结

    css实现水平垂直居中的方法总结 实现水平垂直居中你有多少种方法?这是前端面试必考题啊!-=- 这段时间公司招前端...

  • 常用的居中方法

    本文将介绍的居中方法有 ,水平居中,垂直居中和水平垂直居中。 一水平居中 二水平垂直居中

  • 垂直居中的这点事

    标签(空格分隔): css 垂直居中浮动元素 垂直居中元素,在布局中经常使用,总结一下: 方法一:已知元素的高宽 ...

  • 前端页面布局中常用的垂直居中效果的实现总结

    现在总结三种比较实用的垂直居中的方法 1、多个块级元素垂直居中,利用绝对定位以及 transform ,适用于不知...

  • html css居中

    1.垂直居中(方法一) 总结: line-height 设置垂直居中行高,指代文本中,行与行之间的基线间的距离。L...

  • 垂直居中的多种写法

    1、垂直居中 2、水平居中 3、垂直水平居中 方法1:使用绝对定位 方法二:使用display:flex 扩展1:...

网友评论

    本文标题:垂直居中方法总结

    本文链接:https://www.haomeiwen.com/subject/eswktxtx.html