Vue | Vue.js 实现过渡动画

【Vue.js 3.0源码】Transition 组件:过渡动画的实现原理是怎样的? 作为一名前端开发工程师,平时开发页面少不了要写一些过渡动画,通常可以用CSS脚本来实现,当然一些时候也会使用JavaScript操作DOM来实现动画。那么,如果我们使用Vue.js技术栈,有没有好的实现动画的方式呢?Vue.js提供了内置的Transition组件,它可以让我们轻松实现动画过渡效果。Transition组件是如何渲染的,如何执行过渡动画和相应的钩子函数的,以及当两个视图切换时,模式的工作原理是怎样的。... 阅读详情

🖥️ Vue .js专栏:Vue .js 实现过渡动画
🧑‍💼 个人简介:一个不甘平庸的平凡人🍬

✨ 个人主页:CoderHing的个人主页

🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️

👉 你的一键三连是我更新的最大动力❤️


目录

一、认识Vue的动画原理

认识动画

Vue的transition动画

Transition组件的原理

二、动画中常见类的作用

过渡动画class

class添加的时机和命名规则

三、animation动画实现

过渡css动画

同时设置过渡和动画(一般不设置) 

四、动画的常见属性设置

显示的指定动画时间

过渡的模式 mode

动态组件的切换

appear初次渲染

五、列表元素动画组实现

认识列表的过渡

列表过渡的基本使用

六、列表元素的移动动画

列表元素的移动动画


一、认识Vue的动画原理

认识动画

在开发中,我们想要给一个组件的 显示和消失添加某种过渡动画,可以很好的增加用户体验

        React框架本身并没有提供任何动画相关的API 所以在React中使用过渡动画需要使用第三方库 react-transition-group

        Vue中为我们提供 一些内置组件和对应的API 来完成动画,利用它们我们可以 方便的实现过渡动画效果

来看看效果:

JavaScript
<template>
  <div class="app">
    <!-- 没有任何动画效果 太深硬了 -->
    <div>
        <button @click="isShow = !isShow">切换</button>
    </div>

    <!-- 点击切换按钮 在显示和隐藏 -->
    <!-- Vue 给的内置组件 -->
    <!-- transition 不是帮你做动画的,是在恰当的时机帮你做恰当的事 -->
    <transition>
      <h2 v-if="isShow">哈哈哈哈</h2>
    </transition>
  </div>
</template>

<script setup>
import { ref } from "vue";

const isShow = ref(false);
</script>

<style scoped>

h2{
    display: inline-block;
}

/* 开始进入为0 */
.v-enter-from,
.v-leave-to {
  opacity: 0;
  transform: scale(0.6);
}

/* 进入后为1 */
.v-enter-to,
/* 从哪里开始离开 */
.v-leave-from {
  opacity: 1;
  transform: scale(1);
}

/* 进入的过程 进行什么操作 */
.v-enter-active,
.v-leave-active {
  transition: all 2s ease;
}
</style>

没有动画的情况下,整个内容的显示和隐藏都会非常的生硬:

        如果我们希望给 单元素或者组件实现过渡动画,可以 使用 transition内置组件 来完成动画

Vue的transition动画

Vue提供了transition的封装组件,在一下情况下,可以给任何元素添加进入/离开 过渡

        条件渲染(使用v-if)条件展示(使用v-show)

        动态组件

        组件根节点

Transition组件的原理

Vue自动给h2元素添加了动画 因为什么呢?

当插入或删除 包含在transition组件中的元素时 Vue将会做以下处理:

        1.自动嗅探 目标元素是否应用了CSS过渡或动画,如果有 那么 在恰当的时机添加/删除 CSS类名

        2 如果 transition 组件提供了 Js钩子函数, 这些钩子函数在恰当的时机被调用

        3 如果 没有找到Js钩子并且也没有检测到CSS过渡/动画 DOM插入 删除操作将会立即执行

二、动画中常见类的作用

过渡动画class

事实上,Vue帮助我们在这些class之间来回切换完成的动画:

