沒有針對此問題沒有完整的CSS的解決方案。這個CSS「問題」已爲人所知多年。由於多年來CSS的功能不斷增強,我認爲現在可能會有一個完整的CSS解決方案。但是,唉,沒有。我已經嘗試了很多東西,並且已經搜索到了高和低,並且問題依然存在。
據我所知,只有3種解決方案不需要第三方庫:絕對定位,人造柱(雙色重複背景)和JS。
唯一吸引我的兩個解決方案是:人造色彩列和JS。我更喜歡JS解決方案,因爲它更多地使用CSS。使用JS,如果您想稍後更改列寬或顏色,則不必重新處理背景圖像。這是一個更具適應性和可重複使用的解決方案。我可以看到創建虛擬列的唯一優點是,如果客戶端禁用JS,則您的佈局不會中斷。
JS解決方案(無需包裝):https://jsfiddle.net/Kain52/uec9cLe4/
var side1 = document.getElementsByTagName('main')[0];
var side2 = document.getElementById('mainMenu');
var side1Height = side1.clientHeight;
var side2Height = side2.clientHeight;
if(side2Height < side1Height) { side2.style.height = side1Height + "px"; }
else { side1.style.height = side2Height + "px"; }
JS解決方案(需要包裝):https://jsfiddle.net/Kain52/7udh55zq/
var wrapperHeight = document.getElementById('innerWrapper').clientHeight;
document.getElementsByTagName('main')[0].style.height = wrapperHeight + "px";
document.getElementById('mainMenu').style.height = wrapperHeight + "px";
說明:如果你使用一個div包裝,那麼你可以把它分配給包裝的高度。如果你不使用包裝,那麼你可以將最短邊的高度設置爲最長邊的高度。如果你知道你身邊的菜單欄將永遠是比你的內容更短,那麼你只需要兩行代碼:
var contentHeight = document.getElementsByTagName('main')[0].clientHeight;
document.getElementById('mainMenu').style.height = contentHeight + "px";
你的問題確實含糊不清。你的意思是#wrapper是瀏覽器的大小嗎? – SMacFadyen 2012-03-16 09:43:25
[CSS 100%height with padding/margin]可能的重複(http://stackoverflow.com/questions/485827/css-100-height-with-padding-margin) – 2012-03-16 09:48:12