跳至主要內容
html&css

常见的水平垂直居中实现方案

https://blog.csdn.net/m0_70705683/article/details/135777987

方案总结

方案总结

利用定位(父相子绝) + 位移

-- 父相子绝 + 子 margin:auto;

-- 父相子绝 + 子 top,left 位移50%; transform:translate(-50%,-50%);

<style>
    .father{
        //width,height,其他省略
  
        position: relative;
    }
    .son{
        position: absolute;
        top:0;
        left:0;
        right:0;
        bottom:0;
        margin:auto;
    }
</style>
<div class="father">
    <div class="son"></div>
</div>

利用定位+margin:负值

<style>
    .father {
        position: relative;
        width: 200px;
        height: 200px;
        background: skyblue;
    }
    .son {
        position: absolute;
        top: 50%;
        left: 50%;
        margin-left:-50px;
        margin-top:-50px;
        width: 100px;
        height: 100px;
        background: red;
    }
</style>
<div class="father">
    <div class="son"></div>
</div>

table布局

<style>
  .father {
 //width,height,其他省略

  display: table-cell;
  
  text-align: center;//水平居中
  vertical-align: middle;//垂直居中
}
.son {
 //width,height,其他省略

  display: inline-block;
}
</style>
  <div class="father">
  <div class="son"></div>
  </div>

flex弹性布局

<style>
    .father {
        display: flex;
        justify-content: center;//主轴居中,默认水平居中
        align-items: center;//交叉轴居中,默认垂直居中
    }
    .son {
    }
</style>
<div class="father">
    <div class="son"></div>
</div>

grid网格布局

<style>
    .father {
            display: grid;
            justify-content: center;//主轴居中,默认水平居中
            align-items: center;//交叉轴居中,默认垂直居中
        }
        .son {
        }
</style>
<div class="father">
    <div class="son"></div>
</div>

拓展

在CSS中实现元素的水平和垂直居中布局是一个常见需求,不同的元素类型(内联元素和块级元素)和布局方法(如Flexbox、Grid、定位等)提供了多种解决方案。以下是对您提供的文件内容的总结:

内联元素居中布局

水平居中

  • **行内元素可以通过设置父元素的 **<span class="ne-text">text-align: center;</span> 来实现水平居中。
  • **使用Flexbox布局,可以设置父元素为 **<span class="ne-text">display: flex;</span> 并使用 <span class="ne-text">justify-content: center;</span> 来实现水平居中。

垂直居中

  • 对于单行文本,可以通过设置父元素的高度等于行高(<span class="ne-text">height === line-height</span>)来实现垂直居中。
  • **对于多行文本,可以使用表格单元格布局,将父元素设置为 **<span class="ne-text">display: table-cell;</span> 并使用 <span class="ne-text">vertical-align: middle;</span> 来实现垂直居中。

块级元素居中布局

水平居中

  • **对于已定义宽度的元素,可以通过设置 **<span class="ne-text">margin: 0 auto;</span> 来实现水平居中。
  • **使用绝对定位,可以将元素的 **<span class="ne-text">left</span> 属性设置为 <span class="ne-text">50%</span>,然后使用 <span class="ne-text">margin-left</span> 设置为元素宽度的一半的负值来实现水平居中。

垂直居中

  • **使用绝对定位,可以设置元素的 **<span class="ne-text">top</span><span class="ne-text">left</span><span class="ne-text">margin-top</span><span class="ne-text">margin-left</span>(如果已定义高度)来实现垂直居中。
  • **通过设置父元素为 **<span class="ne-text">display: table-cell;</span> 并使用 <span class="ne-text">vertical-align: middle;</span> 可以实现垂直居中。
  • **使用 **<span class="ne-text">transform: translate(x, y);</span> 可以在不知道元素宽高的情况下实现垂直居中。
  • 使用Flexbox(<span class="ne-text">display: flex;</span>)和Grid(<span class="ne-text">display: grid;</span>)也可以实现垂直居中,但Grid的兼容性相对较差。

子冥2022年10月25日...大约 10 分钟前端