vue 弹窗出现带动画效果(从按钮位置滑出并从小变大的弹窗)

Vue开发跑马灯组件:CSS动画无缝滚动实现与性能优化 在前端开发中,信息滚动展示是一种常见交互需求,无论是公告栏、通知栏还是中奖名单轮播,跑马灯组件都能在有限空间内持续呈现关键信息。其核心原理是通过复制内容并利用CSS transform动画实现视觉上的无缝循环,相比传统JS驱动方式,CSS动画由浏览器合成线程处理,具备更优的性能与流畅度,同时代码更简洁易维护。在实际工程中,跑马灯组件还需要考虑内容溢出判断、速度参数换算、动态尺寸监听、无障碍降级以及移动端图层优化等问题。基于Vue 3组合式API封装一个开箱即用的跑马灯组件,既满足业务定制化需求,又能规避原生 阅读详情

大概效果:
在这里插入图片描述
用vue3写的,不过逻辑都一样 主要是js+css;
实现方法逻辑:①先写弹窗的div,用fixed布局,确定弹窗的位置;②绑定鼠标点击事件,主要是获得按钮和弹窗在屏幕的位置 计算定位用;③给弹窗写上css动画; ④绑定按钮的点击事件,让弹窗出现

代码就分成html、css、js 三部分写,方便复制直接使用

一、html部分

 <div class="addBtn" @click="show=!show">打开一个弹窗(带动画)</div>
 <div class="test element" v-if="show"></div>

二、js部分

绑定鼠标点击事件是配合css使用,目的是拿到按钮和弹窗在屏幕的位置,拿到之后js部分其实可以删除,并没有什么用
鼠标点击一下按钮的拿到按钮的位置,比如x y是300 100;再点一下弹窗中心位置,比如是 1000 600,然后使用弹窗的X轴减按钮的X轴:1000-300=700,再使用弹窗的Y轴减按钮的Y轴:600-100=500 ;自己记住这两个坐标的距离差 是 700 500

//控制弹窗显示隐藏
let show = ref(false)
//获取鼠标点击的位置
function savePoint(event) {
  let xPoint = event.pageX
  let PPoint = event.pageY
  console.log(event.pageX, event.pageY)
}
onMounted(() => {
  window.addEventListener('click', savePoint)
})

三、css(重点)

为什么是负数:因为transform-origin属性,默认以此元素为中心,所以你点击弹窗的x轴y轴就可以作为0,0,按钮在弹窗的左边或下边就是负、在右边或上边就为正;
ps:计算的不那么精准的话;自己调试调试++ - -

<style scoped lang="scss">
@keyframes scaleAnimation {
  0% {

    transform: scale(0);
    transform-origin: -700px -500px;//这里就是js计算出来的坐标差
  }
  100% {
    transform: scale(1);
    transform-origin: 0 0px;
  }
}
.element {
  animation: scaleAnimation 1s ease-out forwards;//绑定动画
}
//基础样式以及位置
.test {
  width: 300px;
  height: 200px;
  position: fixed;
  top: 474px;
  left: 860px;
  background: pink;
}
<style>

不知道说明白没有:js部分配一张图,就是计算红线的距离(两条红线是x和y哈,顺手写成了两个x)
在这里插入图片描述

探索Vue3 Teleport:如何优雅实现跨DOM层级组件渲染 本文深入探讨Vue3 Teleport组件的核心功能与应用场景,展示如何优雅实现跨DOM层级的组件渲染。通过实际案例解析Teleport在全局弹窗、侧边栏优化等场景中的优势,包括动态控制传送行为、多目标传送等高级用法,帮助开发者提升Vue3应用的结构清晰度和渲染性能。 阅读详情

相关推荐

Animate.css 本质解析:CSS动画标准化接口与工程化实践

CSS动画是Web前端实现交互动效的基础技术,其核心原理基于W3C规范的@keyframes定义与animation属性控制。相较于JavaScript动画库(如GSAP),CSS动画具有原生性能优势和低主线程占用特性,但存在触发机制受限、时长/缓动难动态调整等工程痛点。Animate.css正是为解决这些共性问题而生——它并非运行时动画引擎,而是提供标准化class命名空间与预编译keyframes的CSS动画交付接口,通过animate__前缀规避冲突、默认cubic-bezier缓动统一体验、自动处理

weixin_30781775的博客 444

vue 缩放与移动(放大缩小“简单”动画)

需要进行缩放与移动的div <div ref="chmap" style="transform:scale(1)" @touchstart="touchstart($event)" @touchmove="touchmove($event)" @touchend="touchend($event)"> 、、内容 </div> 手势操作开始,手指触摸到屏幕 // 手势操作开始 touchstart(e) { this.pageX = e

朝雨的博客 5140

基因家族Motif 分析

MEME

hgz2020的博客 6323

vue开发 - transition之弹窗动画popup

页面上需要弹出一个列表供用户选择,通过简单的v-show控制,感觉体验上总要差那么一点,于是加上了vue的transition,最终实现的效果就是,点击选择银行时,银行列表从下面一点点滑动上来,选择完成后,慢慢滑动 下去,贴上代码: 先看下效果: <template> <div class="xn-container"> <button class="type1" @click="showCssPopup(true)">css transiti

