【问题标题】:Having a CSS fighting itself issue有一个 CSS 与自身作斗争的问题
【发布时间】:2014-01-10 03:43:52
【问题描述】:

我有一个“内容”div,它本身包含 3 个浮动:左的 div。下面是页脚。

现在页脚有一个border-top:10px,您会看到它隐藏在内容div 后面。这是因为内容 div 没有调整它的高度,因为它的内容是浮动的。

为了解决这个问题

overflow:hidden

这是问题所在,虽然这解决了高度问题,但它会导致另一个问题。 3 个浮动 div 上有一个 box-shadow,当“内容”容器的溢出被隐藏时,它会切断外部阴影。

这是 jsfiddle http://jsfiddle.net/rhPCE/2/,如您所见,盒子阴影在外面被切掉,如果您删除溢出:隐藏;从 #content 它修复了阴影,但破坏了页脚 div 的定位。

有什么想法吗? 提前致谢!

【问题讨论】:

    标签: css-float css


    【解决方案1】:

    当你浮动元素时,父容器自然会塌陷,因为floated elements exist outside the normal document flow

    要解决此问题,您可以将clearfix 应用于#content 容器:

    1. #content 中删除overflow: hidden;
    2. 包括一个clearfix,例如:A new micro clearfix hack
    3. 将 clearfix 类应用于#content div,如下所示:<div id="content" class="cf">

    此后,您的父容器#content 将扩展至最高浮动元素的高度。

    工作示例:http://jsfiddle.net/rhPCE/3/

    【讨论】:

    • 效果非常好!可惜它需要被黑客入侵才能正常工作!谢谢!!!!!!
    • 不一定是 hack。清除浮动是处理折叠父元素的标准做法;)
    • 是的,但假装空内容是。我最初尝试将 clear:both 应用于#content,但它本身并没有效果。
    • 使用浮动来布局布局也可以被认为是一种 hack,因为它从来没有真正用于它。它适用于浮动图像和内容并让其他内容环绕它(因此它不计入父母的身高)。如果您不喜欢使用.clearfix,我建议您考虑使用display: inline-block; 作为并排堆叠元素的替代方案。请记住,旧的非现代浏览器(IE6、IE7)不支持display: inline-block;
    • 有道理:)。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2016-01-10
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2013-12-06
    • 2019-04-20
    相关资源
    最近更新 更多