使用CSS3动画会破坏页面中所有元素的固定背景定位

时间:2014-04-05 01:47:18

标签: css google-chrome css-position css-animations background-position

我正在制作一个网页,其中包含fixed背景定位的元素,并且在我将 css动画应用于(完全不同且无关紧要)元素之前,它一直运行良好。< / p>

我尝试删除/重新应用动画以确保它实际上是问题,当然,当我添加动画时,背景定位(页面上每个元素)变为静态,在我删除动画的那一刻再次工作。

这是正常的吗?


最终,我正在寻找一个允许的解决方案:

  • 相对定位,
  • 浮动元素(或至少类似包装的子项)
  • 固定背景位置
  • 一起使用
  • 在使用CSS3动画的网页中
  • 与Chrome兼容。

这里有动画:

http://jsfiddle.net/Wr7X4/5/

这里没有他们:

http://jsfiddle.net/Wr7X4/4/

我只在Chrome中对此进行了测试。


更新:如一个答案所示,为元素提供固定背景位置 static定位会导致元素保留其固定背景的行为CSS3动画在页面上是活动的,代价是所需的相对元素定位。

可以假设这可以通过将相关元素包装在相对父元素中来解决,但事实并非如此。

如果页面上的CSS3动画(或转换)活动 ,即使是相对定位元素的大孩子也会失去固定的背景定位。


静态定位>

http://jsfiddle.net/Wr7X4/6/

这里的静态定位带有相对包装浮动

http://jsfiddle.net/Wr7X4/7/

以上没有激活CSS3动画

http://jsfiddle.net/Wr7X4/8/

我刚发现的东西,如果我从包装器中删除float:left

http://jsfiddle.net/Wr7X4/9/

这使它工作得很好!


2 个答案:

答案 0 :(得分:3)

CSS3动画打破Chrome中固定的背景定位。

我最接近请求的答案是一种解决方法,允许:

  • 相对定位,
  • 已修复背景元素,
  • 在使用 CSS3动画的网页中
  • 与Chrome兼容。

代表:

  • fixed-background元素最终 被赋予 float定位的行为

解决此此Chrome错误:

  1. 使用类fixed background-positionrelative-wrapper元素周围放置一个包装。

  2. 为相对包装类指定样式position: relative。 (以及你需要提供的任何其他款式,例如宽度或高度。只是没有浮动

  3. 最后,具有讽刺意味,为fixed background-position样式float: left(或任何浮点数)赋予元素。注意:浮动定位会使您的元素的行为和大小不同。


  4. 如果您还不知道它是如何导致元素的行为,那么您应该使用Google CSS浮动定位。但是,由于这个问题的目的是弄清楚如何在具有CSS3动画的页面中对固定背景元素进行相对和浮动定位,我将假设你可以处理它。


    先前注意,我说fixed background-position元素不能

      

    最终 获得 float定位的行为

    这是因为无论你做什么,你都必须将浮动元素包装在非浮动定位的包装中,或者fixed背景位置保持断开。只是发生了 元素中的相对包装需要float定位以保持其固定的背景定位。


    我不知道为什么会这样,但确实

    这是JSFiddle, see for yourself.


    CSS3过渡活动:对固定背景定位的影响相同

    我没有时间添加JSFiddle示例,但值得注意的是,当 CSS3 Transitions 处于活动状态时,此解决方案还可以解决元素中fix-background position的破坏问题在网页中。

答案 1 :(得分:2)

试试这个

.outside-board{
    //try to change position to
    position:static;
}