div水平垂直居中的几种方法(面试问题)

1:类似子div加空span的方法用伪类实现

	<div class="outer">
            <div class="inner">一段文字</div>
	</div>	
          .outer{
           height: 200px;
           width: 200px;
           text-align: center;
           background: #43e;

       }
       .inner{
       	 height: 100px;
       	 background: #de4;
       	 width: 100px;
       	 display:inline-block;
       	 vertical-align: middle;
       }
       .outer:after{
       	 content: '';
       	 display: inline-block;
       	 vertical-align: middle;
       	 height: 100%;
       }

 2:通过position: absolute;实现包括两种方法实现

   第一种:top/left各50%; margin-left:width/2; margin-top:height/2实现

      	<div class="outer">
       <div class="inner">一段文字</div>
	</div>	
     .outer{
           height: 200px;
           width: 200px;
           position: relative;
           background: #43e;

       }
       .inner{
       	 height: 100px;
       	 background: #de4;
       	 position: absolute;
       	 width: 100px;
       	 top:50%;
       	 left:50%;
       	 margin-left:-50px;
       	 margin-top:-50px;
       	 display:inline-block;
       	 vertical-align: middle;
       }

  第二种:子div绝对定位:margin:auto;

	<div class="outer">
       <div class="inner">一段文字</div>
	</div>	
        .outer{
           height: 200px;
           width: 200px;
           position: relative;
           background: #43e;

       }
       .inner{
       	 height: 100px;
       	 background: #de4;
       	 position: absolute;
       	 width: 100px;
         top:0px;
         left:0px;
         bottom:0px;
         right:0px;
         margin:auto;
       }

  3:通过transform属性实现

	<div class="outer">
       <div class="inner">一段文字</div>
	</div>
       .outer{
           height: 200px;
           width: 200px;
           position: relative;
           background: #43e;

       }
       .inner{
       	 height: 100px;
       	 background: #de4;
        position:absolute;
        width: 100px;
        top:50%;
       left: 50%;
        -webkit-transform: translate(-50%, -50%);
        transform: translate(-50%, -50%);

       }

  4:通过弹性盒子:flex实现

	<div class="outer">
       <div class="inner">一段文字</div>
	</div>
       .outer{
           height: 200px;
           width: 200px;
           background: #43e;
           display: flex;
           justify-content: center;
           align-items: center;
       }
       .inner{
       	 height: 100px;
       	 background: #de4;
       	 width: 100px;
       }
  

  多为网上总结(有更多方法,请评论分享,谢谢)

 

  

posted @ 2017-02-11 18:22  嗨海  阅读(701)  评论(0编辑  收藏  举报