【问题标题】:CSS variables and animationCSS 变量和动画
【发布时间】:2016-01-04 18:31:38
【问题描述】:

我试图制作一个“多行”精灵 CSS 动画(受此启发:http://codepen.io/simurai/pen/vmhuJ),结果发现 Firefox 不支持 background-position-x-y

-x/-y 的缺失在此详细讨论:https://bugzilla.mozilla.org/show_bug.cgi?id=550426,建议的解决方案 (background-position-y doesn't work in Firefox (via CSS)?) 是使用 CSS 变量,它最近在 Firefox 中引入。 p>

不过,好像不支持从动画@keyframes 更新 CSS 变量?

...
background-position: var(--bgX) var(--bgY);
...

/*Here, CSS variables don't work:*/
@keyframes move-y {
  from {
    --bgY: 0px;
  }
  to {
    --bgY: -670px;
  }
}

这是一个 JSFiddle(注意:仅限 Firefox):http://jsfiddle.net/phoj0kq5/
我在动画中添加了闪烁的边框只是为了确保它正在运行,但螃蟹不会打响指。我使用的 CSS 变量是错误的,还是它们根本不支持动画?

编辑

更新了在 Chrome 中实际工作的小提琴(仍然不在 Firefox 中):http://jsfiddle.net/phoj0kq5/1/

【问题讨论】:

  • css-variables 规范讨论了与动画相关的自定义属性的行为(参见 §2.1§3),但由于我对动画不太熟悉,因此无法进一步评论.
  • @BoltClock - 谢谢,这是很好的信息。我也不太明白他们在说什么,但“受污染”听起来并不乐观......
  • 你使用scss作为变量使用这个sass-lang.com/guide
  • @lyndact - SCSS 在可以使用之前被编译成普通的 CSS,所以我看不出这有什么帮助。这个问题是关于新功能CSS variables

标签: css firefox animation css-animations css-variables


【解决方案1】:

这不是一个解决方案,而是一个应该有帮助的解决方法:

由于当列和行一次更改一个时,您无法动态显示图像的一部分,因此请尝试仅使用一列或一行图像部分。

当仅使用一行子图像时,您应该可以使用background-position: X 0; 设置查看的部分,而 X 是您每张图像的偏移量。您需要编辑要显示的图像文件以实现此目的。

所以改变图片文件形式中子图片的布局:

☺☺☺☺
☺☺☺☺
☺☺☺☺

到:

☺☺☺☺☺☺☺☺☺☺☺☺

正如我所说,这不是问题本身的解决方案,而是一种解决方法,但它应该在所有浏览器上都能正常工作。但是,Mozilla 应该实现 -x/-y 属性或修复动画中的 CSS 变量问题。在那之前,我还没有找到合适的解决方案。

【讨论】:

  • 谢谢!是的,这将使您能够制作精灵动画,但这里真正的问题是如何在动画中使用新的 CSS 变量。抱歉,如果不清楚。
  • 是的,我所做的实际上只是一种解决方法,因为动画会导致变量出现此类问题。我认为这是与 Mozilla 相关的问题,他们应该修复它。只要他们不能解决这个问题,解决方法应该没问题,尽管它需要图像编辑技能并且需要额外的时间。我很抱歉
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 2019-03-04
  • 2020-03-21
  • 2020-11-22
  • 1970-01-01
  • 2014-10-21
相关资源
最近更新 更多