1.用inline-block和vertical-align來實現置中:這種方法適合於未知寬度高度的情況下。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #container{ text-align: center; height: 400px; background: #4dc71f; } #container:before{ content: ""; height: 100%; display: inline-block; vertical-align: middle; margin-right: -0.25em; } #center-div{ display: inline-block; vertical-align: middle; background: #2aabd2; } </style></head><body> <div id="container"> <div id="center-div"> xxx </div> </div></body>
參考:https://css-tricks.com/centering-in-the-unknown/
2.用相對絕對位置和負邊距實現上下左右置中:高度和寬度已知
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>test</title> <style> .div2{ height: 600px; width: 600px; position: relative; border: 2px solid #000; } .img2{ height: 200px; width: 200px; position: relative; top: 50%; left: 50%; margin: -100px 0 0 -100px; } </style></head><body> <div class="div2"> <img class="img2" src="images/hongbao.png"> </div></body></html>
其實第二種要理解不能,首先相對父元素top,left定位在50%的位置,這時候只是圖片左上方置中,而中心點還沒置中,加上margin: -100px 0 0 -100px;利用負邊距把圖片的中心點位於父元素的中心點,從而實現垂直水平置中
3.利用絕對位置來實現置中:適合高度,寬度已知的情況。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #container{ text-align: center; height: 400px; background: #4dc71f; position: relative; } #center-div{ position: absolute; margin: auto; top: 0; right: 0; left:0; bottom: 0; width: 200px; height: 200px; background: #2b669a; } </style></head><body> <div id="container"> <div id="center-div"> xxx </div> </div></body></html>
4.使用table-cell,inline-block實現水平垂直置中:適合高度寬度未知的情況
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #container{ display: table-cell; text-align: center; vertical-align: middle; height: 300px; background: #ccc; } #center-div{ display: inline-block; } </style></head><body> <div id="container"> <div id="center-div"> xxx </div> </div></body></html>
5.使用css3中的transform來時實現水平垂直置中:適合高度寬度未知的情況
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #container{ position: relative; height: 200px; background: #333; } #center-div{ position: absolute; top:50%; left: 50%; transform: translate(-50%,-50%); } </style></head><body> <div id="container"> <div id="center-div"> xxx </div> </div></body></html>
還可以使用Flexbox來實現水平垂直置中;適合寬度高度未知情況,但是要注意相容性
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> #p_2{ display: flex; justify-content: center; align-items: center; width: 200px; height: 200px; background: #009f95; } </style></head><body> <div id="p_2"> <div id="c_2"> xxxxxxx </div> </div></body></html>