我在下面有这个代码,它在固定的div旁边制作一个流体div,
有没有办法在不使用float的情况下获得相同的结果?
<div id="wrapper" style="width: 100%">
<div id="left" style="background-color: Blue; height: 100px; float: right; width: 200px;margin-left:10px;"></div>
<div id="right" style="background-color: #5a71e5; height: 100px; margin-right: 210px;">
</div>
的jsfiddle:
答案 0 :(得分:1)
此处inline-block
不是一个选项,因为您无法使左边的容器占用“尽可能多的空间”。
如果您不想使用float
(并且假设js太多),我会打电话给最后的手段:
<table/>
- [戏剧性的ta -ta -ta -taaaaaa]
如果你遇到一些场景,其中一些元素应该被修改大小而其他元素应该只占用它们,那么如果你想到它,这就是表格基本上做的事情。我知道我们在使用table
进行布局时已经被嘘了很多次,但是如果行为需要它,那么就不要去创建复杂的解决方法,而是使用行为与我们期望它们一样的行为
另一方面,table
对于响应式设计来说是一个很大的禁忌。
HTML
<table class="wrapper">
<tbody>
<tr>
<td class="left"></td>
<td class="right"></td>
</tr>
</tbody>
</table>
CSS
.wrapper {
width: 100%;
}
.right {
background-color: Blue;
height: 100px;
width: 200px;
}
.left {
background-color: #5a71e5;
height: 100px;
}
答案 1 :(得分:1)
不确定您是否愿意使用jQuery。如果是,请执行以下操作:
摆脱所有花车,将display:inline-block
添加到包装 div
,使用jQuery计算总包装宽度之间的差值减去left div width
并将其设置为right div
。
<强> HTML 强>
<div id="wrapper">
<div id="left">left</div>
<div id="right">right</div>
</div>
<强> CSS 强>
#left{
background-color: Blue;
height: 100px;
width: 200px;
margin-left:10px;
}
#right{
background-color: #5a71e5;
height: 100px;
}
#wrapper div {
display: inline-block;
}
#wrapper{
width:100%;
}
<强>的jQuery 强>
$('#right').width($('#wrapper').width() - $('#left').width() - 20);
示例小提琴:http://jsfiddle.net/3P9XN/12/
为响应性添加了窗口大小调整检测
<强> http://jsfiddle.net/3P9XN/14/ 强>
根据Marc的建议更新了解决方案,现在通过脚本获取outerWidth和css边距值。更有活力和更清洁的方法。
<强>的jQuery 强>
$(document).ready(setRightWidth);
$(window).resize(setRightWidth);
function setRightWidth(){
var leftmargin = parseFloat($('#left').css('margin-left'));
var width = $('#wrapper').outerWidth(true) - $('#left').outerWidth(true) - leftmargin;
$('#right').width(width);
}
答案 2 :(得分:0)
你总是可以尝试绝对定位,因为你有一个非常明确的高度和宽度。
#wrapper {
width: 100%;
height: 100px;
border: 1px dotted gray;
position: relative;
}
#left {
position: absolute;
right: 0;
top: 0;
bottom: 0;
width: 200px;
background-color: blue;
}
#right {
position: absolute;
left: 0;
right: 210px;
top: 0;
bottom: 0;
background-color: #5a71e5;
}
HTML保持不变...当然减去内联样式。