今天有位朋友一早從妙味課堂轉來乙個有關於css布局的面試題,需要解決,花了點時間寫了幾個demo,放上來與大家分享受。那麼我們在看demo之前一起先來看看這個面試題的具體要求吧:
左側固定寬,右側自適應螢幕寬;
左右兩列,等高布局;
左右兩列要求有最小高度,例如:200px;(當內容超出200時,會自動以等高的方式增高)
要求不用js或css行為實現;
仔細分析試題要求,要達到效果其實也並不是太難,只是給人感覺像有點蛋疼的問題一樣。但是你仔細看後你會覺得不是那麼回事:
左邊固定,右邊自適應布局,這個第一點應該來說是非常的容易,實現的方法也是相當的多,那麼就可以說第一條要求已不是什麼要求了;
左右兩列等高布局,這一點相對來說要複雜一些,不過你要是了解了怎麼實現等高布局,那麼也是不難。我個人認為這個考題關鍵之處就在考這裡,考你如何實現等高布局;所以這一點你需要整明白如何實現;
至於第三條要求,應該來說是很方面的,我們隨處都可以看到實現最小高度的**;
第四條這個要求我想是考官想讓我們面試的人不能使用js來實現等高布局和最小高度的功能。
上面簡單的分析了一下實現過程,那麼最終關鍵之處應該是就是「讓你的**要能同時實現兩點,其一就是左邊固定,右邊自適應的布局;其二就是實現兩列等高的布局」,如果這兩個功能完成,那麼你也就可以交作業了。那麼下面我們就先來看看這兩 點是如合實現:
一、兩列布局:左邊固定寬度,右邊自適應寬度
這樣的布局,其實不是難點,我想很多同學都有實現過,那麼我就在此稍微介紹兩種常用的方法:
方法一:浮動布局
這種方法我採用的是左邊浮動,右邊加上乙個margin-left值,讓他實現左邊固定,右邊自適應的布局效果
html markup
left sidebar
main content
css code
方法二:浮動和負邊距實現
html markup
left sidebar
main content
css code
*
#left
#content
#contentinner
這種方法看上去要稍微麻煩一點,不過也是非常常見的一種方法,大家可以看看他的demo效果。感覺一下,和前面的demo有什麼不同之處。
我在這裡就只展示這兩種方法,大家肯定還有別的實現方法,我就不在多說了,因為我們今天要說的不是這個問題。上面完成了試題的第一種效果,那麼大家就要想辦法來實現第二條要求——兩列等高布局。這一點也是本次面試題至關重要的一點,如果你要是不清楚如何實現等高布局的話,我建議您先閱讀本站的《八種建立等高列布局》,裡面詳細介紹了八種等高布局的方法,並附有相關**,而且我們後面的運用中也使用了其中的方法。
現在關鍵的兩點都完成了,那麼我們就需要實現第三條要求,實現最小高度的設定,這個方法很簡單:
min-height: 200px;
height: auto !important;
height: 200px;
方法一:
html markup
main content
css code
方法二
html markup
left sidebar
main content
css code
方法三:
html markup
main content
left sidebar
css code
*
#container
* html #container
#content
#sidebar
#content,
#sidebar
方法四:
html markup
left sidebar
main content
css code
*
#container2
#container1
#col2
#col1
#col1,#col2
方法五:
html markup
left sidebar
main content
css code
*
#container1
#container
#left
#content
#contentinner
#left,
#content
針對上面的面試題要求,我一共使用了五種不同的方法來實現,經過測試都能在各瀏覽器中執行,最後我有幾點需要特別提出: CSS布局中左(右)寬度自適應,右(左)寬度固定
設定左側寬度為200px,向左浮動 設定右側margin right,為左側盒子寬度 header content left content right footer class header logo div class content class left 固定寬度div class right...
二列左列寬度固定,右列寬度自適應布局
左邊固定值,右邊百分比佔完整螢幕的方法。1 用table當然很簡單了,左邊td固定值,右邊100 就ok了 2 div就不知道咋弄了,右邊100 肯定不能float到一行上去了。只好用js判斷瀏覽器的寬度然後減去左邊的寬度。3 不知道有沒有更好的解決辦法。2 xml lang zh cn lang ...
寬度自適應布局
自適應布局是一種很常見的布局方式,現將常見的幾種實現方式列下 1 利用float 左右兩div分別左右浮動,不再占用文件流,塊元素div.main自動佔據整行,然後給main新增左右margin分別為左右兩塊元素的寬,如下 left right main 2 利用絕對定位 圖如上 左右兩個div分別...