css3種不知道寬高的情況下水平垂直居中的方法


第一種:display:table-cell

 

組合使用display:table-cell和vertical-align、text-align,使父元素內的所有行內元素水平垂直居中(內部div設置display:inline-block即可)。

這在子元素不確定寬高和數量時,特別實用!
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 6     <title>Demo001_displayTable</title>
 7     <style>
 8         /*** table-cell middle center組合使用 ***/
 9         .cell {
10             display: table-cell;
11             vertical-align: middle;
12             text-align: center;
13             width: 240px;
14             height: 180px;
15             border:1px solid #666;
16         }
17     </style>
18 </head>
19 <body>
20     <div class="cell">
21         <p>我愛你</p>
22     </div>
23     <div class="cell">
24         <p>我愛你</p><p>親愛的中國</p>
25     </div>
26     <div class="cell">
27         <p>我愛你</p><p>親愛的中國</p><div style="width:100px;height:50px;border:1px solid #ccc;display:inline-block">div(inline-block)</div>
28     </div>
29 </body>
30 </html>
View Code

 第二種 transform:translate(-50%,-50%)

translate()函數是css3的新特性,在不知道自身寬高的情況下,可以利用它來進行水平垂直居中。

當使用:top:50%, left:50%,是以左上角為原點,故不處於中心位置。

translate(-50%, -50%)作用是,往上(X軸),左(Y軸)移動自身長度的50%,以使其居於中心位置。
與負margin-left和margin-top實現居中不同的是,margin-left必須知道自身的寬高,而translate可以在不知道寬高的情況下進行居中,
tranlate()函數中的百分比是相對於自身寬高的百分比,所以能進行居中

 

.content {    
   padding:10px;
    background:green;
    color:#fff;
    position:absolute;
    top:50%;
    left:50%;
    border-radius: 5px;
    -webkit-transform: translate(-50%,-50%);
    -moz-transform: translate(-50%,-50%);
    transform:translate(-50%,-50%);
}

 

第三種用彈性布局實現垂直左右居中

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4   <meta charset="UTF-8">
 5   <title>Document</title>
 6   <style type="text/css">
 7   *{
 8       margin: 0;
 9       padding: 0;
10   }  
11   .wrap{
12       width: 100px;
13       height: 100px;      
14       border: 1px solid #000;
15       margin: 3.125em auto;      
16       display: flex;
17       justify-content: center;
18       align-items: center;
19  
20   }
21   .in{      
22       width: 10px;
23       height: 10px;
24       background: #000;
25       border-radius: 50%;
26   }
27   </style>
28 </head>
29 <body>  
30   <div class="wrap">
31       <div class="in"></div>
32   </div>
33 </body>
34 </html>
View Code
display:flex; 設置.wrap為彈性布局

justify-content:center;定義項目在主軸(水平方向)上居中對齊

align-items:center;定義項目在交叉軸(垂直方向)上居中對齊

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM