博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS垂直居中精华总结
阅读量:6446 次
发布时间:2019-06-23

本文共 2098 字,大约阅读时间需要 6 分钟。

1  table-cell方式

将center元素的包含框display设置为table,center元素的display设置为table-cell,vertical-align设置为middle。

原理:利用表布局特点,vertical-align设置为middle后,单元格中内容中间与所在行中间对齐

        .container2{

                display:table;

                height:100%;

            }

      .table_cell{/*将cell垂直居中,如果外层div不为table则tablecell必须有高度*/

                display:table-cell;

                vertical-align:middle;

            }

优点:支持任意内容的可变高度、支持响应式

缺点:每一个需要垂直居中的元素都会需要加上额外标签(需要table、table-cell两个额外元素,也可以不用添加多余的无意义的标签,修改display的block变成了table-cell,破坏了原有的块状元素的性质。

 

2  使用绝对定位垂直居中

 

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

.absolute_center{

               /*display:none;*/

               position:absolute;

               width:200px;

               height:200px;

               top:0;

               bottom:0;

               left:0;

               right:0;

               margin:auto;

               background:#518fca;

               resize:both;/*用于设置了所有除overflow为visible的元素*/

               overflow:auto;

            }

使用绝对定位要求元素必须设置明确高度。内容超过元素高度时需要设置overflow决定滚动条的出现

优点:支持响应式,只有这种方法在resize之后仍然垂直居中

缺点:没有显式设置overflow时,内容超过元素高度时会溢出,没有滚动条

 

3  负marginTop方式

  已知元素高度后,使用绝对定位将top设置为50%,mergin-top设置为内容高度的一半(height + padding) / 2;内容超过元素高度时需要设置overflow决定滚动条的出现

原理:top:50%元素上边界位于包含框中点,设置负外边界使得元素垂直中心与包含框中心重合;

 

.negative_margin_top{
                position:absolute;
                top:50%;
                left:0;
                right:0;
                margin:auto;
                margin-top:-100px; /*-(height+padding)/2*/
                width:200px;
                height:200px;
            }   

优点:代码量少、浏览器兼容性高支持ie6 ie7

缺点:不支持响应式(不能使用百分比、min/max-width)

 

4 利用translate

这是最简单的方法,不近能实现绝对居中同样的效果,也支持联合可变高度方式使用。内容块定义transform: translate(-50%,-50%)必须带上浏览器厂商的前缀,还要加上top: 50%; left: 50%;

.is-Transformed {     

width: 50%;   

 margin: auto;   

 position: absolute;    

top: 50%; left: 50%;    

-webkit-transform: translate(-50%,-50%);       

 -ms-transform: translate(-50%,-50%);        

 transform: translate(-50%,-50%);  }  

优点:

1.内容可变高度   2.代码量少

缺点:

1.IE8不支持

2.属性需要写浏览器厂商前缀

3.可能干扰其他transform效果

4.某些情形下会出现文本或元素边界渲染模糊的现象

 

5  弹性盒式布局

利用弹性盒式布局,将字元素的主轴、侧轴的排列方式都设置为居中对齐

原理:

.is-Flexbox {

  display: -webkit-box;

  display: -moz-box;

  display: -ms-flexbox;

  display: -webkit-flex;

  display: flex;

  -webkit-align-items: center;

          align-items: center;

  -webkit-justify-content: center;

          justify-content: center;

}

优点:真正的垂直居中布局

缺点:ie11才开始支持弹性布局

 

转载地址:http://bnvwo.baihongyu.com/

你可能感兴趣的文章
kafka数据迁移实践
查看>>
微服务入门权威指南
查看>>
CSS3基础
查看>>
五分钟看懂一个高难度的排序:堆排序
查看>>
lastTurnToMyCamile
查看>>
听说……七牛云被上海经信委点名了?
查看>>
在原生CSS中使用变量
查看>>
NAT网关之SNAT进阶使用(一)SNAT POOL
查看>>
由浅入深,带你进行容器错误隔离排查|航海日志 Vol.19
查看>>
视频通信系统的关键技术与挑战
查看>>
从Java到Kotlin(八)
查看>>
小程序开发利器:Matchmaker
查看>>
前端模块化杂记
查看>>
DevOps 和 SRE
查看>>
插件化设计二
查看>>
读取速度贼快的省市区地址库
查看>>
indexedDB入门
查看>>
SpringCloud组件:将微服务提供者注册到Eureka服务中心
查看>>
这么多年都白学了,原来是方法没有用对
查看>>
基于webpack4[.3+]构建可预测的持久化缓存方案
查看>>