常见的垂直水平居中的方法

垂直居中

  • 方法一:使用padding
    设置块级元素的padding-top和padding-bottom相等,注意是块级元素,行内元素设置padding-top和padding-bottom无效
<style>
.box{
  border: 1px solid;
}
.middle{
  padding: 40px 0;
}
</style>
<div class="box">
  <p class="middle">我要居中</p>
</div>
  • 方法二:absolute定位
    使用position: absolute实现,需要分成两种情况进行处理:
    • 固定宽高
      top: 50%; margin-top: -(height/2); (margin-top上移自身宽度的一半)
<style>
.box{
  border: 1px solid;
  height: 200px;
  position: relative;
}
.box-middle{
  border: 1px solid blue;
  height: 50px;
  width: 50%;
  background-color: red;
  position: absolute;
  top: 50%;
  margin-top: -25px;
}
</style>
<div class="box">
  <div class="box-middle">
  </div>
</div>
  • 不知道宽高
    使用css的transform: translate(-50%, -50%);前一个-50%是针对于水平方向,后一个是-50%是针对垂直方向
<style>
.box{
  border: 1px solid;
  height: 200px;
  position: relative;
}
.box-middle{
  border: 1px solid blue;
  background-color: red;
  position: absolute;
  top: 50%;
  transform: translate(0 ,-50%);  
}
</style>
<div class="box">
  <div class="box-middle">我要居中显示
  </div>
</div>

注意:使用该属性需要考虑兼容性

  • 方法三: vertical-align: middle
    注意: vertical-align只能作用在行内元素display: table;的元素中;
    vertical-align:middle居中原理:将行内元素框中点与父元素基线上方0.5ex处的一个点对齐,这里的1ex是相对于父元素的font-size定义的,大多数用户代理都把1ex处理为0.5em,middle往往是将元素的垂直中点与父元素基线上方的0.25em处的一个点对齐。
    代码如下:
<style>
.box{
  height: 100px;
  border: 1px solid;
}
.box:after{
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
span{
  vertical-align: middle;
}
</style>
<div class="box">
    <span>hhhahah </span>
  </div>

最关键的一点是:给父元素添加伪类,height:100%;

  • 方法四:display: table; vertical-align: middle
    可以通过给父元素设置display:table,垂直居中元素设置display:table-cell; vertical-align: middle;
    也可以是给父元素设置display: table-cell; vertical-align: middle;
<style>
.box{
  height: 100px;
  border: 1px solid;
  display:table;
}
span{
  display: table-cell;
  vertical-align: middle;
}
或者
.box{
  height: 100px;
  border: 1px solid;
  display:table-cell;
vertical-align: middle;
}
</style>
<div class="box">
    <span>hhhahah </span>
  </div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,...
    kiddings阅读 3,205评论 0 11
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,628评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,518评论 0 6
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,809评论 1 92
  • 鲍氏之子 齐国姓田的(权臣)在厅堂设宴祭神,一起吃饭的有上千人,宴席上有敬献鱼和大雁的。田氏看了,于是感叹道:“老...
    力图说阅读 264评论 0 1