zoukankan      html  css  js  c++  java
  • 未知宽度的盒子垂直水平居中

    <div id="wrap">
    <div class="msg">1111111111111111111111</div>
    </div>

    如何让类名为msg元素垂直水平居中呢?

    第一种:定位     利用css3中transform:translate()属性;Ie系列兼容10,11

    #wrap{

      400px;

      height:400px;

      border:1px solid #ccc;

      margin:50px auto;

      position:relative;

    }

    #wrap .msg{

      position:absolute;

      left:50%;

      top:50%;

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

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

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

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

    }

    第二种:通过一起使用box-pack,box-align,对#wrap内的子元素垂直水平居中;Ie系列兼容11

    #wrap{

      400px;

      height:400px;

      display:-webkit-box;

      -webkit-box-pack:center;

      -webkit-box-align:center;

      display:-moz-box;

      -moz-box-pack:center;

      -moz-box-align:center;

      display:-ms-flexbox;

    }

    第三种:display:flex;    Ie系列兼容11

    #wrap{

      400px;

      height:400px;

      border:5px solid #ccc;

      margin:50px auto;

      display:-webkit-flex;

      display:-ms-flexbox;

      display:flex;

      -webkit-align-items:center;

      -webkit-justify-content:center;

      align-items:center;

      justify-content:center;

    }

     根据第一种方法写一个例子

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
    *{
      padding:0;
      margin:0;
      list-style:none;
    }
    body,html{
      100%;
      height:100%;
    }
    .fr{
      float:right;
    }
    .fl{
      float:left;
    }
    .clearfix:after{
      clear:both;
      display:block;
      content:'';
    }
    .wrap{
      100%;
      height:100%;
    }
    .menu{
      100px;
      height:100%;
      background:#ccc;
    }
    .menu h3{
      line-height:50px;
      text-align: center;
      color:#fff;
    }
    .menu ul{
      100%;
      height:calc(100% - 50px)!important;
      display:flex;
      display:-webkit-box;
      display:-moz-box;
      display:-ms-flexbox;
      box-orient:vertical;
      -webkit-box-orient:vertical;
      -moz-box-orient:vertical;
      flex-direction:column;
      -webkit-flex-direction:column;
      -moz-flex-direction:column;
      -ms-flex-direction:column;
    }
    .menu ul li{
      100%;
      color:#fff;
      -webkit-box-flex:1;
      -moz-box-flex:1;
      -ms-flex:1;
      flex:1;
      position:relative;
    }
    .menu li a{
      display:block;
      position:absolute;
      left:50%;
      top:50%;
      transform: translate(-50%,-50%);
      -webkit-transform: translate(-50%,-50%);
      -moz-transform: translate(-50%,-50%);
      -ms-transform:translate(-50%,-50%);

    }
    .menu li a img{
      display:block;
      70%;
      height:70%;
      margin:2px auto;
    }
    .menu li a p{
      height:30%;
      line-height: 1.2;
      text-align:center;
    }
    @media screen and (max-height:400px){
      .menu li a img{
        display: none;
      }
      .menu li a p{
        font-weight:bold;
        font-size:16px;
      }
    }
    .content{
      calc(100% - 100px);
    }
    </style>
    </head>
    <body>
      <div class="clearfix wrap">
        <div class="fl menu">
          <h3>菜单啊</h3>
          <ul>
            <li>
              <a >
                <img src="iconfont.png">
                <p>111</p>
              </a>
            </li>
            <li>
              <a>
                <img src="iconfont.png">
                <p>222</p>
              </a>

            </li>
            <li>
              <a>
                <img src="iconfont.png">
                <p>333</p>
              </a>
            </li>
            <li>
              <a>
                  <img src="iconfont.png">
                  <p>444</p>
              </a>
            </li>
         </ul>
        </div>
        <div class="fl content"></div>
      </div>
    </body>
    </html>

    如图:

    当屏幕高度低于400px时,图标消失

    第二种方法做个例子:根据上个方法相应元素样式改为以下:

    .menu ul li{
      100%;
      height:100%;
      color:#fff;
      -webkit-box-flex:1;
      -moz-box-flex:1;
      -ms-flex:1;
      flex:1;
      position:relative;
      display:-webkit-box;
      -webkit-box-pack:center;
      -webkit-box-align:center;
      display:-ms-flexbox;
      display:-moz-box;
      -moz-box-pack:center;
      -moz-box-align:center;
    }
    .menu li a{
      display:block;
    }

    第三种方法例子:根据第一个方法相应元素样式改为以下:

    .menu ul li{
      100%;
      height:100%;
      color:#fff;
      -webkit-box-flex:1;
      -moz-box-flex:1;
      -ms-flex:1;
      flex:1;
      position:relative;
      display:flex;
      display:-webkit-flex;
      display:-ms-flexbox;
      justify-content:center;
      align-items: center;
      -webkit-justify-content:center;
      -webkit-align-items:center;
    }

    .menu li a{
      display:block;
    }

  • 相关阅读:
    HDU 4990 Reading comprehension(BestCoder Round #8)
    HDU 4985 Little Pony and Permutation(BestCoder Round #7)
    HDU 4983 Goffi and GCD(欧拉函数模板)
    CodeForces 590A Median Smoothing
    CodeForces 591B Rebranding
    LightOJ 1100
    Load average 负载详细解释
    Loadrunner 上传下载
    使用VisualVM远程监控JVM Linux服务器配置方法
    JVM调优(7)调优方法
  • 原文地址:https://www.cnblogs.com/AlexandraZhang/p/7003633.html
Copyright © 2011-2022 走看看