三列布局(左右固定寬度,中間自適應)

以前在網上看到過,說這個問題是一道經典的筆試/面試題。當時在百度面試的時候果然就遇到過。昨天在蘭亭的時候果然又遇到了。其實,這個題目確實考到了Css幾個方面的很重要的基礎知識。首先考到了定位中的方法中的文檔流和浮動流,然後考到了文檔流和浮動流默認寬度和顯示層級(我一般理解成index這種含義,或者畫布中的上下層一樣,浮動流會居於上層,文檔流會居於下層,因此浮動流區塊可能會部分遮住文檔流區塊,但是文檔流在下面是依然存在的,只是被遮住了而已)。
首先寫出兩個div,讓第一個div左浮動,第二個div右浮動,第三個div直接以文檔流去定位。由於第一個和第二個div是浮動流定位,所以會脫離文檔流,並且第一個div會浮動到父容器區域的左邊,第二個div會浮動到父容器的右邊,在一排中顯示。這時候第三個div由於是文檔流定位的,且如果不設寬度或默認成100%,會隨着瀏覽器窗口變化寬度的,因此前面兩個浮動流區塊會部分遮住此文檔流區塊,這時只用對此區塊設置左右margin即可。

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>無標題文檔</title>
        <style type='text/css'>
            * {
                margin: 0;
                padding: 0;
            }

            #left {
                width: 100px;
                float: left;
                background: green;
                height: 300px;
                overflow: hidden;
            }

            #right {
                width: 100px;
                float: right;
                background: red;
                height: 300px;
                overflow: hidden;
            }

            #middle {
                margin-right: 110px;
                margin-left: 110px;
                height: 300px;
                background: #ccc;
            }
        </style>
    </head>
    <body>
        <div id="left">
        </div>
        <div id="right">
        </div>
        <div id="middle">
        </div>
    </body>
</html>

自己試了好幾次,但是右邊 div 總是另起一行排列,後來發現原來 html 中要先列出 left 和 right 再列 middle。原因:尚未搞懂。
總結一下,兩種方法實現該效果:
1.左右浮動,中間正常文檔流。
2.左右絕對定位,中間正常文檔流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章