zoukankan      html  css  js  c++  java
  • CSS垂直居中精华总结

    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;

                   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*/
                    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  弹性盒式布局

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

    原理:使用CSS弹性盒

    .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才开始支持弹性布局

  • 相关阅读:
    字节流和字符流的简记
    forword和redirect的区别
    this() and super()的简记
    JSP内置对象
    [转]动态规划入门练习题
    二叉索引树 树状数组 收藏
    回文子序列 Palindromic Subsequence UVA 11404 动态规划 最长公共子序列
    波浪子序列 Wavio Sequence UVA10534 动态规划 最长上升子序列变形
    UVA 11584 Partitioning by Palindromes 动态规划 入门
    黑客的攻击 Hacker‘s crackdown UVA11825 状态压缩动态规划
  • 原文地址:https://www.cnblogs.com/ranyonsue/p/5446147.html
Copyright © 2011-2022 走看看