知之为知之,不知为不知 4066

fNIRS 公开数据集整理

关注“心仪脑”查看更多脑科学知识的分享。 关键词:数据整理、fNIRS 之前我们向大家推送了 Public Neuroscience Dataset 系列主题的第一期:《EEG公开数据集》,我们同时意识到大家对于神经科学公开数据集的需求。本期是该系列主题的第二期,我们在延续第一期初衷的基础上,整理了功能性近红外光谱(fNIRS)技术的公开数据集。 fNIRS 是一种非侵入性、便携且价格低廉的光学神经成像技术,它具有可观的空间和时间分辨率。因fNIRS技术问世较EEG晚了许多,所以应用此技术开展研究发.

psybrain的博客 4272

最新Python爬虫实战(入门爬虫篇)——案例8:图书网畅销榜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对图书网畅销榜多页数据的批量爬取与 Excel 保存。代码采用模块化设计,包含分页参数构造、API 接口请求、JSON 数据解析、Excel 数据持久化等完整流程;通过配置模拟浏览器的请求头,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循 “分页遍历 → 接口请求 → JSON 解析 → 提取图书信息 → 保存到 Excel” 的标准流程,与电商类接口爬取范式高度一致。

努力让自己发光,对的人才能迎着光而来 29万+

vue实现点击弹出层动画效果

vue最简单的实现上、下、左、右带动画/遮罩效果的弹出层,vue实现点击弹出层动画效果

m0_59224033的博客 5089

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

【QNX+Android虚拟化方案】125 - 如何创建android-spare镜像

|~~~热爱生活、努力学习的小伙汁~~~| 1093

vue中动画效果的实现

一,过渡动画的实现 1,无过渡,直接变化 <template> <div class="testBox"> <div class="testCon" :style="{ width: width + 'px' }"></div> <div class="testBtn" @click="clickBtn">点击按钮</div> </div> </template> <script

weixin_42349568的博客 1万+

YOLOv8 置信度阈值 (conf) 和 IoU 阈值 (iou) 详解:如何平衡漏检与误检?

摘要 本文深入探讨了YOLOv8目标检测模型中两个关键参数——置信度阈值(conf)和IoU阈值(iou)的核心作用。文章从目标检测的基础概念出发,解释了置信度分数反映模型预测可靠性,IoU衡量预测框重叠程度。重点剖析了非极大值抑制(NMS)机制如何通过这两个阈值进行预测框筛选:置信度阈值作为初筛门槛,IoU阈值决定重叠框的取舍。通过生动比喻和可视化图表,阐述了合理调节这两个参数能有效平衡误检与漏检问题,是优化YOLOv8模型实际表现的重要技巧。全文以实践为导向,帮助开发者掌握成为"调参大师&qu

深耕 Vue 生态与 JS/TS 技术,聚焦组件封装、响应式原理、TS 类型设计,解析工程化配置与性能优化方案。同时分享 YOLOv8 目标检测实战、AI 大模型面试核心考点,以代码实例拆解技术实现与业务解法。 1254

Windows 下 Codex 安装全记录:从零到一的保姆级图文教程

本文主要介绍了Windows 下 Codex 安装全记录:从零到一的保姆级图文教程,希望能对学习使用 Codex 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 方案一 2.2 方案二 3. 报错解决方案

weixin_43178406的博客 14万+

vue中实现动画汉堡按钮

【代码】vue中实现动画汉堡按钮。

595

【项目实战】DevOps制品管理之JFrog Artifactory介绍

JFrog Artifactory是一款领先的二进制软件制品仓库管理工具,由JFrog公司开发。

奶爸的编程之路,也就一周冷个三天 1356

vue展示实现模态框展开和关闭动画的代码示例,分析动画层级和遮罩效果处理。

graph LRA[点击打开按钮] --> B{isShow=true}B --> C[遮罩层开始淡入动画(opacity:0→0.5)]C --> D[延迟0.1秒,内容层开始滑入动画(translateY:-20px→0)]D --> E[动画结束,用户操作]E --> F[点击关闭或遮罩]G --> H[内容层先滑出动画(translateY:0→-20px)]H --> I[内容动画结束后,遮罩层开始淡出(opacity:0.5→0)]I --> J[重置状态,等待下一次打开]

前端大白话 1391

【Inpho精品教程】Inpho简介、安装教程(附Inpho8安装包下载)

本文介绍Trimble旗下Inpho UASMaster航空摄影测量软件,涵盖其核心功能模块(如Match-AT、OrthoMaster、Summit Evolution等)及安装教程。文章详细说明了从安装到汉化破解的全过程,并提供Inpho 8.0.1安装包下载链接与提取码,适用于无人机摄影测量专业用户。

智慧空间实验室 1万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

vue 点开弹窗最大化_vue 全屏弹窗(从底部上滑出现)

