css过滤器是不是有动画转换属性?

Posted

技术标签:

【中文标题】css过滤器是不是有动画转换属性?【英文标题】:Is there an animatable transition-property for css filters?css过滤器是否有动画转换属性? 【发布时间】:2012-08-25 00:26:34 【问题描述】:

我正在尝试为 CSS 过滤器设置动画,但找不到有关正确过渡属性的任何信息。它们是什么?

这是一个例子:http://jsbin.com/onijim/3/

【问题讨论】:

应该是同一个属性名吧?确保您也正确匹配前缀。 【参考方案1】:
-webkit-transition : -webkit-filter 500ms linear

在 webkit 中工作。我不知道 FF 或 Opera 中的过滤器支持。

我不确定我是否完全理解您的问题。

【讨论】:

您理解正确。显然,在撰写本文时,transition-property 仅适用于前缀,谢谢。 如果我转换 -webkit-filter,它的动画效果很好,但动画后 DIV 显示为空。我只是对 div 应用 5px 的模糊。 显然我遇到了渲染故障,因为它仅在包含模糊 div 的 div 具有已转换的左侧位置集时才会中断,但当左侧为 0px 时,模糊 div 不再消失(或如果我模糊它,然后更改它仍然显示的容器的左侧位置)。希望他们能解决这些问题! 如果我通过 javascript 更改内容或用户单击模糊按钮,模糊的 div 也不会更新。进行这些更改后,我删除了模糊,然后出现了模糊伪影!【参考方案2】:

这就是我正在使用的。对于 Mozilla,第二个对我有用,但在我的资料中我发现它带有 -moz- 前缀,所以保留两者并没有什么坏处。

-webkit-transition: 1s -webkit-filter linear;
-moz-transition: 1s -moz-filter linear;
-moz-transition: 1s filter linear;
-ms-transition: 1s -ms-filter linear;
-o-transition: 1s -o-filter linear;
transition: 1s filter linear, 1s -webkit-filter linear;

【讨论】:

正如@AxeEffect 在他的评论中提到的那样,为了获得最新的 Chrome 支持,您应该将 -webkit-filter 属性添加到无前缀的 transition,例如 transition: 1s filter linear, 1s -webkit-filter linear;【参考方案3】:

在支持 transition 且不带 -webkit- 前缀的最新版本的 Chrome 中,如果您使用的是 transition-property(没有简写 transition)和像 filter 这样仍需要 -webkit- 前缀的属性,则需要混合使用无前缀和有前缀的代码:

transition-property: width, left, transform, box-shadow, filter, -webkit-filter;

请注意filter 属性与-webkit-filter 重复。这对于不使用前缀的浏览器是必需的,例如 Firefox,在这种情况下 -webkit-filter 会被忽略。

【讨论】:

【参考方案4】:

检查过滤器属性中是否有不同的值:

错误

.link-image 
    transition: 0.3s;
    filter: brightness(80%);


.link-image:hover 
    transition: 0.3s;
    filter: brightness(10);

正确

.link-image 
    transition: 0.3s;
    filter: brightness(80%);


.link-image:hover 
    transition: 0.3s;
    filter: brightness(100%);

【讨论】:

以上是关于css过滤器是不是有动画转换属性?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery类过滤和css变换延迟/阻塞动画在它下面的部分

Safari 错误。当尝试使用模糊过滤器为 svg 转换设置动画时,safari 非常滞后

SASS mixin 将十六进制转换为 CSS 过滤器

Vue的计算属性-过滤器-添加过渡动画的几种方式

vue过滤动画

如何仅使用 CSS 过滤器将黑色转换为任何给定的颜色