【问题标题】:Having issues with floating divs in HTML using the CSS property "float"?使用 CSS 属性“float”在 HTML 中浮动 div 有问题吗?
【发布时间】:2012-02-07 07:40:50
【问题描述】:

我的 div 有问题。我目前在 html 中有四个“div”,如下所示。我想要做的是将页面中的所有内容都放在“页面” div 中。在“main” div 中,我有“content”和“side” div,它们都有来自 CSS 的“float:left”属性。令人高兴的是,当我这样做时,我失去了我的“页面”div 的背景,它是白色的。如何防止这种情况并创建我的内容和侧 div?我知道这很容易,但由于某种原因,我没有做对。任何帮助将不胜感激。

谢谢

<div id=”page”>
   <div id=”container”>
   </div>
   <div id=”main”>
      <div id=”content”>
      </div>
      <div id=”side”>
      </div>
   </div>
</div>

这是我的 CSS 代码

#page 
{
margin: 2em auto;
max-width: 1000px;
background-color:#fff;
}

#main
{
clear: both;
padding: 1.625em 0 0;
width:700px;
}

#content 
{
clear: both;
padding: 1.625em 0 0;
width:740PX;;
float:left;
}

#side
{
width:250px;
margin:5px;
float:left;
}

【问题讨论】:

    标签: html css css-float


    【解决方案1】:

    您丢失 div 的背景的原因是因为它只包含浮动内容,这导致它没有高度。一旦某物“清除”了浮动,它将再次占据空间。尝试在您的 main div 之后添加它(您可以在样式表中添加样式):

    <div style="clear: both;"></div>
    

    【讨论】:

      【解决方案2】:

      你需要包含你的花车。当你浮动一个元素时,它会将它从文档流中取出,所以如果你不告诉它包含子浮动,任何父容器都会崩溃。

      要包含子浮动,最简单的方法是应用overflow: auto。

      所以试试这个:

      #page {
          margin: 2em auto;
          max-width: 1000px;
          background-color:#fff;
          overflow: auto;
      }
      

      【讨论】:

      • overflow:auto 仅启用此描述 w3schools.com/cssref/pr_pos_overflow.asp 中的滚动条。恕我直言,我不知道这是怎么回答的。
      • @PAULDAWG 恕我直言,一些谷歌搜索会向您展示大量文档示例:google.com/search?q=contain+floats+with+overflow%3A+auto
      • 我在其中一个结果中读到的一些警告:棘手的位 有几点值得特别注意:该技巧适用于四个溢出值中的三个:自动、隐藏和滚动。当然,使用最后一个值将显示滚动条,无论是否需要它们。一些浏览器还需要容器 div 的宽度或高度。当内容超出指定宽度时,浏览器可能会显示滚动条。
      • 有趣的解决方案,不过。没听说过,谢谢
      • 哦,是的,通常旧版本的 IE 需要添加宽度属性。不过,那里并没有什么新东西……IE 总是一团糟……
      【解决方案3】:

      我相信正在发生的事情是,当您为某个东西分配一个浮点数时,它的“高度”并没有真正代表它的父元素。由于其中的浮动元素,您的页面 div 现在认为它的高度为零。在“side” div 之后添加&lt;br style="clear:both;height:1px" /&gt;。添加它会“清除”浮动的 div,因此它们的高度不会完全显示。

      这可能不是你的情况,但是我自己也遇到过几次这个问题,这通常可以解决它。

      【讨论】:

      • 具体来说,当你浮动一些东西时,它会将它从文档流中取出,因此父元素不知道子元素的尺寸(直到,正如指出的那样,你以某种方式包含它们) .虽然可以为此使用附加元素,但常见的方法是为父元素提供overflow 属性。这会强制父级包含浮动的子级。
      【解决方案4】:
          <html><head>
      <style type="text/css">
      #page 
      {
      margin: 2em auto;
      max-width: 1000px;
      width:1000px;
      background-color:#000;
      height:600px;
      }
      
      #main
      {
      clear: both;
      padding: 1.625em 0 0;
      width:700px;
      background-color:#fff;
      }
      
      #content 
      {
      clear: both;
      padding: 1.625em 0 0;
      width:740px;
      height:200px
      float:left;
      background-color:blue;
      }
      
      #side
      {
      width:250px;
      height:100px;
      margin:5px;
      float:left;
      background-color:yellow;
      }
      </style>
      </head>
      
      <body>
      <div id="page">
         <div id="container">
         </div>
         <div id="main">
            <div id="content">
            </div>
            <div id="side">
            </div>
         </div>
      </div>
      </body>
      </html>
      

      【讨论】:

      • 我的其他 div 没有背景,他们从“页面”div 中获取背景。我的身体背景与“页面”的 div 不同。
      • 抱歉,您的问题措辞奇怪。我以为是关于颜色的。请参阅我修改后的答案。
      • 您可以调整颜色和高度,应该可以设置最小高度以确保始终有那么高的高度。
      • 你是对的,我刚刚检查了它并创建了滚动条。我不想那样。你说我需要高度到#content,如果内容增长超过600px怎么办?
      • 使用 min-height:600px 然后它会根据需要增加高度。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多