【问题标题】:Why is my perspective on body causing FF to not display correctly为什么我对身体的看法导致 FF 无法正确显示
【发布时间】:2015-02-18 18:52:49
【问题描述】:

我有一个元素 (div),我 position: fixed;。此元素不应影响内容流。

但在我使用的 CSS 主题中,这条规则

body {
    perspective: 800;
}

已应用。这会导致我的元素在 Firefox 中流入我的体内。我的身体可以向右滚动。 (好像我设置了position: absolute;,但实际上我使用的是position:fixed

http://codepen.io/anon/pen/zxWweY

这在 Chrome 中看起来不错,那么在 FF 中到底发生了什么?这是预期的行为吗?

【问题讨论】:

    标签: css firefox css-transforms


    【解决方案1】:

    这是因为perspectivetransform 都为固定定位元素建立了一个包含块(有点像相对定位容器对绝对定位后代的处理方式)。这在Transforms Module 中有说明:

    对于transform

    对于布局受 CSS 框模型控制的元素,任何值 除了 none 之外,转换的结果是同时创建了一个 堆叠上下文和包含块。该对象充当 包含固定定位后代的块。

    对于perspective

    将此属性与 none 以外的任何值一起使用会建立一个 堆叠上下文。它还建立了一个包含块(有点 类似于 position: relative),就像 transform 属性一样。

    所以这意味着.loading-circle 最初定位在主体的顶部和右侧(它本身不会导致滚动条),但随后您将这个元素在 X 方向上转换 50%(向右)并且将其旋转 45 度。

    因此,当您删除透视图时,此元素相对于视口定位(如果元素溢出,则不会添加滚动条)但是当添加透视图时,主体将成为新的包含块,并且由于溢出,主体滚动条被添加.

    【讨论】:

    • 感谢您的澄清,您的解释很有道理:)
    • @marczking:很高兴为您提供帮助 :)
    猜你喜欢
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 2019-12-02
    • 2020-08-29
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多