【发布时间】:2010-06-08 20:30:31
【问题描述】:
假设我有 2 个并排的 div:1 个向左浮动,另一个向右浮动。现在说我将左侧浮动 div 的大小固定为 200px。如何强制右浮动div“最大化”自身或占据剩余的水平屏幕空间(不管浏览器窗口的大小?
【问题讨论】:
-
你的意思是div/window的width?
假设我有 2 个并排的 div:1 个向左浮动,另一个向右浮动。现在说我将左侧浮动 div 的大小固定为 200px。如何强制右浮动div“最大化”自身或占据剩余的水平屏幕空间(不管浏览器窗口的大小?
【问题讨论】:
Here's a solution (inverted, right is fixed 200px) for you using position:absolute.
Here's a solution where the left is fixed 200px.
方法:你基本上是固定左边的“侧边栏”,并在右边的灵活列上添加一个边距,相当于侧边栏的宽度。
代码如下:
.left {
width: 200px;
position: absolute;
left: 0;
top: 0;
height: 100px;
background-color: #999;
}
.right {
min-height: 100px;
background-color: #666;
margin-left: 200px; /* Same as left's width */
}
它们都在 IE6 中按原样工作。
【讨论】:
你不能因为它不是浮动元素来适应剩余空间。如果你想让你的右浮动 div 占据整个持久空间,你应该让 float 属性为 none 并让显示阻塞。
【讨论】:
当 'right' div 的内容没有特殊的爆发内容时(例如太长的文本没有空格,或大图像) - 只需删除 float:right
<div style="width:300px;border:red 1px solid">
<div style="float:left;width:100px;border:1px solid green;">bla</div>
<div style="border:1px solid black;">bla-bla</div>
</div>
【讨论】:
我认为不使用 javascript(或 IE 不支持的灵活框模型)没有很好的方法。
我只是找到视口宽度,然后带走 220,然后设置宽度。使用 jQuery 这将是一个单线器。
【讨论】:
正如 Rich Bradshaw 所说,您可以使用 Javascript。我的第一次尝试(使用 jQuery)是
<script type="text/javascript">
function resize_div() {
$("#maxdiv").width($("#maxdiv").parent().outerWidth()-200);
}
$(document).ready(function() {
resize_div();
});
$(window).resize(function() {
resize_div();
});
</script>
【讨论】:
使用“假列”:example。
HTML:
<div class="menu">
menu<br />
menu<br />
menu
</div>
<div class="contents">
contents<br />
contents<br />
contents<br />
contents
</div>
CSS:
.menu {
background: blue;
color: yellow;
width: 100px;
float: left;
}
.contents {
background: green;
margin-left: 100px;
}
如果您需要在“菜单”的整个高度上设置背景,而“内容”需要在整个高度上设置背景:
像这样:
.container{
background: top left yellow url(http://www.google.com/images/firefox/sprite2.png) repeat-y;
}
【讨论】: