当float:left设置时,将div扩展到max width

Flo*_*Flo 114 html width

我有类似的东西:

<div style="width:100px;float:left">menu</div>
<div style="float:left">content</div>
Run Code Online (Sandbox Code Playgroud)

两个花车都是必需的.我希望内容div填充整个屏幕减去菜单的100px.如果我不使用浮动,div就会完全扩展.但是如何在设置浮点数时设置它?如果我使用......

style=width:100%
Run Code Online (Sandbox Code Playgroud)

然后内容div获取父级的大小,它是我也尝试过的主体或另一个div,因此它当然不适合菜单,然后显示如下.

mer*_*uro 137

希望我能正确理解你,看看这个:http://jsfiddle.net/EAEKc/

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>Content with Menu</title>
  <style>
    .content .left {
      float: left;
      width: 100px;
      background-color: green;
    }
    
    .content .right {
      margin-left: 100px;
      background-color: red;
    }
  </style>
</head>

<body>
  <div class="content">
    <div class="left">
      <p>Hi, Flo!</p>
    </div>
    <div class="right">
      <p>is</p>
      <p>this</p>
      <p>what</p>
      <p>you are looking for?</p>
    </div>
  </div>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

  • 是的,你是对的,我同意.但是我觉得Flo只提到了这个,因为他认为他们都是!需要获得所需的布局,因此我的替代解决方案. (8认同)
  • 问题是"两个花车都是必要的". (5认同)
  • 啊,我和我再次看到我将其更改为浮动的原因:Ie7和Firefox做得很好,但即5.5和即6开始左边div右边缘的边距,所以它有一个236px(实际宽度,100是一个例子)两个div之间的差距 (2认同)

ala*_*ion 97

我发现这种做法最交叉兼容的方式并不是很明显.您需要从第二列中删除浮动,并应用于overflow:hidden它.虽然这似乎隐藏了任何超出div的内容,但它实际上会强制div保持在其父级内.

使用您的代码,这是一个如何完成它的示例:

<div style="width: 100px; float: left;">menu</div>
<div style="overflow: hidden;">content</div>
Run Code Online (Sandbox Code Playgroud)

希望这对任何有这个问题的人都有用,这是我发现的最适合我正在构建的网站,试图让它适应其他分辨率.不幸的是,如果你div在内容之后包含一个右浮动,如果有人知道一个好的方法让它工作,具有良好的IE兼容性,这不起作用,我会很高兴听到它.

新的,更好的选择使用 display: flex;

既然Flexbox模型的应用相当广泛,我实际上建议使用它,因为它允许更flex灵活的布局.这是一个像原版一样简单的两列:

<div style="display: flex;">
    <div style="width: 100px;">menu</div>
    <div style="flex: 1;">content</div>
</div>
Run Code Online (Sandbox Code Playgroud)

这里有一个三柱,中心柱宽度灵活!

<div style="display: flex;">
    <div style="width: 100px;">menu</div>
    <div style="flex:1;">content</div>
    <div style="width: 100px;">sidebar</div>
</div>
Run Code Online (Sandbox Code Playgroud)


Wil*_*ilt 30

没有固定边距的解决方案

.content .right{
    overflow: auto; 
    background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

为Merkuro +1,但如果浮动的大小改变,你的固定余量将失败.如果你在右边的CSS上面使用div它,它会很好地改变大小,左边浮动的大小会改变.它有点灵活.查看小提琴:http://jsfiddle.net/9ZHBK/144/

  • @alanaktion我把不必要的汽车带走了.不同之处在于溢出值.显然`overflow:hidden`和`overflow auto`会导致相同的行为.我也认为人们很欣赏小提琴. (2认同)

Sea*_*ken 6

浮动的元素将从正常流布局中取出,块元素(如DIV)不再跨越其父级的宽度.在这种情况下规则发生了变化.不要重新发明轮子,请查看此站点以获取一些可能的解决方案,以创建您所追求的两个列布局:http://www.maxdesign.com.au/presentation/page_layouts/

具体而言,"液体双柱布局".

干杯!


小智 5

这种用法可能会解决您的问题。

width: calc(100% - 100px);
Run Code Online (Sandbox Code Playgroud)

width: calc(100% - 100px);
Run Code Online (Sandbox Code Playgroud)