【问题标题】:How can I make my javascript animation faster?如何让我的 javascript 动画更快?
【发布时间】:2020-05-30 12:19:42
【问题描述】:

我制作了一个 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>

【问题讨论】:

    标签: javascript html css vue.js css-transitions


    【解决方案1】:

    尝试使用外部插件,它的性能和质量更好,在vue.js 使用下面链接中的v-animatetransition 等框架选项:

    https://vuejs.org/v2/guide/transitions.html

    【讨论】:

    • 但是如何使用 vue.js 过渡制作无限动画?
    • 插入这个:动画迭代计数:无限;在进入和离开标签中
    猜你喜欢
    • 2019-11-15
    • 1970-01-01
    • 2012-02-17
    • 2023-04-06
    • 1970-01-01
    • 2012-02-02
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多