0

我在下面有这段代码,它在固定 div 旁边制作了一个流体 div,

有没有办法在不使用浮点数的情况下获得相同的结果?

<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/

4

3 回答 3

1

不确定您是否愿意使用 jQuery。如果是,您可以执行以下操作:

去掉所有的浮点数,添加display:inline-blockwrapper div中,使用 jQuery 计算总wrapper 宽度减去的差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/

更新2

根据 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/

于 2013-07-03T19:44:52.850 回答
1

inline-block不是一个选项,因为您不能让左侧的容器占用“尽可能多的空间”。

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

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

如果您遇到某些元素应该固定大小而其他元素应该占用它们的大小的场景,那么如果您想到它,这就是表格的基本功能。我知道我们已经多次使用tables 进行布局,但如果行为需要它,那么我们不要去创建复杂的解决方法,而是使用一些行为符合我们预期的东西。

另一方面,tables 是响应式设计的一大禁忌。

演示

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; 
}
于 2013-07-03T19:25:07.090 回答
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/

于 2013-07-03T19:45:08.867 回答