前端面试系列-CSS基础-div水平垂直居中&&文本居中(单行文字、多行文字)

谁借莪1个温暖的怀抱¢ 2022-11-13 14:28 293阅读 0赞

文章目录

  • 一、div水平垂直居中
    • 1.flex
    • 2.position (元素已知宽高)
    • 3.position transform (元素未知宽高度)
    • 4.position(元素已知宽度)maigin:auto
    • 5.table-cell
  • 二、文本垂直居中(单行文字、多行文字)
      • 1.利用line-height和vertical-align
      • 2.利用display:table-cell
      • 3.利用flex布局align-items:center;

一、div水平垂直居中

1.flex

flex的详细介绍和应用可以看:
Flex(弹性布局)实现五大常用布局

  1. <div class="box">
  2. <div class="context"></div>
  3. </div>
  4. .box{
  5. width: 300px;
  6. height: 300px;
  7. background-color: #ccc;
  8. display: flex;
  9. justify-content: center;//水平居中
  10. align-items: center;//垂直居中
  11. }
  12. .box .context{
  13. width: 100px;
  14. height: 100px;
  15. background-color: blue;
  16. }

2.position (元素已知宽高)

  • 父元素设置为:position: relative;
  • 子元素设置为:position: absolute;
  • 子元素 left: 50%; top: 50%; (left、top百分比基于父元素)
  • 然后margin负的子元素自身宽高度的一半距离就可以实现



    .box{

    1. width: 300px;
    2. height: 300px;
    3. background-color: red;
    4. position: relative;
    5. }
    6. .box .context{
    7. width: 100px;
    8. height: 100px;
    9. background-color: blue;
    10. position: absolute;
    11. left: 50%;
    12. top: 50%;
    13. margin: -50px 0 0 -50px;
    14. }

3.position transform (元素未知宽高度)

只需将上面例子中的 margin: -50px 0 0 -50px;
替换为:transform: translate(-50%,-50%);
(translate中的百分比是基于自身的)

  1. <div class="box">
  2. <div class="context"></div>
  3. </div>
  4. .box{
  5. width: 300px;
  6. height: 300px;
  7. background-color: red;
  8. position: relative;
  9. }
  10. .box .context{
  11. width: 100px;
  12. height: 100px;
  13. background-color: blue;
  14. position: absolute;
  15. left: 50%;
  16. top: 50%;
  17. transform: translate(-50%, -50%);
  18. }

4.position(元素已知宽度)maigin:auto

  • position: absolute;
  • top: 0;
  • bottom: 0;
  • left: 0;
  • right: 0;
  • margin: auto;



    .box{

    1. width: 300px;
    2. height: 300px;
    3. background-color: red;
    4. position: relative;
    5. }
    6. .box .context{
    7. width: 100px;
    8. height: 100px;
    9. background-color: blue;
    10. position: absolute;
    11. top: 0;
    12. bottom: 0;
    13. left: 0;
    14. right: 0;
    15. margin: auto;
    16. }

5.table-cell

给父元素设置display:table-cell,并设置vertical-align:middle
然后设置子元素的margin-left和margin-right为auto即可

  1. <div class="box">
  2. <div class="context"></div>
  3. </div>
  4. .box{
  5. width: 500px;
  6. height: 500px;
  7. background: gray;
  8. display: table-cell;
  9. vertical-align: middle;
  10. }
  11. .box .context{
  12. width: 200px;
  13. height: 200px;
  14. background: blue;
  15. margin-left: auto;
  16. margin-right: auto;
  17. }

二、文本垂直居中(单行文字、多行文字)

本部分介绍垂直居中,水平居中设置 text-align: center;

image.png

1.利用line-height和vertical-align

  1. <div class="word-vertically-center1">
  2. <div>
  3. <span>测试文字测试文字</span>
  4. </div>
  5. <div>
  6. <span>测试文字 <br /> 测试文字<br /> 测试文字<br /> 测试文字<br /> 测试文字<br /> 测试文字</span>
  7. </div>
  8. </div>
  9. .word-vertically-center1 div {
  10. float: left;
  11. width: 200px;
  12. height: 200px;
  13. margin: 10px;
  14. border: 1px solid #000;
  15. line-height: 200px;
  16. }
  17. .word-vertically-center1 span {
  18. display: inline-block;
  19. vertical-align: middle;
  20. line-height: 22px;
  21. }

2.利用display:table-cell

  1. <div class="word-vertically-center2">
  2. <div>
  3. <span>测试文字测试文字</span>
  4. </div>
  5. <div>
  6. <span>测试文字 <br /> 测试文字<br /> 测试文字<br /> 测试文字<br /> 测试文字<br /> 测试文字</span>
  7. </div>
  8. </div>
  9. .word-vertically-center2 div {
  10. display: table-cell;
  11. width: 200px;
  12. height:150px;
  13. border:1px solid blue;
  14. vertical-align: middle;
  15. }

3.利用flex布局align-items:center;

  1. <div class="word-vertically-center3">
  2. <div>
  3. <span>测试文字测试文字</span>
  4. </div>
  5. <div>
  6. <span>测试文字 <br /> 测试文字<br /> 测试文字<br /> 测试文字<br /> 测试文字<br /> 测试文字</span>
  7. </div>
  8. </div>
  9. .word-vertically-center3 div{
  10. float: left;
  11. width: 200px;
  12. height:150px;
  13. border: 1px solid #000;
  14. display: flex;
  15. align-items:center;
  16. }

参考:https://blog.csdn.net/qq_39903567/article/details/114951168

本文链接:https://blog.csdn.net/qq_39903567/article/details/115263277

发表评论

表情:
评论列表 (有 0 条评论,293人围观)

还没有评论,来说两句吧...

相关阅读