css3 过渡延迟,如果动画 svg 填充和颜色同时 chrome 中的错误在 FF 中起作用

Posted

技术标签:

【中文标题】css3 过渡延迟,如果动画 svg 填充和颜色同时 chrome 中的错误在 FF 中起作用【英文标题】:css3 Transition delay if animate svg fill and color at the same time bug in chrome works in FF 【发布时间】:2016-07-10 22:26:03 【问题描述】:

我有一个带有内联 svg 和文本的链接。我想在 :hover 上制作动画(或添加一个 .active 类),但在 Chrome 上,过渡不会同时发生。在 Firefox 上一切正常。 这是演示:

[DEMO](http://codepen.io/anon/pen/QNvgvy)

有人知道这个问题的解决方案吗? 谢谢!

【问题讨论】:

【参考方案1】:

我猜这里发生的事情是 FF 和 Chrome 之间的区别在于继承的 css 在过渡阶段传播的方式。 FF 会立即执行此操作,而 Chrome 仅在父元素上的转换完成时才会将新样式值应用于子元素。

看看这个例子:https://jsbin.com/koruyeludi/1/edit?html,css,js,console,output,当你悬停时,留意控制台中打印的颜色值。

示例有 2 个跨度,.child 嵌套在 .parent 中。两者都应用了过渡。当您将鼠标悬停在父跨度上时,颜色会逐渐改变。一旦在父节点上完成转换,子节点上的颜色就会改变。而且由于它也有过渡,它现在开始发挥作用。

所以在你的例子中你有* transition: all 1s; 。父 <a> 将在 [0s-1s] 间隔期间进行颜色转换。 <span><svg> 将在 [1s-2s] 期间改变它们的颜色。 <path> 将在 [2s-3s] 中进行更改。 为避免这种情况,请仅应用一次 transition: - 在根 <a> 元素上)。

【讨论】:

这会导致相同的延迟,但仅在 1 秒内:.33s、.33s、.33s 在 a 标签上应用你的过渡,而不是在每个标签上。 atransition:0.2s all; a *:not(svg):not(path)transition:0.2s all;

以上是关于css3 过渡延迟,如果动画 svg 填充和颜色同时 chrome 中的错误在 FF 中起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何触发css3过渡动画

css3的过渡和动画的属性介绍

css3过渡(transition)和动画(animation)变换(transform )

使用填充为 svg 设置动画

CSS3动画2D3D转换

特定属性的css3转换延迟