如何使div包含两个浮点div?

Wil*_*Lou 72 html css layout css-float

我不知道这是否是一个常见的问题,但到目前为止我无法在网络上找到解决方案.我想在另一个div中包含两个div,但是这里面的两个div必须对齐相同的级别(例如:left one占用wrappedDiv的20%宽度,右边一个占80%).为了达到这个目的,我使用了以下示例CSS.但是,现在换行DIV并没有包装所有div.包裹Div的高度小于内部包含的两个div.我怎么能确保包装Div具有最大的高度作为包含的div?谢谢!!!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <title>liquid test</title>
    <style type="text/css" media="screen">
        body
        {
            margin: 0;
            padding: 0;
            height:100%;
        }
        #nav
        {
            float: left;
            width: 25%;
            height: 150px;
            background-color: #999;
            margin-bottom: 10px;
        }

        #content
        {
            float: left;
            margin-left: 1%;
            width: 65%;
            height: 150px;
            background-color: #999;
            margin-bottom: 10px;
        }       
        #wrap
        {
          background-color:#DDD;
          height:100%;
        }

</style>
</head>
<body>
<div id="wrap">
    <h1>wrap1 </h1>
    <div id="nav"></div>
    <div id="content"><a href="index.htm">&lt; Back to article</a></div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Mik*_*l S 118

除了clear: bothhack 之外,你可以跳过额外的元素并使用overflow: hidden包装div:

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

  • 我很高兴有人把它放在这里...当人们添加一个元素只是为了清除它只是一个css问题的花车时,它让我发疯. (9认同)
  • 我喜欢溢出:隐藏的方法最好. (7认同)
  • 这有一些缺点,[本网站](http://webdesignerwall.com/tutorials/css-clearing-floats-with-overflow)也推荐`.container {word-wrap:break-word; }`和`.container img {max-width:100%; 身高:自动; 使大内容表现得很好. (4认同)

Mee*_*p3D 72

当块内有两个浮点数时,这是一个常见问题.修复它的最好方法是clear:both在第二个之后使用div.

<div style="display: block; clear: both;"></div>
Run Code Online (Sandbox Code Playgroud)

它应该强制容器的高度正确.

  • div已经是一个块元素,因此您可以从您的样式中删除它. (42认同)

jer*_*jer 8

这应该这样做:

<div id="wrap">
  <div id="nav"></div>
  <div id="content"></div>
  <div style="clear:both"></div>
</div>
Run Code Online (Sandbox Code Playgroud)


Tho*_*ley 8

overflow:hidden (如@Mikael S所述)并不适用于所有情况,但它应该适用于大多数情况.

另一种选择是使用:after技巧:

<div class="wrapper">
  <div class="col"></div>
  <div class="col"></div>
</div>

.wrapper {
  min-height: 1px; /* Required for IE7 */
  }

.wrapper:after {
  clear: both;
  display: block;
  height: 0;
  overflow: hidden;
  visibility: hidden;
  content: ".";
  font-size: 0;
  }

.col {
  display: inline;
  float: left;
  }
Run Code Online (Sandbox Code Playgroud)

而对于IE6:

.wrapper { height: 1px; }
Run Code Online (Sandbox Code Playgroud)