V-enter-from: 定义进入过渡的开始状态;

        在元素被插入之前生效,在元素被插入之后的下一帧移除.

V-enter-active: 定义进入过渡生效时的状态.

        在整个过渡的阶段中应用,在元素被插入之前,在过渡/动画完成之后移除.这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

V-enter-to: 定义进入过渡的结束状态

        在元素被插入之后下一帧生效(与此同时v-enter-from被移除) 在过渡/动画完成之后移除.

V-leave-from: 定义离开过渡的开始状态.

        在离开过渡被触发时立刻生效,下一帧被移除

v-leave-active:定义离开过渡生效时的状态

        在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

v-leave-to:离开过渡的结束状态

        在离开过渡被触发之后下一帧生效 (与此同时 v-leave-from 被删除),在过渡/动画完成之后移除。

class添加的时机和命名规则

 

class的name命名规则如下:

        如果我们使用的是一个没有name的transition,那么所有的class是以 v- 作为默认前缀;

        如果我们添加了一个name属性,比如 <transtion name="xXiong">,那么所有的class会以 xXiong- 开头

三、animation动画实现

过渡css动画

我们不仅可以用transition来实现动画效果,也可以通过 animation来实现

同时设置过渡和动画(一般不设置) 

Vue为了知道过渡的完成,内部在监听transitionend或animationend 到底使用哪一个取决于元素应用的CSS规则.

        如果我们 只是使用了其中的一个,那么Vue能自动识别类型并设置监听;

如果我们同时使用了过渡和动画呢?

        并且在这个情况下可能某一个动画执行结束时,另外一个动画还没有结束

        在这种情况下,我们可以设置 type 属性为 animation 或者 transition 来明确的告知Vue监听的类型

四、动画的常见属性设置

显示的指定动画时间

        我们可以显示的来 指定过渡的时间 通过 duration属性

duration可以设置两种类型的值:

        number类型:同时设置进入和离开的过渡时间

        object类型:分别设置进入和离开的过渡时间

JavaScript
<transition name="xXiong" type="animation" :duration="1000">
// 单位是 毫秒
// 对象形式
<transition name="xXiong" type="animation" :duration="{enter:800,leave:1000}">

过渡的模式 mode

我们来看看当前的动画在两个元素之间切换的时候存在的问题:

我们会发现 Hello World 和 你好啊李银河 是 同时存在的

        因为 默认情况下 进入和离开动画 是同时发生的

        如果确实我们希望达到这个效果,那么是没问题的;

但如果我们 不希望同时执行进入和离开动画,那么我们需要设置transition的过渡模式

        In-out: 新元素先进行过渡,完成后当前元素过渡离开

        Out-in: 当前元素先进行过渡,完成后新元素过渡进入

动态组件的切换

上面说的同样适用于 动态组件

JavaScript
<transition name="xXiong" mode="out-in">
      <component :is="isShow ? Home : About"></component>
</transition>
// 如果想使用字符串 那么就要用 Options API

appear初次渲染

默认情况下,首次渲染的时候是没有动画的,如果我们希望给他添加上去动画,那么就可以增加另外一个属性appear:

JavaScript
<transition name="xXiong" mode="out-in" appear>
      <component :is="isShow ? Home : About"></component>
</transition>

五、列表元素动画组实现

认识列表的过渡

到现在,过渡动画 我们主要是 针对单个元素或组件的

        要么是 单个节点

        要么是 同一时间渲染多个节点中的一个

如果我们希望 渲染的是 一个列表, 并且 该列表中添加删除数据也希望有动画执行 怎么办?

        我们要使用<transition-group>组件 来完成

使用<transition-group> 有如下的特点:

        默认情况下,它不会渲染一个元素的包裹器,但是你可以指定一个元素并以 tag attribute 进行渲染

        过渡模式不可用,因为我们不再相互切换特有的元素

        内部元素总是需要提供唯一的 key attribute 值

        CSS 过渡的类将会应用在内部的元素中,而不是这个组/容器本身

列表过渡的基本使用

