zoukankan      html  css  js  c++  java
  • 元素垂直居中方法总结

    以下总结了一些常见的元素垂直居中方法:

    首先,基本的html和CSS为 

    #wrap{
       320px;
      height: 160px;
      background: red;
    }
    #wrap>div{			
       50px;
      height: 50px;
      background: black;
      color: #fff;
    }
    
    <div id="wrap">
      <div class="v-center">我是前端狗</div>
    </div>
      
    

    方法:

    /*方案一:绝对定位负margin50%方法*/
    /*#wrap{position: relative;}*/
    /*.v-center{
      position: absolute;
      top: 50%;
      left: 50%;
      margin-left: -25px;
      margin-top: -25px;
    }*/
    
    /*方案一 优化版:利用calc支持单位运算,致命缺点UC这2货嗝屁了,国内移动端别想了*/
    /*.v-center{
      position: absolute;
      top: calc(50% - 25px);
      left: calc(50% - 25px);
    }*/
    
    /*方案一 再优化版:利用translate       
     * 注意transform需要加上webkit  UC QQ 自带浏览器在本手机上完美支持
     * 优点是不需要知道居中元素的高宽!!!
     * 这里translate的50%就是自己高宽的50%,而margin是以父亲的宽度为基准
     * */
    /*.v-center{
      position: absolute;
      top: 50%;
      left: 50%;
      -webkit-transform: translate(-50%,-50%);
    }*/
     
     /*方案二: 脱离绝对定位,利用视口单位
     * 因为vh是视口单位,视口就是屏幕可视区域,也就是说,这种办法永远在屏幕居中
     * 居中弹层才考虑这种办法,并且UC还是不支持
     * 好吧,这种方法当我没说
     * */
    /*.v-center{
      margin: 50vh auto 0;
      -webkit-transform: translateY(-50%);
    }*/
    
    /*方案三: table-cell
     * 请不要歧视table,table-cell在这个demo中支持度完美
     * 但是wrap此时不能使用margin了,就像每一种药都多少有点副作用一样。。
     */
    /*#wrap{
      display: table-cell;
      vertical-align: middle;
      text-align: center;
    }
    .v-center{
     display: inline-block;
     
    }*/
    
    /*方案四: 利用浮动元素
     * 支持度完美
     * 缺点是还是需要知道元素高度,以及hack味道很浓
     */
    /*#wrap::before{
      content: '';
      float: left;
      height:50%; 
      margin-bottom:-25px;
    }
    .v-center{
      clear:both; 
      margin: auto;
    }*/
    
    /*方案五: flex
     *UC不支持
     * */
    #wrap{
      display: -webkit-box; 
      display: -webkit-flex;        
      display: flex;
    }
    .v-center{
      margin: auto;
    }
    

      最后有个好消息,QQ浏览器的X5即将退出历史舞台被chrome37替换,UC你看着办。

  • 相关阅读:
    求求你,快去学习吧!!
    研究生英语读写译----topic3
    SQL----where 和 on 的区别
    SQL----语句执行顺序
    SQL----Inner Join、 Outer Join、Cross Join理解
    将一般的数值转换为金额格式(分隔千分位和自动增加小数点)
    伪元素 before 和 after 各种妙用
    抽空笑一笑
    别笑抽咯
    JavaScript继承方式详解
  • 原文地址:https://www.cnblogs.com/webLilingyun/p/5552149.html
Copyright © 2011-2022 走看看