天天看點

絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;

我們都知道margin: 0 auto;可也實作塊狀元素的水準居中;但是對于絕對頂為的元素就會失效;

請看執行個體:

絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>絕對定位後margin: 0 auto;居中失效的解決方法</title>
<style type="text/css">
    .test-out {

        width: 500px;
        height: 500px;
        margin: 0 auto; /*實作父元素居中*/
        background: red;
    }
    .test-in {
        width: 200px;
        height: 200px;
        margin: 0 auto; /*實作子元素居中*/
        background: blue;
    }
        
</style>
</head>

<body>
<div class="test-out">
    <div class="test-in"></div>
</div>
</body>
</html>      
絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;

浏覽器效果圖:

絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;

我們可以看出在正常情況下: margin: 0 auto; 實作居中真是棒棒的!

我們把css樣式修改為:

絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;
<style type="text/css">
    .test-out {
        position: relative; /*作為子元素的 定位包含框,使子元素在父元素内 進行定位*/
        width: 500px;
        height: 500px;
        margin: 0 auto; /*實作父元素居中*/
        background: red;
    }
    .test-in {
        position: absolute;  /*子元素實作絕對定位*/
        width: 200px;
        height: 200px;
        margin: 0 auto;/* 此時會失效*/
        background: blue;
    }      
絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;

浏覽器效果:

絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;

子元素(藍色盒子)的居中效果已失效!

絕對定位以後margin: 0 auto;實作居中失效的解決方法:

為了使子元素(藍色盒子)在絕對定位下實作居中,我們可以利用定位和margin-left取相應的負值,實作居中;

具體代碼如下:

絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;
<style type="text/css">
    .test-out {
        position: relative; /*作為子元素的 定位包含框,使子元素在父元素内 進行定位*/
        width: 500px;
        height: 500px;
        margin: 0 auto; /*實作父元素居中*/
        background: red;
    }
    .test-in {
        position: absolute;  /*子元素實作絕對定位*/
        top: 0;
        left: 50%; /*先定位到父元素(紅盒)的中線,然後使子元素(紅盒)的外邊界 左偏移, 半個子元素(紅盒) 的寬度,即可*/
        margin-left: -100px;/*向左 偏移元素的總寬度的一半*/
        width: 200px;
        height: 200px;
        background: blue;
    }        
</style>      
絕對定位後,position:absolute;不能使用margin: 0 auto;實作居中;