CSS:阴影过滤器上的过渡

时间:2013-07-25 15:33:16

标签: css filter css-transitions

所以我试图将阴影投射到具有透明度的png文件中的非矩形对象上。这样做到目前为止,但当我尝试添加过渡效果悬停在图像上时,过滤器似乎最大化其设置值,然后当转换功能中的计时器启动时快速反弹回实际设置值。我正在运行Chrome 28 Mac,但也出现在Safari上。

我在这里证明了这个效果: http://jsfiddle.net/dbananas/3pMS8/

transition: all 0.2s ease-in-out;
-webkit-filter: drop-shadow(0px 0px 13px rgba(0, 0, 0, 0.9));

建议任何人解决这个问题并使过渡顺利进行?

谢谢, 分贝

2 个答案:

答案 0 :(得分:0)

我会检查一下这是否有效并在Firefox中发生。如果我不得不猜测,我会说这是Webkit中的一个错误(在Firefox中检查可以帮助确认它是一个浏览器错误,而不是代码中的错误)。您可以在此处为其提交错误报告:https://bugs.webkit.org/

那就是说,为了解决这个问题,你可能不得不重新考虑如何解决问题。

例如,如果您正在为文本执行此操作,则可以使用可动画的text-shadow属性。

如果是实际图像,您可以使用“阴影图像”来淡化不透明度(如果您在内容图像上使用此图像),或者交换到(如果您正在交换背景图像) )。

修改我找到了this tutorial,这可能对您有用。这是一种图像交叉淡入淡出效果,就像我之前建议的那样。它有一些不同的变体(包括一个纯CSS),所以你可以调整它以使它适合你。基本上,您向img添加背景,然后淡入/淡出img元素本身以创建效果。我同意它并不理想(如果它在浏览器中正常工作,你的-webkit-filter技术可以说是优越的。)

答案 1 :(得分:0)

这看起来像一个bug。在动画进行过程中(应用加速过滤器),看起来阴影半径的处理方式不同。我已将此记录为Chrome http://crbug.com/266957

作为一种解决方法,您可以将-webkit-transform:translateZ(0)应用于带阴影的元素,这将强制它始终加速。