1. 程式人生 > >CSS子元素跟父元素的高度一致

CSS子元素跟父元素的高度一致

絕對定位方法:

(1)將父元素設定為相對定位,不寫父元素的高度時,會隨著左邊的子元素高度變化而變化

.parent {
    /*關鍵程式碼*/
    position: relative;

    /*其他樣式*/
    width: 800px;
    color: #fff;
    font-family: "Microsoft Yahei";
    text-align: center;
}

(2)左邊一個元素有個最小高度的情況

.left {
    min-height: 700px;
    width: 600px;
}

(3)右邊元素要想跟父元素的高度是一致,那麼可以用絕對定位這樣設定,如果不想同時寫top和right,寫一個時,再寫上height:100%,也可以達到一樣的效果

.right {
    /*關鍵程式碼*/
    width: 200px;
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;

    /*其他樣式*/
    background: #ccc;

}

(4)完整例子程式碼:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>子元素高度與父元素一致</title>
    <style>

        .parent
{ position: relative; background: #f89; width: 800px; color: #fff; font-family: "Microsoft Yahei"; text-align: center; } .left { min-height: 700px; width: 600px; } .right { width
: 200px
; position: absolute; top: 0; right: 0; bottom: 0; background: #ccc; }
</style> </head> <body> <div class="parent"> <div class="left"> 左側 left 不定高,parent的高度隨著左側left 的高度變化而變化,右側也跟著變 </div> <div class="right"> 這邊的高度跟父元素高度一致 </div> </div> </body> </html>

(5)效果
這裡寫圖片描述

(6)問題來了:
如果右側的子元素高度超出了.parent,怎麼辦?

.right-inner {
    background: limegreen;
    height: 1024px;
}
<div class="right">
    <div class="right-inner">right的子元素,高度為1024px,會撐破容器,給.right加上 overflow:auto 就防止溢位了</div>
</div>

效果圖如下:
這裡寫圖片描述

完整程式碼:

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
    <title>子元素高度與父元素一致</title>
    <style>

        .parent{
            position: relative;
            background: #f89;

            width: 800px;
            color: #fff;
            font-family: "Microsoft Yahei";
            text-align: center;
        }
        .left {
            min-height: 700px;
            width: 600px;

        }
        .right {
            width: 200px;
            position: absolute;
            top: 0;
            right: 0;
            height: 100%;

            overflow: auto;

            background: #ccc;

        }
        .right-inner {
            background: limegreen;
            height: 1024px;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="left">
            左側 left 不定高,parent的高度隨著左側left 的高度變化而變化,右側也跟著變
        </div>
        <div class="right">
            <div class="right-inner">right的子元素,高度為1024px,會撐破容器,給.right加上 overflow:auto 就防止溢位了</div>
        </div>
    </div>
</body>
</html>