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