垂直居中(笔记)

总结一下垂直居中的几种方法。

此博文借鉴了 此篇博文

1 使用绝对定位垂直居中

优点:是适应响应式,且不会添加多余DOM节点。
缺点:不支持IE8及更低版本浏览器


<body>
    <div class="center"></div>
</body>


body,html{
    margin:0;
    height:100%;
}
.center{
    position:absolute;
    margin:auto;
    top:0;
    bottom:0;
    height:200px;
    width:200px;
    left:0;
    right:0;
    background:red;
}

绝对对位原理:元素在过度受限情况下,将margin设置为auto,浏览器会重算margin的值,过度受限指的是同时设置top/bottom与height或者left/right与width。

2.利用transform

优点:是适应响应式,且不会添加多余DOM节点。
缺点:只支持IE9及以上浏览器,低版本IE并不支持。


body,html{
    margin:0;
    height:100%;
}
.center{
    position:absolute;
    left:50%;
    top:50%;
    transform:translate(-50%,-50%);
    height:200px;
    width:200px;
    background:red;
}


此方法的关键就在于利用 transform:translate属性,特别要注意的一点就是此属性的百分比值是指的本元素宽和高的值,而不是父元素

3.利用负的margin来进行定位

优点:兼容性极好低版本IE均支持。
缺点:不支持响应式。


<!-- 在第一个方法的基础上稍加修改 -->

.center{
    position:absolute;
    left:50%;
    top:50%;
    margin-left:-100px;
    margin-top:-100px;
    height:200px;
    width:200px;
    background:red;
}

其实此方法和第二个方法原理基本类似。

4利用表格属性

缺点:增加DOM元素,IE8以下不支持(IE8可以)
优点:很难说吧,虽然说有这么一种方法可以垂直居中,但我无法说服自己用这种方法-_-.....


<body>
    <div class="container"><div class="sss"><div class="center"></div></div></div>
</body>


body,html{
    margin:0;
    height:100%;
    width:100%;
}

.container{
    display:table;
    height:100%;
    text-align:center;
    width:100%;
}

.sss{
    display:table-cell;
    vertical-align:middle;

}
.center{
    width:200px;
    height:200px;
    background:red;
}

5弹性盒式布局

缺点:兼容性简直太差了要到IE11才支持!!,几乎可不用。。。。


<body>
    <div class="center"></div>
</body>


body,html{
    margin:0;
    height:100%;
    width:100%;
}
body{
    display:flex;
    -ms-align-items:center;
    -webkit-align-items:center;
        align-items:center;
    -ms-justify-content: center;
    -webkit-justify-content:center;
        justify-content: center;
}
.center{
    width:200px;
    height:200px;
    background:red;
}


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 12,533评论 3 30
  • 1.绝对定位居中技术 我们一直用margin:auto实现水平居中,而一直认为margin:auto不能实现垂直居...
    DecadeHeart阅读 5,503评论 0 3
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 6,586评论 0 8
  • 你想征服世界吗?不,你正在征服世界。 这是我在看的上ted听到一个讲者的故事,我们的大脑的程序是可以重新编辑的,从...
    平平无奇小个子阅读 3,382评论 0 0