最近在负责项目中大屏模块,遇到了点小问题.现在来记录下先来讲下项目是基于Vue现要在keyframes中动态的传递高度(top)。最后的效果如下图(主要涉及到动画效果,中间部分左右两边不说):

主要思路

使用animation配合@keyframes来使用上下移动动画

问题1:如何将不同柱子的top值传递给@keyframes中?用 document.styleSheets[0].insertRule

在请求后端成功后进行的操作:

document.styleSheets[0].insertRule(
    "@keyframes tbMove" + index + "" +
    "{" +
    "0%{top: " + topValue + "px;}" +
    "50%{top: " + (topValue + 15) + "px;}" +
    "100%{top: " + topValue + "px;}" +
    "}"
)
document.styleSheets[0].insertRule(".tbmovestyle" + index + "{" +
    "animation: tbMove"+index+" 4s infinite;" +
    "}"
)

以上代码相当于在页面中插入了 .tbmovestyle 和 @keyframes tbMove + index 样式.可以通过以下代码查看页面样式

console.log("document", document.styleSheets[0])

随后在使用的地方动态绑定即可,参考例子:

<div v-for="(item,index) in centerMsg" :style="{'left':item.LEFT,'top':item.TOP}"
           :class="{
           'tbmovestyle0':index==0,
           'tbmovestyle1':index==1,
           'tbmovestyle2':index==2,
           'tbmovestyle3':index==3,
           'tbmovestyle4':index==4,
           'tbmovestyle5':index==5,
           'tbmovestyle6':index==6,
           'tbmovestyle7':index==7,
           'tbmovestyle8':index==8,
           'tbmovestyle9':index==9,
           'tbmovestyle10':index==10,
           'tbmovestyle11':index==11,
           }"></div>

以上就是我对Vue中@keyframes动态参数的认识,如果文章由于我学识浅薄,导致您发现有严重谬误的地方,请一定在评论中指出,我会在第一时间修正我的文章,以避免误人子弟。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