如何使我的javascript动画更快?

如何使我的javascript动画更快?,javascript,html,css,vue.js,css-transitions,Javascript,Html,Css,Vue.js,Css Transitions,我制作了一个Vue组件,在X轴上制作一个div循环。但我注意到它使用了大量的CPU。我像我想的那样工作,但我想优化它。如何使我的动画速度更快。galeryItems在x轴上移动,当它们达到其父div的宽度时,它们会移动到另一侧。所以,这个循环一直在循环。我宁愿不使用外部插件 <template> <div class="placeholder"> <div class="galery" ref="galery"> <

我制作了一个Vue组件,在X轴上制作一个div循环。但我注意到它使用了大量的CPU。我像我想的那样工作,但我想优化它。如何使我的动画速度更快。galeryItems在x轴上移动,当它们达到其父div的宽度时,它们会移动到另一侧。所以,这个循环一直在循环。我宁愿不使用外部插件

<template>
    <div class="placeholder">
      <div class="galery" ref="galery">
          <div class="galery-item" v-for="i in 10" :key="i" ref="galeryItems" />
      </div>
    </div>
</template>

<script>
export default {
    props:{
      xoffset : {
        type: Number,
        default: 0,
      },
      speed : {
        type: Number,
        default: 1,
      },
      spaceBetween : {
        type: Number,
        default: 50,
      },
    },
    data() {
      return {
      }
    },
    mounted(){
      for(let i = 0; i < this.$refs.galeryItems.length; i++)
        this.$refs.galeryItems[i].style.transform = 'translateX(' + (this.$refs.galeryItems[i].clientWidth + this.spaceBetween) * i + 'px)';
      this.animate();
    },
    methods:{
      animate(){
        window.requestAnimationFrame(this.animate);
        for(let i = 0; i < this.$refs.galeryItems.length; i++)
        {
          let galeryItemRect = this.$refs.galeryItems[i].getBoundingClientRect();
          if(galeryItemRect.x > this.$refs.galery.clientWidth)
          {
            this.$refs.galeryItems[i].style.transform = 'translateX(' + -galeryItemRect.width + 'px)';
            continue;
          }

          this.$refs.galeryItems[i].style.transform = 'translateX(' + (galeryItemRect.x + this.speed) + 'px)';
        }
      }
    }
}
</script>

<style lang="scss" scoped>
.placeholder{
  height: 100vh;
  display: flex;
  align-items: center;
}

.galery
{
  position: relative;
  background-color: green;
  height: 100px;
  width: 100%;
  overflow: hidden;
}

.galery-item{
  display: block;
  position: absolute;
  background-color: black;
  height: inherit;
  min-width: 100px;
  transition: 0s;
}
</style>

导出默认值{
道具:{
xoffset:{
类型:数字,
默认值:0,
},
速度:{
类型:数字,
默认值:1,
},
间隔:{
类型:数字,
默认值:50,
},
},
数据(){
返回{
}
},
安装的(){
对于(设i=0;ithis.$refs.galery.clientWidth)
{
此.refs.galeryItems[i].style.transform='translateX('+-galeryItemRect.width+'px');
继续;
}
this.$refs.galerietems[i].style.transform='translateX(+(galerietemrect.x+this.speed)+'px');
}
}
}
}
.占位符{
高度:100vh;
显示器:flex;
对齐项目:居中;
}
加利先生
{
位置:相对位置;
背景颜色:绿色;
高度:100px;
宽度:100%;
溢出:隐藏;
}
.galery项目{
显示:块;
位置:绝对位置;
背景色:黑色;
身高:继承;
最小宽度:100px;
转换:0s;
}

尝试使用性能和质量更好的外部插件,在
vue.js
中使用以下链接中的框架选项,如
v-animate
transition


尝试使用性能和质量更好的外部插件,在
vue.js
中使用以下链接中的框架选项,如
v-animate
transition


但是如何使用vue.js转换制作无限动画?插入以下内容:动画迭代计数:无限;在enter和leave标记中,但如何使用vue.js转换制作无限动画?插入以下内容:动画迭代计数:无限;进入并离开标签