JavaScript
<template>
  <div class="app">
    <button @click="addNumber">添加数字</button>
    <button @click="removeNumber">删除数字</button>

    <transition-group tag="div" name="xXiong">
      <!-- 必须要加 key -->
      <template v-for="item in nums" :key="item">
        <span> {{ item }} </span>
      </template>
    </transition-group>
    
  </div>
</template>

<script setup>
import { reactive } from 'vue';

const nums = reactive([0,1,2,3,4,5,6,7,8,9])

const addNumber = () =>{
  nums.splice(randomIndex(),0,nums.length)
}
  
const removeNumber = () =>{
  nums.splice(randomIndex(),1)
}

const randomIndex = () =>{
  return Math.floor(Math.random() * nums.length)
}

</script>

<style scoped>
span {
  margin-right: 10px;
  display: inline-block;
}

.xXiong-enter-from,
.xXiong-leave-to {
  opacity: 0;
  transform: translateY(30px);
}

.xXiong-enter-to,
.xXiong-leave-from {
  opacity: 1;
  transform: translateY(0);
}

.xXiong-enter-active,
.xXiong-leave-active {
  transition: all 2s ease;
}
</style>

六、列表元素的移动动画

列表元素的移动动画

上面的这个案例中, 虽然新增和删除节点都有动画,但是对于那些其他需要移动的节点是没有动画的

可以通过使用一个 新增的v-move的class来完成动画

它会在元素改变位置的过程中应用

像之前的名字一样,可以通过name来自定义前缀

Vue.js 动画效果实现:过渡与动画组件的使用技巧 为了提高代码的复用性,我们可以将常用的动画效果封装成自定义指令或组件。例如,我们可以创建一个自定义指令来实现元素的淡入动画:fadeIn: {});});使用时,只需在元素上添加v-fadeIn指令即可:<template><div></div>Vue.js 的过渡与动画组件为开发者提供了强大且灵活的动画解决方案,通过合理运用这些组件和技巧,我们可以轻松实现各种复杂的动画效果,提升 Web 应用的用户体验。 阅读详情

相关推荐

Vue.js 过渡动画:实现展开和收起效果

通过使用 Vue 过渡组件和 CSS 过渡,我们可以轻松地实现展开和收起的动画效果。在上述示例中,我们创建了一个简单的 Vue 组件,通过点击按钮来控制内容的展开和收起,并使用 CSS 过渡来实现动画效果。通过调整过渡的样式和效果,可以实现更多炫酷的展开和收起动画效果。其中,Vue 的过渡系统提供了一种简单而强大的方式来实现动态的展开和收起效果。在上面的代码中,我们使用了一个按钮来控制内容的展开和收起,通过点击按钮触发。接下来,我们创建一个简单的 Vue 组件,用于展示可展开和收起的内容。

HsvvDatabase的博客 815

【Vue】组件和元素切换动画的实现

【Vue】组件和元素切换动画的实现

看花容易绣花难 2392

Cygwin安装教程

简介 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在W...

Errol's Blog 13万+

js 交换两个元素的位置,动画效果

