我有一个响应式布局,有两个列(主要和侧边栏)。侧杆具有固定的宽度,并且主柱的宽度是响应的。对于侧边栏是固定宽度,我不能将主列设置为100%而没有侧边栏明显下降。有没有办法让javascript根据浏览器大小计算主列的宽度? (考虑到应该在它旁边的固定宽度列)
#main {
background-color: #0F0;
float: left;
height: 400px;
width: 100%;
}
#sidebar {
background-color: #C60;
float: right;
height: 400px;
width: 300px;
}

<div id="main">
</div>
<div id="sidebar">
</div>
&#13;
答案 0 :(得分:2)
这可以使用CSS的calc()
函数。
#main {
background-color: #0F0;
float: left;
height: 400px;
width: calc(100% - 300px);
}
#sidebar {
background-color: #C60;
float: right;
height: 400px;
width: 300px;
}
body {
margin: 0;
}
&#13;
<div id="main">
</div>
<div id="sidebar">
</div>
&#13;
如果你真的想使用JavaScript,你需要设置main
&#39; s width
等于window
&#39; s width
而不使用滚动条({ {1}})减去document.body.clientWidth
&#39; s sidebar
。
此外,在width
调整大小时,需要执行函数doMath()
。
window
&#13;
var main = document.getElementById('main');
var sidebar = document.getElementById('sidebar');
function doMath() {
main.style.width = document.body.clientWidth - sidebar.offsetWidth + 'px';
}
doMath();
window.onresize = doMath;
&#13;
#main {
background-color: #0F0;
float: left;
height: 400px;
width: 100%;
}
#sidebar {
background-color: #C60;
float: right;
height: 400px;
width: 300px;
}
body {
margin: 0;
}
&#13;