首页 > 其他分享 >Vue3 appear 失效 如何使用 appear

Vue3 appear 失效 如何使用 appear

时间:2023-10-01 16:46:18浏览次数:34  
标签:动画 appear Vue3 fuct enter active 失效 class

最近在学习 vue3 的动画时遇到 appear  无法生效的问题

问题的具体表现:

看以下代码,按理应该来说,如果我们设置 fuct-appear-from,fuct-appea-active 后在元素初始出现时应该会有一个效果

html

<Transition name="fuct" appear>
  <div class="doc" v-if="show"></div>
</Transition>

css

/* 初次效果 */
.fuct-appear-active{
  transition: all .3s ease-in-out;
}
.fuct-appear-from{
  transform: translateY(7em);
}
/* 进入与离开的动画 */
.doc{
  width:50px;
  height:50px;
  background-color: red;
}
.fuct-enter-from,
.fuct-leave-to{
  transform: translateX(2em);
}
.fuct-enter-active,
.fuct-leave-active{
  transition: all .5s ease-out;
}

如果你和我一样设置了上面这样的属性与样式,说明你和我一样没有理解这个 appear " 初次 "的意思

先说一下代码中的语法错误,首先不存在 *-appear-from 等这样的动画设置,只有 appear-active-class 的自定义动画属性,这也是我一直认为动画不生效的原因

 

其他问题与疑问 的解决

什么是" 初次 " ?

  首先要搞明白这个初次出现的问题,这个初次指的是页面在 默认 渲染的情况下的初次 ,简单来说就是 这个元素是默认显示的,即 v-if="show" 中 show默认为 true. 如果默认是不显示的元素,appear 设置后也是无效果的

初次动画是什么?

  在解决初次动画后,有的人认为这个初次动画应该特殊一点 所以会 想应该有 *-appear-from 的css设定,但是其实没有, 我也不知道为什么我的VScode弹出了提示,其实这个初次动画调用的是 进入动画即 *-enter-from 系列动画,

   因为默认情况下 如果元素默认显示的情况下是不会调用  进入动画元素的,设置appear 后 则会默认渲染时 执行 进入动画 ;

 

可运行的调试代码,尝试删除内部的 appear 刷新页面,你就懂了

<template>
    <button @click="show=!show">click</button>
<Transition name="fuct" appear-from-c>
  <div class="doc" v-if="show"></div>
</Transition>
</template>

<script setup>
import { ref } from 'vue'
const show=ref(true)
</script>

<style>
/* 初次效果 */
fo-appear-active{
  transition: all .3s ease-in-out;
}
fo-appear-from{
  transform: translateY(7em);
}
/* 进入与离开的动画 */
.doc{
  width:50px;
  height:50px;
  background-color: red;
}
.fuct-enter-from,
.fuct-leave-to{
  transform: translateX(2em);
} 
.fuct-enter-active,
.fuct-leave-active{
  transition: all .5s ease-out;
}
</style>
View Code

 

总结

  appear 是一个在元素默认被显示的情况下 调用进入动画效果,使得元素在这种初次渲染情况下 执行进入动画的属性

    当然如果你设定了 appear-from-class 等属性 则会与 进入动画同时执行

再提供一个是 class 自定义初次动画的版本,你会发现appear 无论如何都会调用 enter 进入动画,除非你不设置 enter 动画

<script setup>
import {ref} from 'vue'
const show=ref(true);
</script>
<template>
<button @click="show = !show">Ckick</button>
<Transition name="fuct" appear
appear-active-class="active"
appear-to-class="to"
>
  <div class="doc" v-if="show"></div>
</Transition>
</template>
<style>
.active{
  transition: all .3s ease-in-out;
}
.to{
  transform: translateY(7em);
}


.doc{
  width:50px;
  height:50px;
  background-color: red;
}
.fuct-enter-from,
.fuct-leave-to{
  transform: translateX(2em);
}
.fuct-enter-active,
.fuct-leave-active,
.fuct-appear-active{
  transition: all .5s ease-out;
}
.fuct-appear-from{
  transform: translateY(6em);
}
</style>
View Code

 