今天做了个 两个元素互换位置 的动画 ,记录一下 首先 获得两个元素得绝对坐标定位 然后通过animation 实现移动 其他效果 按自己喜好添加 (function($){ $.extend({ animationExchange:function(srcObj,destObj,src_data,dest_data){ //交换两个元素的位置 //源绝对位置 va

叶落挽枫的博客 8093

PR控制以及使用PR控制用于单相离/并网逆变器

最近想学习一下并网逆变器,需要用到PR控制,全网找遍了许多学习资料,终于掌握的差不多了,在此做个记录,以及个人对PR(Proportional Resonant)控制的理解。在去年7月准备电赛的时候偶然看到有几篇讲解数字滤波器,第一次接触传递函数离散化,深刻被数字时代的数字方式折服,改改代码,就可以实现不同的截至频率,甚至不同阶数,而模拟方式还要改元器件。当时就感觉这玩意太他妈牛逼了,很想学懂它,奈何学不会呀。后面全身心做电赛,就忘了这事儿。直至最近学习PR控制,当初的感觉又回来了,一股劲儿吃下来了。

xht2403267701的博客 3万+

1985-2021年30m全国逐年土地覆被数据(含分省数据)

基于CLCD,揭示了1985年至2019年期间中国土地覆被变化的趋势和模式,如不透水表面(+148.71%)和水(+18.39%)的扩大,耕地(-4.85%)和草地(-3.29%)的减少,以及森林(+4.34%)的增加。由于中国的一系列造林政策,如1980年代启动的三北防护林工程和2000年后启动的绿色增益工程,从1985年到 2019年,森林增加了4.34%,灌木减少了259万公顷,与 ESACCI_LC的减少趋势相似。尽管为了养活不断增长的人口,中国东北和西北地区进行了广泛的开垦,但耕地普遍减少。

J_Giser的博客 1469

vue 渲染的list 数据交换顺序,简单就可以实现动画效果

这是由vue渲染的数据,想要实现的效果是,当右侧的数据发生变化的时候,排序发生变化时,可以有一个数据上下交换的效果 不需要写js,只需要在html和css上动手脚就好。 html 将循环遍历的list写在transition-group 里面。请注意,循环的key不要用idnex,会有些奇怪的问题出现,最好是一个唯一值 <transition-group v-if="mtGroupShow.length > 0"> <div v-f..

shadow_yi_0416的博客 2758

YOLOv13优化:PoolingFormerCGLU模块 MetaFormer 框架 + 池化混合器 手把手教你自注意力

PoolingFormer1 是一个基于 MetaFormer 框架 的轻量化卷积-Transformer 混合模块,通过 Pooling 取代自注意力,实现: 更低的计算成本 一定的全局信息融合 兼容 CNN 和 Transformer 的优点

FJN110的博客 425

vue 之 Transition && 各种动画实现,一文让你会动画

enter : 动画正在进入时触发 ---- active,写js,执行具体的动画。after-enter : 动画进入之后触发 ---- to,结束,收尾工作。在上面的文章中,过渡动画只是针对单个元素或者单个组件的,如果希望渲染的是一个列表,并且该列表中添加、删除数据也希望有动画执行。:css="false". 会让Vue跳过css检测,提高性能,同时防止过渡过程中受css样式的影响。

盏茶作酒的博客 1920

YOLOv9改进,YOLOv9添加CBAM注意力机制

CBAM是一个简单而有效的注意力模块,用于前馈卷积神经网络。给定一个中间特征图,我们的模块按顺序推断两个独立维度(通道和空间)的注意力图,然后将注意力图乘以输入特征图以进行自适应特征细化。由于 CBAM 是一个轻量级的通用模块,因此它可以无缝集成到任何 CNN 架构中,开销可以忽略不计,并且可以与基础 CNN 一起进行端到端训练。论文链接:(CBAM论文)

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 856

RT-DETR改进策略【RT-DETR和Mamba】| 替换骨干 Mamba-RT-DETR-T !!! 最新的发文热点

模块是模型中的一个重要组成部分,其主要作用是在模型的初始阶段对输入图像进行处理,方便后续的特征提取和目标检测。以下是对。

Limiiiing的博客 1322

Vue.js 中的动画与过渡效果实现

在 Vue.js 中利用过渡效果和动画,不仅能够提升网页的用户体验,还有助于让你的应用更具吸引力。上述示例展示了如何使用 Vue 的组件以及 JavaScript 钩子来实现简单和复杂的动画效果。通过这些强大的工具,创建流畅的用户交互体验变得轻而易举。无论是应用于简单的用户提示,还是复杂的动态效果,掌握好 Vue.js 的动画与过渡特性都将为你的前端开发涯增添一笔重要的技能。希望本文能让你对 Vue.js 中的动画与过渡效果有更深刻的理解,并在你的项目中加以应用!

有我更精彩的博客 1599

uni-app - 将 base64 图片编码转为 Blob 本地文件路径(把base64类型的图片,转换成blob二进制文件流)适用于 uni-app / vue.js / JavaScript

uni-app/vue.js/JavaScript将base64转Blob,uniappapp端如何将图片的base64编码转换成File对象或Blob,uni-app/vue.js/JavaScript中拿到base64转blob对象,uniapp图片base64格式转blob格式方法,uniapp上传图片压缩转base64码与base64转图片路径,Base64/Blob/File图片文件转换,url、base64、blob相互转换方法,读取本地文件为Base64并转成B

🏆 前端领域优质创作者 1万+

vue中js钩子函数实现动画过渡

今天看了vue中js钩子函数实现动画,照着敲了一遍发现只有enter的淡入能实现,淡出没有动画效果,即使在leave()中移入done用settimeout延迟也仅仅是延迟的触发时间,并没有出现动画效果。后来经过搜索发现是enter()中缺少了一行代码 el.offsetWidth ,关于这行代码的作用参考文档里的大佬有解释,本人还不是很明白就不乱解释了,原文章链接: vue动画过渡 javascript钩子函数详解_V v vae的博客-优快云博客_过渡动画钩子函数 最终实现的代码如下: <t

qq_44361943的博客 854

k8s 不同node之间pod ip不通

底层k8s使用calico网络,ipip网络模式,kubevirt启动了2台虚拟机;在这两台虚拟机上再搭建k8s,calico网络,ipip网络模式。说明:我是使用helm安装的calico,改这个模式要改crd资源ippools。其他方式安装的calico修改方法可能不一样。在虚拟机上的k8s上启动了2个pod,分布在不同的node上,这两个pod不能ping通对方的pod ip。修改虚拟机之上的k8s集群的calico网络的ipipMode为Never即可,之前使用的是Always。

weixin_40548182的博客 4056

IGBT损耗新的计算方法

一种新的IGBT损耗计算方法,准确性高,可参考性强。

Vue-notification动画完全解析:从CSS过渡到Velocity.js的高级动画实现

Vue-notification是一款专为Vue.js 2打造的通知组件库,它不仅提供了简洁的通知展示功能,更通过灵活的动画系统为用户带来流畅的视觉体验。本文将深入解析该库的动画实现机制,从基础的CSS过渡到高级的Velocity.js动画,帮助开发者全面掌握通知组件的动态效果配置。 ## 通知组件的动画架构设计 Vue-notification的动画系统采用了组件化设计,将不同动画实现方式封

gitblog_00642的博客 764

Android应用开发案例教程(AndroidStudio版)_PPT课件.rar

Android应用开发案例教程(AndroidStudio版)_PPT课件.rar

Vue JS实现过渡动画

&lt;template&gt; &lt;div id="app"&gt; &lt;!-- &lt;button v-on:click="show = !show"&gt;toggle&lt;/button&gt; --&gt; &lt;button v-on:click="show=!show"&gt;toggle&lt

从盲流子到程序员 513

全国9200个水文站点矢量SHP数据

全国9200个水文站点矢量SHP数据,包含地址、名称、经纬度、测站编码、类型等属性

PanTransfer百度转迅雷_2.zip

百度网盘转迅雷网盘是一款功能强大的文件转换软件。它提供了一种简便的方式,将百度网盘中的文件转移到迅雷网盘中,方便用户进行文件的管理和共享。百度网盘和迅雷网盘是两个常用的云存储平台,它们都提供了大容量的在线存储空间,让用户能够随时随地存储和访问自己的文件。然而,由于各自的授权限制和功能差异,有时用户可能需要将文件从一个平台转移到另一个平台。这就是百度网盘转迅雷网盘软件的用武之地。百度网盘转迅雷网盘软件的操作简单方便。用户只需下载和安装软件,并输入自己的百度网盘和迅雷网盘的账号信息。然后,用户可以选择要转移的文件,并设置转移的目标路径。软件会自动将选定的文件从百度网盘中下载到本地,然后再上传到迅雷网盘中。整个过程快速高效,节省了用户的时间和精力。百度网盘转迅雷网盘软件还具有一些实用的功能。例如,它支持批量转移,用户可以一次选择多个文件进行转移,提高了工作效率。此外,软件还可以在转移过程中保留文件的原始目录结构,确保文件在迅雷网盘中的存储方式与百度网盘中保持一致。这对于用户来说非常方便,可以轻松找到所需的文件。同时,百度网盘转迅雷网盘软件还具有安全稳定的特点。在转移过程中,软

使用vue实现css过渡和动画

一、过渡和动画得区别 过渡:通常用来表示元素上属性状态的变化。 动画:通常用来表示元素运动的情况。 二、使用Vue实现基础得css过渡与动画 1. 动画 /* css */ @keyframes leftToRight { 0% { transform: translateX(-100px); } 50% { transform: translateX(-50px); } 100% { transfor

qq_34771938的博客 4455

[Vue] 24.Vue.js过渡与动画:实现基础的CSS过渡与动画效果

Vue实现过渡与动画

u014627255的博客 172

Vue.js 动画与过渡效果实战

title: Vue.js 动画与过渡效果实战 date: 2024/6/4 updated: 2024/6/4 description: 这篇文章介绍了如何在网页设计中使用过渡动画和组件效果,以及如何利用模式和列表展示信息。还提到了使用钩子实现组件间通信的方法。 categories: 前端开发 tags: 过渡 动画 组件 效果 模式 列表 钩子 第一部分:基础知识 第1章:Vue.js 过渡系统简介 Vue.js 提供了过渡效果的支持,使得在不同状态之间切换时能够以更加生动和用户友好的方

https://blog.cmdragon.cn/ 1130

Vue.js从入门到就业[第17讲]:Vue.js 动画和过渡效果,一文带你学习!

在现代 Web 开发中,动画和过渡效果不仅能显著提升用户体验,还能增强页面的互动性和动态感。对于用户而言,动画能够将静态页面转变为充满活力的交互界面,而对于开发者而言,合理使用动画和过渡效果能让应用变得更加吸引人并提高用户的使用粘性。Vue.js 作为一款非常流行的前端框架,提供了强大的动画和过渡功能。通过内置的指令、钩子函数、以及对第三方动画库的集成,开发者可以非常轻松地在 Vue 应用中实现流畅的动画效果,极大地提升用户体验。本期专栏将重点讨论 Vue.js 中的动画和过渡效果。

**My Coding Family** 1130

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》040-Vue过渡动画

在现代 web 开发中,用户体验的好坏往往直接影响到用户的满意度和网站的使用率。动画效果作为提升用户体验的重要手段,可以让界面更加生动和互动。Vue.js 作为一个渐进式框架,不仅提供了强大的数据绑定功能,还使得实现过渡动画变得简单而直观。本篇文章将深入探讨 Vue.js 中的过渡动画。我们将介绍 Vue 自带的 组件,如何利用它来为元素的进入、离开和状态变化添加流畅的过渡效果。通过具体的实例,我们将展示如何使用 CSS 过渡、动画以及 JavaScript 钩子函数,来创建多种样式的动画效果。 🦋2

愚公智库 12万+

18.Vue.js :过渡和动画 javaScript钩子

当只用javaScript 过渡的时候,在 enter 和 leave 中,回调函数 done 是必须的, 否则,它们会被同步调用,过渡会立即完成; <!DOCTYPE html> <html lang="en"> <head> <title>Vue动画</title> <meta charset="UTF-...

人间清醒 309

vue如何使用原生js写动画效果_vue元素实现动画过渡效果实例详解

这篇文章主要介绍了vue元素实现动画过渡效果,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧1 在 vue 中,使用 标签包含着的单个子元素在使用 v-show 或v-if切换显示隐藏前,会先判断是否有对应的class样式能匹配到该子元素上:red {background-color: red; width: 100px; height: 100px;}redv-lea...

weixin_36323390的博客 502
上一篇: Vue | Vue.js 高级语法系列
下一篇: 前端经典面试题 | Computed 和 Watch 的区别
评论 34
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderHing[专注前端]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值