是否可以使用 jQuery 为 css 剪辑路径属性设置动画?

Posted

技术标签:

【中文标题】是否可以使用 jQuery 为 css 剪辑路径属性设置动画?【英文标题】:Is it possible to animate the css clip-path property using jQuery? 【发布时间】:2021-01-14 13:55:22 【问题描述】:

我有一些元素的属性是通过 jQuery animate() 方法改变的:

$('#mySidenav').animate("width": '-=190');
$('#main_address').animate("padding-left": '-=190');
$('.oberflaeche').animate('margin-left':'-=190');

此外,我在 .oberflaeche 元素中还有另一个绝对定位元素,由于上述操作,在内容向左移动后需要扩展该元素,以便仍然正确地适合其容器。

为此,我使用了可以正常工作的 css 属性 clip-path:

clip-path: inset(0px var(--clipSize) 0px 0px);

发生的唯一问题是我必须动态更改剪辑路径属性,因为窗口大小不同。目前我正在通过基于类的 css 来做到这一点,因为我不确定 jQuery 是否可行。由于方法不同(jQuery 与 css),这两种效果不会同时显示 - css 剪辑路径效果不协调。我已经尝试使用 transition-delay 属性和 transition-timing-function 来解决这个问题,但我没有运气。

所以问题是:是否可以像使用宽度或填充的 css 属性一样为 clip-path 属性设置动画以达到一致的效果?我正在寻找类似的东西

$('#dynamic_element').animate('clip-path': 'inset(0px '+variable_pixel+' 0px 0px)');

我可以调用其他动画。

非常感谢任何帮助。提前致谢!

【问题讨论】:

【参考方案1】:

根据 georg 的建议(请参阅:https://***.com/a/16857838/7323120),我自己解决了这个问题。使用 animate 方法,您可以迭代自定义值范围并在方法的回调中调整相应的 css,例如:

$(step: 0).animate(step: 80, 
   step: function(val) 
      // val equals the current step
      $('#target').css('clip-path', "inset(0px "+val+"px 0px 0px)")
   
);
        

【讨论】:

以上是关于是否可以使用 jQuery 为 css 剪辑路径属性设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSS 剪辑路径剪辑画布?

将具有混合(固定和百分比)值的 CSS 剪辑路径转换为 ​​SVG 剪辑路径

CSS,将内圈剪辑到图像

如何在检查 CSS 位置后解决 Safari 9.1 转换剪辑路径的问题?

防止 CSS 剪辑路径剪辑儿童?

固定导航上的 CSS 剪辑/剪辑路径在 Chrome 和 IE 中不合作