vue实现动画效果一行一行的显示

在做年度报告总结的时候有这样一个需求,要求页面有加载效果,加载的效果就是图片和文字一行一行的先后显示

1,可以用循环数据实现,这种方法更适合页面样式简单,数据少的情况。

<template>
  <div>
    <p v-for="(item, index) in lineArrb" :key="index">{{ item }}</p >
  </div>
</template>

<script>
export default {
  data() {
    return {
      lineArr: ["第一行", "第二行", "第三行"],
      lineArrb: [],
      timer:null
    };
  },
  mounted() {
    let num= 0;
    this.timer = setInterval(() => {
      if (index < this.lineArr.length) {
        this.lineArrb.push(this.lineArr[index]);
        num++;
      } else {
        clearInterval(this.timer);
      }
    }, 1000);
  },
};
</script>

2.因为页面已经事先绘制好了,不想在vue模板上增加循环,那么只能在css搞点动作了

因为年度报告有好几页,只是在某一页加上动画所以先判断是哪页,比如我需要在第三页加动画,所以判断当前页是不是第三页,如果当前在第三页,滑到第二页在返回第三页时不要动画效果,所以还要加判断

实现思路:先给要加动画的dom加上class名,在js中通过class获取到到dom,循环在dom添加style动画animationDelay 加上延迟几秒的值。比如第一行要延迟一秒显示,在第一行显示出来第二行再显示,也就是第二行延迟2s显示

<template>
  <div>
     <swiper
        ref="mySwiper"
        class="swiper-container"
        :direction="'vertical'"
        @slideChange="onSlideChange"
      >
       <swiper-slide>
        我是第一页
      </swiper-slide>
      <swiper-slide>
        我是第二页
      </swiper-slide>
      <swiper-slide>
            <p :class="[
                  { content_delay: isDelay },
                  { content_duration: isDuration },
                ]">第一行</p>
            <p :class="[
                  { content_delay: isDelay },
                  { content_duration: isDuration },
                ]">第二行</p>
            <p :class="[
                  { content_delay: isDelay },
                  { content_duration: isDuration },
                ]">第三行</p>
      </swiper-slide>
    </swiper>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isDelay: false,
      isDuration: false,
      currentNum:0,
      num:0
    };
  },
  mounted() {
    //当前页
    onSlideChange(swiper){
      this.currentNum = swiper.activeIndex + 1;
      if (this.currentNum === 3){ 
        this.isDelay = true;
        this.num++;
        if (this.num > 1) {
          this.isDuration = true;
          this.isDelay = false;
        }
        this.$nextTick(() => {
          this.animation();
        });
      }
    },
    //添加动画逐行显示
    animation() {
      this.delay = 0;
      var lineByLineElements = document.querySelectorAll(".content_delay");
      this.delayLeng = lineByLineElements.length;
      for (var i = 0; i < lineByLineElements.length; i++) {
        lineByLineElements[i].style.animationDelay = this.delay + "s";
        this.delay += 1; // 调整每行之间的延迟时间
      }
    },
  },
};
</script>

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Ant Design Vue实现表格行的拖动,你可以使用Ant Design Vue提供的Draggable组件。下面是一个示例,展示了如何使用Ant Design Vue实现表格行的拖动: 1. 首先,确保你已经安装了Ant Design Vue。你可以使用以下命令来安装它: ```bash npm install ant-design-vue@next ``` 2. 在你的Vue组件中引入所需的组件和样式: ```vue <template> <div> <a-table :columns="columns" :dataSource="dataSource"> <template #body="{ row, index }"> <draggable v-model="dataSource" :element="'tr'" :options="dragOptions"> <tr :key="index"> <td>{{ row.name }}</td> <td>{{ row.age }}</td> <td>{{ row.address }}</td> </tr> </draggable> </template> </a-table> </div> </template> <script> import { Table, Draggable } from 'ant-design-vue'; import 'ant-design-vue/dist/antd.css'; export default { components: { 'a-table': Table, draggable: Draggable, }, data() { return { columns: [ { title: 'Name', dataIndex: 'name', key: 'name' }, { title: 'Age', dataIndex: 'age', key: 'age' }, { title: 'Address', dataIndex: 'address', key: 'address' }, ], dataSource: [ { key: 1, name: 'John', age: 28, address: 'New York' }, { key: 2, name: 'Alice', age: 32, address: 'London' }, { key: 3, name: 'Bob', age: 24, address: 'Paris' }, ], dragOptions: { animation: 200, handle: '.ant-table-row', }, }; }, }; </script> ``` 在上面的代码中,我们使用了Ant Design Vue的Table和Draggable组件。我们将Draggable组件包裹在表格行的模板中,以实现行的拖动。我们还定义了一些样式选项,例如动画效果和拖动的句柄。 这样,你就可以在Ant Design Vue实现表格行的拖动了。根据你的需求,你可以自定义样式和行为,以满足你的项目需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值