垂直水平居中

绝对定位实现垂直水平居中
优点:兼容性好
缺点:需要知道宽高,不够灵活

<div class="box">
  <div class="txt">已知宽高</span>
</div>
.txt{
  width: 600px;
  height: 400px;
  position: absolute;
  left: 50%;
  top: 50%;
  margin-top: -200px;
  margin-left: -300px;
}

transform实现垂直水平居中
优点:不需要知道宽高,灵活
缺点:兼容性不好,在Mobile设备上建议使用

<div class="box">
  <div class="txt">未知宽高</span>
</div>
.txt{
  width: 600px;
  height: 400px;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

margin:auto实现垂直水平居中
优点:灵活且兼容性好(IE8+)
缺点:适用于有尺寸的元素。

<div class="box">
  <div class="txt">已知宽高</span>
</div>
.txt{
  width: 600px;
  height: 400px;
  position: absolute;
  left: 0;
  top: 0;
  right: 0;
  bottom: 0;
  margin: auto;
}

原理:
先把margin:auto; width:600px; height:400px;干掉后,你会惊奇的发现,.txt 铺满了整个.box。这是为什么呢?
先看下剩余属性:left,right,top,bottom,文档说明的很清楚,比如:left值,就是元素的左边缘距离父元素左边缘的距离。当left-right 两个值同时存在且都为0,top-bottom两个值也同时存在且都为0。子元素.txt只能左右上下铺满整个.box。
再看下margin:auto。它的填充规则和普通流体元素一模一样:

  • 如果一侧定值,一侧auto, auto为剩余空间大小
  • 如果两侧为auto, 则平分剩余空间。

flexbox 实现垂直水平居中
优点:不需要知道宽高,灵活
缺点:兼容 性不好,在Mobile设备上建议使用

<div class="box">
  <div class="txt">未知宽高</span>
</div>
.box{
  display: -webkit-flex;
  display: -moz-flex;
  display: -ms-flex;
  display: -o-flex;
  display: flex;
  justify-content: center;
  align-items: center;
}

table 实现垂直水平居中
优点:兼容性好

<div class="box">
  <span class="txt">这里显示多行文字</span>
</div>
.box{
  width:500px;
  height:500px;
  border:1px solid red;
  
  display: table-cell;
  vertical-align:middle;
}
.box .txt{
  display:inline-block;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容