【问题标题】:CSS absolute positioned elements and marginsCSS 绝对定位元素和边距
【发布时间】:2014-06-24 16:05:51
【问题描述】:

是否有权得出 CSS 边距(例如 margin-left)影响绝对定位元素的最终位置的结论?似乎负边距将其拉到左侧(绝对位置),将正值拉到右侧(绝对位置)。

有人可以向我解释一下绝对定位元素和边距的组合吗?

谢谢。

【问题讨论】:

  • 不多解释,你说的是对的。
  • 没什么好解释的,它超出了流程,当你用负边距拉出其他元素时,与绝对值一样,你可以参考我关于定位的答案here
  • 这是一个很好的问题,顺便提一下,我在“功能性 CSS”一书中考虑到了这个问题。这本书今天和明天在亚马逊上免费提供,欢迎您查看。

标签: css


【解决方案1】:

正确。边距影响绝对定位元素的边缘开始的位置。

【讨论】:

    【解决方案2】:

    让我们这样理解:

    当您有一个statically-positioned 元素时,该元素是文档正常流程的一部分。因此,对其应用的任何边距都被视为“相对于其周围元素”。

    当您有一个relatively-positioned 元素时,该元素仍然是文档正常流程的一部分。因此,对其应用的任何边距仍被视为“相对于其周围元素”。

    但是,

    当您有一个absolutely-positioned 元素时,该元素会脱离文档的正常流程。该元素的定位现在由第一个非静态定位的父容器(或作为后备的顶级主体元素)决定。因此,当您应用边距时,父容器将被视为“周围元素”,边距是根据“相对于它”计算的。

    希望这会有所帮助。

    【讨论】:

    • In essence, this element's positioning now has nothing to do with any other elements within the page。不是这种情况。周围元素是第一个相对定位、绝对定位或固定定位的父元素。
    • @JohnP 我只是想就单个元素提供一个简化的答案。当然,相对定位的 div 中的绝对定位的 div 将占据其相对于父 div(相对定位的 div)的边距。但这会使这里的答案过于复杂!!我只是想要传达基本概念的答案!
    • 如果您可以为遇到问题和答案的其他人应用说明会更清楚。
    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    相关资源
    最近更新 更多