未知宽高元素垂直水平居中方法汇总

本文只摘录个人认为比较简单易懂,应用比较全面的方法,至于老弱残的IE 5,6,7 不在考虑范围

// 基本样式与html结构

.parent{
    //width:200px;
    // height:800px;
    background:#000;
}

<div class="parent">
  <div class="child" ></div>
</div>

1. flex 布局(new)

优点:设置简单,适合移动端使用
缺点:不支持老旧版本的浏览器,如Android 4.4 以下(鉴于目前市面上基本没有这么低级的Android版本了,缺点可忽略)

.parent{
    display: -webkit-flex;
    display: flex;
    justify-content: center;
    align-items: center;
 }
 .child{
 }

2. flex 布局(old)

优点:基本能满足移动端需求,相对新 flex 布局浏览器支持度高
缺点:子元素必须是块级的元素

 .parent{
    display: -webkit-box;
    display: box;
    -webkit-box-pack: center;
    box-pack: center;
    -webkit-box-align: center;
    box-align: center;
 }
 .child{
 }

3 table-cell

优点:兼容 IE8 及以上,内容溢出会将父元素撑开,父元素不设置宽高会自动紧贴
缺点:父元素不支持margin属性,子元素不能是块级元素

.parent{
    display:table-cell;
    text-align: center;
    vertical-align: middle;
 }
 .child{
    display:inline-block;
 }

4. position: absolute + margin: auto

优点:兼容 IE8 及以上
缺点:父元素必须声明高度

.parent{
    position:relative;
}
.child{
    margin: auto;  
    position: absolute;  
    top: 0; 
    left: 0; 
    bottom: 0; 
    right: 0; 
}

5. position: absolute + translate

优点:代码量少
缺点:IE9以下,不支持transform属性的浏览器无法使用,父元素必须声明高度,可能干扰其他transform效果,某些情况下会出现文本或元素边界渲染模糊的现象

.parent{
    position: relative;
}
.child{
    position:absolute;
    top:50%;
    left:50%;
    -webkit-transform: translate(-50%,-50%);
    transform: translate(-50%,-50%);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,844评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 8,239评论 3 30
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,255评论 0 1
  • 有时候忙点也好,上班睡觉,榨干身体就不会想那么多了,干这个,见过不少早出晚归的,我不得不佩服,他们目标很简单为了家...
    一个意外的结尾阅读 116评论 0 0
  • 文/易觉 flying to the future-松井佑贵 “遇见他的那天,我仿佛听到了樱花散落的声音。” ...
    易觉阅读 281评论 0 4