当前位置:   article > 正文

多行文本垂直居中的三种方法

多行文本垂直居中

本篇是我整理的多行文本垂直居中的三种方法

效果图如下图



方法一:父元素使用display:table和子元素使用display:table-cell属性来模拟表格,子元素设置vertical-align:middle即可垂直居中

  1. <div class="span_box bg_box">
  2. <span class="words_span">
  3. 方法一:父元素使用display:table和子元素使用display:table-cell属性来模拟表格,子元素设置vertical-align:middle即可垂直居中
  4. </span>
  5. </div>
  1. .bg_box {
  2. width: 300px;
  3. height: 300px;
  4. margin-top: 20px;
  5. background-color: #BBBBBB;
  6. }
  7. /*方法一*/
  8. .span_box {
  9. display: table;
  10. }
  11. .words_span {
  12. display: table-cell;
  13. vertical-align: middle;
  14. }


方法二:对子元素设置display:inline-block属性,使其转化成行内块元素,模拟成单行文本。父元素设置对应的height和line-height。对子元素设置vertical-align:middle属性,使其基线对齐。添加line-height属性,覆盖继承自父元素的行高。缺点:文本的高度不能超过外部盒子的高度。

  1. <div class="p_box bg_box">
  2. <p class="words_p">
  3. 方法二:对子元素设置display:inline-block属性,使其转化成行内块元素,模拟成单行文本。父元素设置对应的height和line-height。对子元素设置vertical-align:middle属性,使其基线对齐。添加line-height属性,覆盖继承自父元素的行高。缺点:文本的高度不能超过外部盒子的高度。
  4. </p>
  5. </div>
  1. .bg_box {
  2. width: 300px;
  3. height: 300px;
  4. margin-top: 20px;
  5. background-color: #BBBBBB;
  6. }
  7. /*方法二*/
  8. .p_box {
  9. line-height: 300px;
  10. }
  11. .words_p {
  12. display: inline-block;
  13. line-height: 20px; /*单独给子元素设置行高,覆盖父级元素的行高*/
  14. vertical-align: middle; /*基线居中对齐*/
  15. }


方法三:脱离文档流的居中方式,把内部div设置宽高之后,再设置top为50%,使用负边距调整,将margin-top设置为负的高度的一半就可以垂直居中了。缺点:需要计算出多行文字固定的高度。高度一旦改变,负边距也要调整。

  1. <div class="wrapper bg_box">
  2. <div class="content_box">
  3. 方法三:脱离文档流的居中方式,把内部div设置宽高之后,再设置top为50%,使用负边距调整,将margin-top设置为负的高度的一半就可以垂直居中了。缺点:需要计算出多行文字固定的高度。高度一旦改变,负边距也要调整。</div>
  4. </div>
  1. .bg_box {
  2. width: 300px;
  3. height: 300px;
  4. margin-top: 20px;
  5. background-color: #BBBBBB;
  6. }
  7. /*方法三*/
  8. .wrapper {
  9. position: relative;
  10. overflow: hidden;
  11. }
  12. .content_box {
  13. position: absolute;
  14. top: 50%;
  15. width: 300px;
  16. height: 127px; /*本页面中这么多文字的高度,文本篇幅改变,高度也会变*/
  17.     margin-top: -63.5px; /*height的一半*/
  18. }


三种方法放一起的效果和代码

  1. <body>
  2. <div class="span_box bg_box">
  3. <span class="words_span">
  4. 方法一:父元素使用display:table和子元素使用display:table-cell属性来模拟表格,子元素设置vertical-align:middle即可垂直居中
  5. </span>
  6. </div>
  7. <div class="p_box bg_box">
  8. <p class="words_p">
  9. 方法二:对子元素设置display:inline-block属性,使其转化成行内块元素,模拟成单行文本。父元素设置对应的height和line-height。对子元素设置vertical-align:middle属性,使其基线对齐。添加line-height属性,覆盖继承自父元素的行高。缺点:文本的高度不能超过外部盒子的高度。
  10. </p>
  11. </div>
  12. <div class="wrapper bg_box">
  13. <div class="content_box">
  14. 方法三:脱离文档流的居中方式,把内部div设置宽高之后,再设置top为50%,使用负边距调整,将margin-top设置为负的高度的一半就可以垂直居中了。缺点:需要计算出多行文字固定的高度。高度一旦改变,负边距也要调整。</div>
  15. </div>
  16. </body>
  1. .bg_box {
  2. width: 300px;
  3. height: 300px;
  4. margin-top: 20px;
  5. background-color: #BBBBBB;
  6. }
  7. /*方法一*/
  8. .span_box {
  9. display: table;
  10. }
  11. .words_span {
  12. display: table-cell;
  13. vertical-align: middle;
  14. }
  15. /*方法二*/
  16. .p_box {
  17. line-height: 300px;
  18. }
  19. .words_p {
  20. display: inline-block;
  21. line-height: 20px; /*单独给子元素设置行高,覆盖父级元素的行高*/
  22. vertical-align: middle; /*基线居中对齐*/
  23. }
  24. /*方法三*/
  25. .wrapper {
  26. position: relative;
  27. overflow: hidden;
  28. }
  29. .content_box {
  30. position: absolute;
  31. top: 50%;
  32. width: 300px;
  33. height: 127px; /*本页面中这么多文字的高度,文本篇幅改变,高度也会变*/
  34. margin-top: -63.5px; /*height的一半*/
  35. }




声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号