.fullscreen-dialog-wrapper{position: fixed;top: 0;right: 0;bottom: 0;left: 0;overflow: auto;margin: 0;z-index: 1001;opacity: 1;}.fullscreen-dialog{position:relative;margin:0 auto 50px;background:#fff;...

weixin_39583521的博客 1484

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

9、Vue3动画实战:从基础过渡到列表/页面切换动画全解析

Vue3动画实战解析:从CSS基础到列表/页面切换动画 本文系统讲解了Vue3动画实现方案,从前端CSS动画基础出发,深入解析Vue3过渡、列表和页面切换动画的实现方法。 内容要点: CSS动画基础:通过transition实现属性平滑过渡,使用@keyframes创建复杂动画 Vue3 transition组件:详解类名规则和实现原理,展示单个元素显隐动画控制 实战案例:为清单应用添加弹窗滑入滑出动画,优化用户体验 列表动画:使用transition-group实现v-for列表的进入/离开动画和位移过渡

走自己的路让别人无路可走 1576

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

vue.js之过渡动画

vue提供了一个封装动画的组件 <transition name="tr"></transition>,将需要执行动画的元素包裹在该组件中,在通过css修改样式即可满足需求命名该动画的样式使用 .v-enter等过渡类名来定义动画 如<transition name="tr"></transition> 的类名为 .tr-entervue一...

dianqi0560的博客 138

vum框架与Vue Router集成:实现移动端页面路由与过渡动画的完整指南

在移动Web应用开发中,**vum框架**与**Vue Router**的完美结合为开发者提供了一套完整的移动端页面路由与过渡动画解决方案。作为一款专为移动端设计的Vue.js UI框架,vum通过智能的路由管理和流畅的页面过渡效果,让移动应用的用户体验达到了原生应用的水平。本文将详细介绍如何在vum框架中配置和使用Vue Router,以及如何实现令人惊艳的页面过渡动画效果。 ## 📱 vu

gitblog_02728的博客 469

告别生硬交互!Vue2-elm动画实现指南:从过渡到高级动效

你是否曾为网页中僵硬的元素切换感到困扰?用户点击按钮后毫无反馈,页面跳转像"闪现"一样突兀?vue2-elm项目通过精心设计的动画系统,将这些问题完美解决。本文将带你深入剖析这个基于Vue2.x和Element UI的实战项目,揭秘如何用Vue过渡(Transition)和CSS动画(Animation)打造流畅自然的用户体验。 读完本文你将掌握: - Vue过渡组件在路由切换中的实际应用 - ...

gitblog_01002的博客 484

Vant弹窗组件全解析:Dialog、Popup与ActionSheet

你是否还在为移动端弹窗开发中的以下问题困扰? - 不同场景下如何选择合适的弹窗类型? - 如何兼顾用户体验与开发效率? - 复杂交互场景下的弹窗状态管理难题? 本文将系统解析Vant UI库中的三大弹窗组件——**Dialog(对话框)**、**Popup(弹出层)** 和 **ActionSheet(动作面板)**,通过12个实战案例和6组性能对比,帮你掌握移动端弹窗开发的最佳...

gitblog_00852的博客 945

HarmonyOS 6效果实现:animateTo 和 .animation 属性的曲线库新增了更多贝塞尔曲线预设,弹性动画和阻尼动画的支持更加完善

应用首先定义了课程项的数据模型。CourseIteminterface 包含 12 个属性字段,覆盖了一门课程的全部展示维度。其中id为数值类型主键,用于ForEach的键值生成。free为布尔类型,标记该课程是否可以免费学习或积分兑换。其余字段均为字符串类型,包括课程标题、封面 emoji 图标、讲师信息、章节数、学时、学员数、评分、价格和标签。这种纯数据 interface 的设计是 ArkTS 的典型实践。

2501_92985290的博客 153

VUX 纯 CSS 关闭图标(vux-close)使用指南:实现原理与弹窗关闭实践

`vux-close` 是 VUX 提供的一个**纯 CSS 实现的关闭图标**(X 形十字),不依赖任何图片资源或图标字体,广泛用于弹窗(Dialog)关闭按钮与弹窗(Popup)头部关闭按钮。本文基于 [docs/en/css/close.md](https://link.gitcode.com/i/01a1c508fa1ef19992f0a6f278dc4062) 与仓库源码,带你掌握它的全

gitblog_07326的博客 550

用AI快速验证el-dialog交互方案的5种方法

尤其是像el-dialog这样的常用组件,不同的展现形式会给用户带来完全不同的体验。这种样式的优势是能充分利用屏幕空间,缺点是可能会给用户带来压迫感。这种样式适合需要用户快速做出选择的场景,比如确认弹窗。自定义形状弹窗通过CSS的border-radius和transform属性实现非矩形效果。居中提示框是最常见的默认样式,通过设置center属性实现。这种样式的优点是符合用户习惯,缺点是可能会显得比较普通。通过这种快速原型验证的方法,我们团队在最近的项目中节省了大量沟通成本。来快速生成和测试代码。

ThunderstormLynx23的博客 808
上一篇: vue3+js 实现轮播滚动
下一篇: axios传参问题(新)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值