跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

Vue3中如何动态修改@keyframes动画高度以适应动态DOM列表?

在Vue3中,动态调整CSS的
@keyframes
属性以响应数据变化,例如根据动态DOM列表高度调整动画滚动距离,是一个常见需求。本文将演示如何解决这个问题,避免硬编码动画高度的局限性。 问题:如何根据后台返回的、数量不定的DOM列表高度,动态修改
@keyframes
动画的高度值?直接访问
@keyframes
属性并不直接可行。 解决方案:结合Vue3的
ref
和CSSOM(CSS对象模型)API。在组件挂载后获取DOM列表高度,然后修改已定义的
@keyframes
规则。 代码示例: Comet AI 浏览器 下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。 下载 立即学习 “ 前端免费学习笔记(深入) ”;
代码说明: 使用
ref
获取
.list
元素的引用。
onMounted
钩子函数在组件挂载后执行,获取
.list
的高度
listHeight
。
document.styleSheets[0]
获取第一个样式表(假设
@keyframes
规则在第一个样式表中)。 注意: 这可能需要根据实际情况调整,如果你的样式在其他style标签中,需要找到对应的样式表。 遍历样式表规则,找到名为
scroll-animation
的
@keyframes
规则。 修改
100%
关键帧的
transform
属性,将
translateY
值设置为动态计算的
-listHeight
。
break
语句在找到规则后跳出循环,提高效率。 此方法通过直接操作DOM和CSSOM来动态修改动画,确保动画高度与动态列表高度一致。 请注意,此方法依赖于 浏览器 对CSSOM API的支持。 为了更健壮的实现,可以添加错误处理和对不同浏览器CSSOM API差异的兼容性处理。 此外,考虑使用更现代化的状态管理方案,例如Pinia,来管理动画高度,可以使代码更易于维护和扩展。

相关文章