代码之家  ›  专栏  ›  技术社区  ›  Nikita Rybak

了解容器如何在css中工作

  •  5
  • Nikita Rybak  · 技术社区  · 14 年前

    我是一个程序员,试图在网页设计中做一些修补,通常发现css非常符合逻辑。到目前为止,只有“拳击模型”仍然是一个神奇的土地,充满了牛头怪和哈普斯。我将举例说明:

    • http://jsfiddle.net/qyMxv/
      指定了填充的div的内部元素超出了div空间。div不应该把里面的东西都包起来吗?否则又有什么意义呢?

    • http://jsfiddle.net/wk9Kg/
      父div完全消失,而子div正常显示。更奇怪的是,这种行为是由 float:left; 是的。

    有什么教程/参考书可以帮助我了解这些怪癖的逻辑吗?我信任w3学校有一段时间了,但他们在这个问题上非常简短。在网上找到好的内容也很困难。现在我只是摆弄 display 我是说, position float 直到它工作。

    谢谢!

    5 回复  |  直到 14 年前
        1
  •  6
  •   meder omuraliev    14 年前
    1. 通常,div应该在内部包含/包含任何相对或静态定位的、非浮动的元素,但您可以在内联元素上使用padding,或者使用负边距/负值(位置相对)。这允许我假设更灵活的布局。

    2. 浮动不应该被包含,因为它们是不流动的,除非您有一个元素清除后,或溢出设置为任何其他可见的。在ie7/ie6中,您只需要触发haslayout,它可以通过许多属性/值组合来完成(这违反了规范)。见 http://work.arounds.org/clearing-floats/ 想办法弄清楚里面的浮子。

    下面是我从另一个问题中编译的跨浏览器错误站点列表:

        2
  •  3
  •   SLaks    14 年前

    浮动元件被从正常流量中取出,因此不被视为占据任何高度。
    为了解决这个问题,可以在float后面添加一个空元素 clear:both 是的。清除元素是流中的常规元素,并且 clear 属性将其强制位于浮动元素之下。
    因此,包含框将展开以包含clearing元素,同时也将包含float。

    有关详细信息,请参见 spec 以下内容:

    因为浮子不在流动中, 创建的非定位块框 浮箱流量前后 垂直的,好像浮子没有 存在。

        3
  •  2
  •   Paul Schreiber Jon Lin    14 年前
    • 埃里克·迈耶的 CSS: The Definitive Guide 是一个很好的参考。它很旧,但盒子的型号没有变。
    • quirksmode 对浏览器特定行为有很好的解释。
    • 例如2,您可以添加 <div style="clear: both;"></div> 在第二个黑色块或和容器的高度和宽度之后 <div>
        4
  •  1
  •   peterjmag    14 年前

    关于您的第一个问题,下面是我最喜欢的在没有空元素的容器中清除浮动的方法: http://www.quirksmode.org/css/clearing.html

        5
  •  1
  •   Jonathan Day    14 年前

    我发现克里斯·科伊尔的文章写得很好,也很容易理解。他有一个关于核心概念的章节,包括 Floats 以及 Box Model

    希望能帮上忙, JD公司