如何使用 appear 

  在阅读本节前请一定查看了 失效问题的总结部分

  appear 虽然没有设定 *-appear-from 的css 但是保留了 appear-from-class自定义属性 

    对于没有其他动画需求的内容,只需要一个进入的特殊动画,我们只需要设置以下 自定义动画属性即可, appear-active-class="active" 或者 使用enter动画,只设置appear 只是容易搞混,而且enter是会被重复使用的

  

  这个属性主要还是对页面动画的一种补充,对于一开始在页面显示的元素,提供一种更加平滑的显示,使用 enter 与 class 动画形式以实际环境为准

  

  在enter 与 class 同时设定时

    enter与class会同时运行

    enter与class 有动画内容冲突时 enter的应用级别高于 class 的自定义动画,这甚至会让 class的全部动画失效

2023-10-01 16:23:48

由于本人还在学习中,上述文章中出现问题烦请 联系 Email : [email protected]

标签:动画,appear,Vue3,fuct,enter,active,失效,class
From: https://www.cnblogs.com/c4996/p/17738954.html

相关文章

  • OWASP Top 10漏洞解析(2)- A2:Cryptographic Failures 加密机制失效
    作者:gentle_zhou原文链接:<https://bbs.huaweicloud.com/blogs/405125>Web应用程序安全一直是一个重要的话题,它不但关系到网络用户的隐私,财产,而且关系着用户对程序的新人。随着Web应用程序功能持续增加,复杂性不断提高,这些程序也面临着越来越多的安全威胁和挑战。为了帮助这些应用程......
  • Uniapp学习笔记(vue3)
    https://uniapp.dcloud.net.cn/使用Vue.js开发所有前端应用的框架开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。周边生态丰富发送请求 methods:{ getMsg(msg){ ......
  • 远程桌面复制粘贴失效
    以下是找网上的答案这是因为远程桌面的剪切板监控已经失效。1.打开堡垒机的任务管理器,找到这个服务(我找不到这个界面) 2.点击结束进程。3.win+R输入rdpclip 在复制粘贴就可以了。二、如果还是不可以的话,去看下本机的这个服务有没有开启  二、试完无果,同事提供了方......
  • 使用vite创建vue3项目
    vite是一种新型前端构建工具,能够显著提升前端开发体验,它主要由两部分组成;一个开发服务器,它基于 原生ES模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优化过的静态资......
  • 掌握Vue3 Props:提升你的前端开发技能
    Prop类型到这里,我们只看到了以字符串数组形式列出的prop:props:['title','likes','isPublished','commentIds','author']但是,通常你希望每个prop都有指定的值类型。这时,你可以以对象形式列出prop,这些property的名称和值分别是prop各自的名称和类型:props:{title:S......
  • uniapp自动引入Vue3(ref,reactive...)的API、uniapp生命周期和封装hooks
    未自动导入Vue3(ref,reactive...)的API和uniapp生命周期,需要在每个页面把API和uniapp生命周期的代码都重复写一遍<scriptsetup>import{ref,reactive}from"vue"import{onLaunch,onShow,onHide}from'@dcloudio/uni-app'//封装的hooksimport{useLi......
  • Vue3
    Vue3介绍 Vue3的变化1.性能的提升打包大小减少41%初次渲染快55%,更新渲染快133%内存减少54%2.源码的升级使用Proxy代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking(摇树--清除死代码进行优化)3.拥抱TypeScript Vue3可以更好的支持TypeScri......
  • 记录--Vue3 + Fabricjs 定制国庆专属头像
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助生在国旗下,长在春风里!国庆将至,采黎为大家带来定制头像2.0(国庆头像),让我们用代码的形式为祖国庆生!欢迎大家点赞收藏加关注哦前言想看效果或者想定制春节头像的小伙伴请直奔效果区域;想一睹定制头像2.0小工具的......
  • vue3项目结合antdesignvue封装form表单及校验
    效果图 完整代码1<scriptsetup>2import{defineProps,onMounted,reactive,ref,defineEmits}from'vue'3import{Card,Input,Select,DatePicker,FormItem,Form,Button}from'ant-design-vue'4import{useRuleChe......
  • vue3项目table表格动态表头生成+行数据合并
    这两处地方是动态的,由后端数据返回思路流程  1,后端返回数据二次处理  2,根据后端数据生成动态表头  3,利用antd的customRender与rowSpan设置行合并 完整代码<template><Table:data-source="dataSource":columns="columns":pagination="......