1. 程式人生 > >css的高階和寬度自適應問題

css的高階和寬度自適應問題

1.寬度自適應

現在網頁佈局基本都是要適配各個螢幕,所以佈局時候的自適應也就非常重要,這個東西說難不難,說簡單也不簡單,主要是一個積累的過程,當你寫得多了,也就掌握了。

我先從三列式佈局講吧,三列式佈局什麼呢,說白了就是兩邊固定,中間自適應,三列式佈局經典的佈局是聖盃佈局

聖盃佈局效果優美且對瀏覽器相容性要求非常低,是一種非常給力的三列式頁面佈局方案,在國內最早是由淘寶UED的工程師傳播開來,它的佈局要求有幾點:

1、三列布局,中間寬度自適應,兩邊定寬;

2、中間欄要在瀏覽器中優先展示渲染;

3、允許任意列的高度最高;

<!DOCTYPE html>
<html
lang="en">
<head> <meta charset="UTF-8"> <title>Task3-聖盃佈局</title> <style> * {margin: 0;padding: 0;} body { padding: 20px; } #left { width: 200px; height: 500px; float: left; margin-left:-100%; background-color
: red
; margin-right:20px; }
#main { float: left; width:100%; background-color: green; height: 400px; } #right { margin-left: -120px; float: left; background-color: blue; width:120px; height: 500px; }
</style
>
</head> <body> <div id="main"> </div> <div id="left"></div> <div id="right"> </div> </body> </html>

這就是一個很簡單的三列式佈局,我們先給中間的main渲染,使其長度為100%,高度自己定義,用float使其脫離文件流,然後渲染左邊的部分,使左邊的左浮動,然後利用負邊距100%,使其定位到正確位置,再使右邊的利用float脫離文件流,再用margin-left:本身寬度,就能定位到正確位置,這樣一個簡單的三列式佈局就寫出來了

當瀏覽器縮小到一定程度時,這個佈局可能會被破壞,可以在body上新增min-width屬性解決。

2.高度自適應

高度自適應就是高度能跟隨瀏覽器視窗的大小改變而改變,但是屬性height:100%並不能直接產生效果,因為這和其父元素有關

#center{
height:100%;
}

上面的程式碼是無效的,對樣式沒有任何改變,需要改寫成

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Task3-聖盃佈局</title>
    <style>
    html,body{
        margin:0px;
        height:100%;
    }
    .center{
        width:200px;
        height:100%;
        background-color:#666666;
    }
    </style>
</head>
<body>
    <div class="center"></div>
</body>
</html>

對.center物件設定了height:100%,同時設定了html與body的height:100%,這就是高度自適應的問題所在,一個物件的高度是否可以使用百分之比顯示,取決於物件的父類物件,在頁面中,.center直接放在body屬性中,因此它的父類物件是body,而在預設狀態下,瀏覽器並沒有給body一個高度屬性,因此我們所設定的.centere為height:100%並不會產生任何效果,但是一點我們給body設定了100%之後,他的子類物件.center的height:100%便發生作用了,這便是瀏覽器解析規則引發的高度自適應的問題。

程式碼中除了給出body的定義屬性之外,還給html物件也應用了相同的樣式定義,這樣做的好處是使IE與firefox瀏覽器都能夠高度自適應,Ie與firefox對頁面的解析存在一定的差異,ie中html物件預設為100%的高度,而body不是,而在firefox中html標籤就不是100%的高度,因此兩個標籤都設定為100%,可以保證兩款瀏覽器都能正常工作。

大概整理的就這麼多了~歡迎諮詢