在不使用浮点数的情况下,将此流体div放在固定div旁边?

时间:2013-07-03 19:20:34

标签: html css responsive-design

我在下面有这个代码,它在固定的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:

http://jsfiddle.net/3P9XN/4/

3 个答案:

答案 0 :(得分:1)

此处inline-block不是一个选项,因为您无法使左边的容器占用“尽可能多的空间”。

如果您不想使用float(并且假设js太多),我会打电话给最后的手段:

<table/> - [戏剧性的ta -ta -ta -taaaaaa]

如果你遇到一些场景,其中一些元素应该被修改大小而其他元素应该只占用它们,那么如果你想到它,这就是表格基本上做的事情。我知道我们在使用table进行布局时已经被嘘了很多次,但是如果行为需要它,那么就不要去创建复杂的解决方法,而是使用行为与我们期望它们一样的行为

另一方面,table对于响应式设计来说是一个很大的禁忌。

DEMO

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/

UPDATE2

根据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);
 }

<强> http://jsfiddle.net/3P9XN/17/

答案 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保持不变...当然减去内联样式。

演示小提琴:http://jsfiddle.net/audetwebdesign/QypQG/