【问题标题】:Why does order of float div and non-float div matter only in some cases?为什么浮动 div 和非浮动 div 的顺序仅在某些情况下才重要?
【发布时间】:2011-09-29 06:50:59
【问题描述】:

我有一个与CSS Auto Margin pushing down other elements 类似的问题:右侧浮动侧边栏被推到主非浮动内容 div 下方。 answer 提议的作品:只需颠倒标记的顺序并写出浮动 div before 非浮动 div。

例如,这个:

<div class="container">
    <div id="non-floating-content">
        fooburg content
    </div>
    <div id="float-right">
        test right
    </div>
</div>

需要尴尬地重新排序为:

<div class="container">
    <div id="float-right">
        test right
    </div>
    <div id="non-floating-content">
        fooburg content
    </div>
</div>

那么,为什么不重新排序也可以工作:Elastic layout with max-width and min-width using grid based design? 查看live demo。标记的顺序仍然是明智的:浮动 div 写在非浮动 div 之后。然而浮动并没有被向下推到页面上。

我问是因为我不想为了正确设置样式而不得不破解主题 PHP(重新排序 div)。

其他帖子也说解决方案是“重新排序您的 div”:

【问题讨论】:

  • 如果没有看到原始问题就很难知道。我建议您对该问题的已接受答案发表评论?
  • 现场演示中非浮动的div在哪里?
  • @kinakuta 现场演示中的非浮动 div 是#fluidColumnContainer
  • 嗯,我似乎找不到浮动规则。你确定吗? (我可能只是瞎了)
  • 我更新了live demo 链接。 #fluidColumnContainer 的 CSS 规则是 #fluidColumnContainer { padding: 0 200px 0 0 }。就是这样。

标签: css html fluid-layout


【解决方案1】:

您链接的原因是因为其他列也浮动

【讨论】:

  • 所以你是说在非浮动 div 中浮动 inside 会产生影响?哇。
  • @hyuz:这取决于所涉及元素的block context...
【解决方案2】:

之所以有效,是因为您的包含元素没有高度。当您在包含元素中只有浮动元素时,它将折叠到 0 高度。例如,如果您要添加溢出:隐藏;到#fluidColumnContainer,它将充当清除修复,扩展容器以包含浮动元素。然后你会看到右浮动元素再次下拉。

【讨论】:

  • 啊酷,有道理;我什至没有注意到折叠的容器。非常感谢!让我们看看这些新知识是否能帮助我修复我的网站...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
相关资源
最近更新 更多