vue 滚动和过度动画

作者: 暴躁程序员 | 来源:发表于2022-01-15 17:40 被阅读0次

1. 组件内滚动

  1. 组件内滚动到指定锚点 scrollIntoView
    在组件中
<div ref="end">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</div>
// 初始化的化滚动,必须在mounted生命周期中,created 不行
mounted() {
    this.$refs.end.scrollIntoView({
    behavior: "smooth", // 平滑过渡
    block: "start" // 上边框与视窗顶部平齐。默认值
});
}
  1. 组件内滚动到指定位置
    初始化的化滚动,必须在mounted生命周期中,created 不行
    在组件中
document.documentElement.scrollTop = 100 // 不加单位

2, 路由滚动

  1. 进入目标路由滚动到指定位置,只有当内容超出页面出现滚动时才生效
    场景:目标路由可能先打开并缓存过,再次进入目标路由需要回滚到最上面
    在路由文件中配置
const router = new Router({
  routes,
  scrollBehavior(to, from, savedPosition) {
    console.log(to);
    // return 期望滚动到哪个的位置
    return {
      x: 0,
      y: 0,
      behavior: "smooth" // 平滑滚动
    };
  }
});
  1. 进入目标路由滚动到目标路由的指定锚点,只有当内容超出页面出现滚动时才生效
    场景:进入目标路由指定滚动到某个锚点
参数解析:
savedPosition: 点击浏览器的前进回退才生效,获取滚动条的位置 
to.hash :获取目标路由的自定义hash值,在目标路由的url后拼接 #目标路由位置 
点击路由跳转时 to.hash 的值是 目标路由位置 

在路由文件中

const router = new Router({
  routes,
  scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      if (to.hash) {
        return {selector: to.hash}
      }
    }
  }
});

在跳转前的路由组件中,设置path的hash值

this.$router.push({
  path: "/group2/page1#position"
});

在目标组件中,定义锚点位置,必须是id

<div id="position" style="background:red">锚点位置</div>

3. 过渡动画

1. 路由动画
  1. 在index.html中引入animate的cdn动画库
<link href="https://cdn.bootcss.com/animate.css/3.5.2/animate.min.css" rel="stylesheet">
  1. 在 路由出口组件中
<transition
      :duration="1000"
      mode="out-in"
      appear
      appear-active-class="fadeIn"
      enter-active-class="fadeIn"
      leave-active-class="fadeOut" 
    >
      <router-view class="animated"></router-view>
    </transition>
2. 组件动画
  1. 在index.html中引入animate的cdn动画库
<link href="https://cdn.bootcss.com/animate.css/3.5.2/animate.min.css" rel="stylesheet">
  1. 在组件中使用
  • 动画触发条件:显隐的时候触发,添加animate类的时候触发
  • 规范:class 中 animate__animated 是必须写的,后面的类是效果类,可在官网右侧列表体验效果,拷贝的类名放置于animate__animated后,此动画即可生效
<template>
  <div>
    <h1 @click="show = !show">
      显隐触发
    </h1>
    <div class="animate__animated animate__bounce" v-if="show">
      动画内容
    </div>
    <h1 @click="add = !add">
      添加animate类时触发
    </h1>
    <div :class="{ animate__animated: add, animate__bounceIn: add }">
      动画内容
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      show: true,
      add: false
    };
  }
};
</script>

相关文章

  • vue 滚动和过度动画

    1. 组件内滚动 组件内滚动到指定锚点 scrollIntoView在组件中 组件内滚动到指定位置初始化的化滚动,...

  • js数字金额滚动动画(vue)

    vue金额滚动动画 效果预览

  • Vue 无缝轮播实现

    实现原理: 1.采用css3 实现 滚动效果(过渡动画) 2.采用 dom 事件监听 监听 过度动画 3.无缝原理...

  • Vue中的动画

    Vue动画 Vue动画API 定义不同的名称动画 第三方动画库Animate.css和Vue的结合使用 enter...

  • 12.2使用animate.css

    使用过度类名,实现动画 第一步是将需要动画的元素包裹在transition元素中,transition元素时Vue...

  • 过度与动画

    Vue封装的过度动画与动画 1、作用:在插入、更新或移除DOM时,在合适的时候给元素添加样式类名。 2、E...

  • vue中使用animate.css库动画和过度动画

  • 2021-01-08

    Vue过渡和动画 Vue过渡和动画官方文档[https://cn.vuejs.org/v2/guide/trans...

  • Android View 的滚动原理和 Scroller、Vel

    Android 开发中经常涉及 View 的滚动,例如类似于 ScrollView 的滚动手势和滚动动画,例如用 ...

  • 12-vue.js-过度动画

    进入/离开 & 列表过渡 概述 Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下...

网友评论

    本文标题:vue 滚动和过度动画

    本文链接:https://www.haomeiwen.com/subject/pflncrtx.html