一篇文章彻底搞懂layui框架中的弹窗(layer)

Layui——一个非常好用的轻量级的免费Web UI组件库 Layui——一个非常好用的轻量级的免费WebUI组件库 阅读详情
AI摘要

本文详细介绍了layui前端框架中的弹窗组件layer的使用方法及配置选项,包括如何引入css和js文件,通过不同type类型的弹窗展示文本、HTML内容及iframe子页面,以及如何设置弹窗大小、回调函数和按钮等。

首先,还是那句话什么是弹窗,其实也就是个小弹出层 alert?

在这个年代,各位前端小哥哥小姐姐们,是不是用惯了element-ui、antD中的弹出层。
其实现在的话,接着就是谈谈layui这个2016年推出来的前端框架。

说到这里还是要谈谈的,因为其实在如今,layui中的很多组件,其实都已经不是那么的流行了,不过像layui中的很多组件写的还是非常非常牛掰的。
接下来的话其实就说说layui中的layer(其实也就是弹出层组件)
必不可少的还是要在页面中引入css样式以及js文件,这样的话我们才可以去使用layui
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200909080606506.png#pic_center

首先可以先做一个小案例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>layer</title>
    <link rel="stylesheet" href="./layui/css/layui.css" />
    <script src="./layui/layui.js"></script>
  </head>
  <body>
    <div id="layerBtn" class="layui-btn">弹出layui按钮</div>
  </body>
</html>
<script>
  // 挂载layui,添加jquery和form 一会我们会用到
  layui.use(['layer', 'jquery', 'form'], function () {
    // 这个时候将挂载到layui中的layer放置到一个变量上面,有助于我们调用
    var layer = layui.layer
    var $ = layui.jquery
    var form = layui.form
    // 首先第一种调用方法就是(采用的是jquery的点击事件)
    $('#layerBtn').on('click', function (e) {
      // 调用的layer弹窗
      layer.msg('我调用了,我是layer弹窗')
    })
  })
</script>

在这里插入图片描述

其实layer中的msg也就是一个小提示吧算是。
当然我们真正运用到弹窗的话肯定要用到一些其他的功能,layui也在观望中给出了我们详细的配置。
像type、time、icon…
其实我们在这里的话主要就是来说一下弹窗的另一种打开方法

layer.open()这种方式来打开弹窗,open方法中参数为一堆options配置对象
我们可以大体的看一下open的配置项
type:弹出框类型(主要介绍三种)
type:0(简单的像弹出层内容放置的是文本)

      layer.open({
        type: 0,//type类型
        title:'文本'//弹窗标题
        content: '文本问二苯二而被本吧',//弹窗内容
      })

在这里插入图片描述
我们如果设置type类型是0的话,content内容展示的其实也就是字符串文本
当然我们如果想要在弹窗中去使用表单形式的验证的话,那么就得让type =1/2

如果type:1的话,其实就相当于展示的是一个html文本
你可以将其理解为vue的v-html
react的dangerouslySetInnerHTML
其实也就是将content的内容以html的样式呈现,也就是说我们可以在这个content中编写html样式代码了。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>layer</title>
    <link rel="stylesheet" href="./layui/css/layui.css" />
    <script src="./layui/layui.js"></script>
  </head>
  <body>
    <div id="layerBtn" class="layui-btn">弹出layui按钮</div>
  </body>
  <div style="display: none" id="biaodan">
    <form class="layui-form" lay-filter="form">
      <div>usrname:<input lay-verify="required" style="width: 30%" type="text" class="layui-input" /></div>
      <div>password:<input style="width: 30%" lay-verify="required" type="text" class="layui-input" /></div>
      <button id="submit" class="layui-btn" lay-submit lay-filter="submit">提交</button>
    </form>
  </div>
</html>
<script type="text/html" id="biaodan"></script>
<script>
  // 挂载layui,添加jquery和form 一会我们会用到
  layui.use(['layer', 'jquery', 'form'], function () {
    // 这个时候将挂载到layui中的layer放置到一个变量上面,有助于我们调用
    var layer = layui.layer
    var $ = layui.jquery
    var form = layui.form
    form.render(null, 'form')
    // 首先第一种调用方法就是(采用的是jquery的点击事件)
    $('#layerBtn').on('click', function (e) {
      // 调用的layer弹窗
      layer.open({
        type: 1,
        title: '表单验证',
        area: ['80%', '80%'],//弹框大小  屏幕宽度的80%,高度的80%;
        content: $('#biaodan'), //可以使用$('#id,.class')这种方式来指定模板,可以将其理解为指定一个组件,当然也是可以自己去写的,像'<div>我是一个内容</div>'
        // 打开弹窗的回调函数,用于回显页面数据
        success: function () {
          console.log('我打开了弹窗')
        },
      })
    })
    // 表单提交事件
    form.on('submit(submit)', function (data) {
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
      return false //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    })
  })
</script>

来看一下效果
在这里插入图片描述
这个时候我们如果点击下方的提交其实也就会触发表单的提交事件
我们来看

    // on的第一个参数括号中绑定的submit其实也就是 lay-filter的值
    form.on('submit(submit)', function (data) {
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}
      return false //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    })

这是对应绑定的submit提交事件
在这里插入图片描述
当我们点击提交之后触发的效果我们来看
在这里插入图片描述
触发了表单校验规则,其实首先就是我们需要在表单中添加一个 lay-verify=“required”
这个lay-verify的值我们可以自定义,官方其实也给我们配置好了几个值,我在这边使用的其实就是required,不允许为空。
具体的可以参考官网
当然我们因为是弹窗我们肯定要用弹窗中的确认按钮,而我们现在触发表单事件所选取的按钮是form表单中的按钮,这对强迫症的我是及其难受的,在这里的话有一种解决方式。
首先我们要在open中添加一个btn:[‘确认’,‘取消’]

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>layer</title>
    <link rel="stylesheet" href="./layui/css/layui.css" />
    <script src="./layui/layui.js"></script>
  </head>
  <body>
    <div id="layerBtn" class="layui-btn">弹出layui按钮</div>
  </body>
  <div style="display: none" id="biaodan">
    <form class="layui-form" lay-filter="form">
      <div>usrname:<input name="username" id="username" lay-verify="required" style="width: 30%" type="text" class="layui-input" /></div>
      <div>password:<input name="password" id="password" style="width: 30%" lay-verify="required" type="text" class="layui-input" /></div>
      <!-- dispaly设置为none,否则页面加载就会渲染 -->
      <button style="display: none" id="submit" class="layui-btn" lay-submit lay-filter="submit">提交</button>
    </form>
  </div>
</html>
<script type="text/html" id="biaodan"></script>
<script>
  // 挂载layui,添加jquery和form 一会我们会用到
  layui.use(['layer', 'jquery', 'form'], function () {
    // 这个时候将挂载到layui中的layer放置到一个变量上面,有助于我们调用
    var layer = layui.layer
    var $ = layui.jquery
    var form = layui.form
    var isSubOk = false
    var mengIndex = 0
    form.render(null, 'form')
    // 首先第一种调用方法就是(采用的是jquery的点击事件)
    $('#layerBtn').on('click', function (e) {
      // 调用的layer弹窗
      layer.open({
        type: 1,
        title: '表单验证',
        area: ['80%', '80%'],
        content: $('#biaodan'), //可以使用$('#id,.class')这种方式来指定模板,可以将其理解为指定一个组件,当然也是可以自己去写的,像'<div>我是一个内容</div>'
        btn: ['确认', '取消'],
        yes: function (index, layero) {
          // 获取当前蒙版层的索引
          mengIndex = index
          $('#submit').click()
        },
        btn2: function (index, layero) {
          layer.close(index)
        },
        // 打开弹窗的回调函数,用于回显页面数据
        success: function () {
          // 清除上一次的数据
          isSubOk = false
          $('#username').val('')
          $('#password').val('')
          console.log('我打开了弹窗')
        },
      })
    })
    // 表单提交事件
    form.on('submit(submit)', function (data) {
      isSubOk = true
      console.log(data.elem) //被执行事件的元素DOM对象,一般为button对象
      console.log(data.form) //被执行提交的form对象,一般在存在form标签时才会返回
      console.log(data.field) //当前容器的全部表单字段,名值对形式:{name: value}

      // 我们可以再次发起请求
      // $.ajax   我在这里使用settimeout进行伪造一个异步请求
      setTimeout(() => {
        // 我们根据全局定义的meng版索引来关闭这个蒙版,假装就是当请求成功时就关闭这个蒙版
        layer.close(mengIndex)
      }, 2000)

      return false //阻止表单跳转。如果需要表单跳转,去掉这段即可。
    })
  })
</script>

代码实现效果可以尝试着测试一下,也就是当我们点击确定之后先进行表单校验,当校验通过后,去触发form表单中的submit提交事件click方法,实现点击弹出层的确定从而触发表单的校验。

至于type:2,其实就是一个ifram子页面,这个的话其实也差不多content直接指定地址就可以了。大体的话其实弹窗就是这些,其他一些参数我们用到看官网查其实就可以了。

layui的layer.confirm获取按钮焦点 因为ayer.confirm的按钮并非采用button,而是a标签,所以获取按钮焦点获取不到,要采用别的方法,下面介绍在ie11中和ie8中不同的写法 在ie11中 layer.confirm('确定取消这个弹窗吗?',{ btn: ['确定', '取消'], success:function(layero){ //获取焦点 var btn = l... 阅读详情

相关推荐

实现LayUi框架的模块化功能

LayUi是一款基于JavaScript的前端UI框架,提供了丰富的组件和样式,可以帮助开发者快速构建漂亮的Web界面。其中,模块化是LayUi框架的一个重要特性,它允许开发者将功能模块化地组织起来,提高代码的可维护性和复用性。在本文中,我们将详细介绍如何使用LayUi框架实现模块化功能,并提供相应的源代码示例。通过定义和导入不同的模块,我们可以将功能按照模块划分,提高代码的可读性和可维护性。接下来,我们可以使用LayUi的模块化功能来组织我们的代码。参数,我们可以将模块导出,以便其他模块可以使用它。

XymkMl的博客 325

layui框架学习(24:弹出层模块_消息框&提示框)

学习并记录了弹出层模块layer中最简单的提示框和信息框的用法及常用属性设置

gc_2299的博客 1万+

基于LayUI的后台管理界面实现包(含登录页、主框架及数据模拟)

这个资源包提供一套开箱即用的LayUI风格后台管理系统前端实现,包含完整的页面结构和基础交互逻辑。首页index.html作为入口,main.html承载主体布局,左侧导航由leftNav.js和nav.js驱动,选项卡式内容区通过bodyTab.js管理。样式方面分离了main.css、user.css、message.css等模块化CSS文件,并内置font_eolqem241z66flxr.css图标字体。JS层封装了layui.js核心库及index.js、main.js等业务脚本,支持菜单展开收缩、Tab页增删、iframe内容加载等常见后台操作。数据层面采用静态JSON模拟,包括newsList.、usersList.、message.、images.和systemParameter.,便于快速对接或调试。图片资源涵盖用户头像(userface1.jpg至userface5.jpg)、支付二维码(alipay.jpg、wechat.jpg)及系统图标(face.jpg),配合favicon.ico完善视觉识别。所有HTML页面均适配LayUI默认主题,可直接运行查看登录流程、主界面布局与模块切换效果,适合用于课程设计、原型演示或二次开发起点。

Layui的layer.confirm弹框用法,很详细

就将标题改为“操作提示”,效果是这样的layer.confirm('纳尼?', {title: "操作提示",btn: ['按钮一', '按钮二', '按钮三'] //可以无限个按钮//按钮【按钮三】的回调//按钮【按钮一】的回调//按钮【按钮二】的回调});可以通过“btnAlign”参数定义弹框按钮的位置,“btnAlign”参数值有:l(左对齐)、c(居中对齐)、r (右对齐),默认是r(右对齐),为了演示明显,这里只用一个按钮演示。

kt1776133839的博客 2万+

PP-OCRv6 ONNX部署的官方和手搓方案

PP-OCRv6 基于全新设计的 PPLCNetV4 统一骨干网络,提供 tiny、small、medium 三档模型,分别面向端侧/IoT、移动端/桌面端、服务端场景。在内部多场景综合评估集上,PP-OCRv6_medium 相比 PP-OCRv5_server 识别精度提升 5.1%、检测精度提升 4.6%,同时 GPU 推理速度提升 2.37×;以仅 34.5M 参数的规模,精度超越 Qwen3-VL-235B、GPT-5.5 等大型视觉语言模型。

懒人的技术笔记 1892

S/4中的16种特殊库存类型

S/4中的16种特殊库存类型

yanzibing99的博客 1万+

layer弹窗和layui表单取消

<div id="add-main" style="display: none;"> <form class="layui-form" id="add-form" action=""> <div class="layui-form-item center" > ...

laxexue的博客 3037

【论文阅读|小目标分割算法ASF-YOLO】

论文题目:ASF-YOLO: A novel YOLO model with attentional scale sequence fusion for cell instance segmentation 论文链接: https://arxiv.org/abs/2312.06458 代码链接:https://github.com/mkang315/ASF-YOLO 摘要(Abstract) 作者提出了一种新颖的基于 "You Only Look Once"(YOLO)的注意力尺度序列融合框架(ASF-YO

dally2的博客 8118

vue-layer修复版,一款好用的vue弹窗组件,layui-layer弹窗风格

一款好用的vue弹窗组件,layui-layer弹窗风格 vl-layer github地址 更新信息 2021.01.20 更新: 新增offset的几个固定位置:右上"rightTop"、右下"rightBottom"、左上"leftTop"、左下"leftBottom" 2021.01.22 更新: 新增offset:{left:10,bottom:10}、offset:{right:10,bottom:10}、offset:{right:10,top:10} 快速使用 npm install

pdfh5.js的博客 2229

遥感图像融合实战:5分钟搞懂全色与多光谱图像如何提升分辨率(附Python代码)

本文通过实战案例,详细解析了如何利用全色锐化技术融合全色与多光谱遥感图像,以提升图像分辨率。文章深入浅出地介绍了核心概念、环境配置、经典GS融合算法的Python代码实现,并对比了不同算法的优劣,最后提供了效果评估方法与实战陷阱分析,帮助读者快速掌握遥感图像融合的关键技术。

weixin_29041195的博客 394

Ubutntu下使用realsense d435i(二):获取某二维像素点的三维坐标

00 准备工作 准备工作包括安装驱动以及pyrealsense2,具体可参考上一篇: Ubutntu下使用realsense d435i(一):准备工作以及安装pyrealsense2 https://blog.youkuaiyun.com/gyxx1998/article/details/121461293 01 通过二维像素点获得物体三维坐标 这个在上一篇已经介绍了代码: realsense d435i获取某像素点三维坐标(计算深度和点云两种方法) https://blog.youkuaiyun.com/gyxx1998/

gyxx1998的博客 9943

解决Layui 2.9.24中layer弹窗关闭失效的3种实战方案

你是否在使用Layui的layer弹窗组件时遇到过无法关闭的问题?明明调用了`layer.close()`却毫无反应,或者弹窗关闭后页面出现异常?本文将深入分析Layui 2.9.24版本中layer弹窗关闭问题的常见原因,并提供3种经过验证的解决方案,帮助你彻底解决这一困扰。 读完本文你将学到: - 如何正确使用layer的关闭API - 常见的关闭失效场景及排查方法 - 2.9.24版本特有...

gitblog_00247的博客 590

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置

MSS = MTU - tcpHeader - ipHeader,也就是MTU = MSS(1360) + tcpHeader(20) + ipHeader(20) = 1400,说明CAPL是可以动态设置网络底层配置参数的!然后在CAPL中设置此网卡MTU值为1400,然后创建UDP套接字,一次性发送2000个字节,在Trace窗口看看首帧报文二层Data的长度。所以我们还不能用UDP协议来验,应该用TCP协议来验,也就是在TCP三次握手时通过Tester的MSS值推导出自己的MTU值。

jasonj333 992

layui表格弹窗修改_使用layer弹窗和layui表单实现新增功能

使用layer弹窗和layui表单实现新增功能2019-01-08编程之家收集整理的这篇文章主要介绍了使用layer弹窗和layui表单实现新增功能,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。1.需求:使用layer在弹窗内完成新增,成功后提示并刷新页面(父页面,list页面)2.实现--构建from表单配置名称required value="" style="width: 24...

weixin_30769779的博客 693

IgH EtherCAT 从入门到精通:第 19 章 主站状态机(FSM)深度解析

文章摘要:IgH EtherCAT主站采用多层次有限状态机(FSM)架构实现总线管理。核心是Master FSM,负责总线扫描、从站配置和邮箱通信,通过函数指针状态机模式实现异步非阻塞操作。系统包含多个嵌套FSM:Slave FSM管理单个从站请求,Slave Scan FSM处理拓扑变化扫描,Slave Config FSM配置从站状态转换,Change FSM执行AL状态切换。这种设计通过状态函数指针转换实现复杂协议交互,各FSM协同工作完成EtherCAT网络的初始化、配置和实时通信,支持热插拔和错误

从事嵌入式linux android驱动开发,拥有全栈能力 145

在最新版eclipse中配置使用AI AIcoder _AIcoder配置GPUSTACK使用_配置OLLAMA本地AI模型利用_集合---AI场景应用工作笔记

本文介绍了三款实用的编程辅助工具:一款便捷的反编译插件,可直接在插件市场安装使用;GitHub Copilot提供每月2000次代码补全和50条聊天记录的免费额度,支持智能代码提示功能;aicoder支持配置本地模型运行。这些工具都能有效提升开发效率,其中GitHub Copilot的智能补全功能尤为突出。

添柴程序猿的专栏 1240

layui弹窗 iframe子页面弹窗如何覆盖父级页面

使用iframe进行嵌套页面,需求要在iframe内点击按钮,出现弹窗,但是实现中发现这个弹窗只覆盖了子页面,父页面内容仍可点击。 要实现覆盖整个页面,这里就需要用到layui中的方法,parent.layer.open({})。在父级页面打开弹出层。 此处显示的是加载动画,效果如下图: 具体操作如下: 注意:在外面的父级页面和iframe里面的子页面都需要,引用layui.js和la...

沫沫酱 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

layui之layer的使用

在使用layer的一些踩坑注意事项。

qq_51615662的博客 1649

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

layer 自定义版本Confirm 弹窗

/** * layer 修改版本Confirm 弹窗 * @author wangmutian */ //修改版本Confirm (function($){ function LayerConfirm(options){ this.opts = $.extend({},LayerConfirm.DEFAULTS,options); this._initLayerOpen(); } /** * 初始化 * @privat.

永远是死循环 1084

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Layui中layer.open弹窗最大化最小化后的高度异常问题分析

在使用Layui框架的layer.open方法创建弹窗时,当设置了maxmin: true开启最大化和最小化功能,并且将高度设置为auto时,会出现一个明显的UI异常问题。具体表现为: 1. 初始状态下弹窗显示正常,高度能够自适应内容 2. 当用户点击最小化按钮后,弹窗按预期最小化 3. 再次点击最大化按钮恢复弹窗时,弹窗内容区域的高度被错误地设置为0 4. 导致弹窗主体内容不可见,只剩下标题栏...

gitblog_00522的博客 427

LayUI内置组件实战:5分钟搞定Layer弹窗与日期选择器配置

本文为前端开发新手提供了LayUI内置组件Layer弹窗与LayDate日期选择器的快速上手实战指南。文章聚焦于最常见的应用场景和最简化的配置方式,通过清晰的代码示例,帮助开发者在5分钟内掌握这两个核心组件的核心用法与配置技巧,快速集成到项目中。

weixin_29219189的博客 333

解决layui自己设置的button无法关闭弹窗

skin: 'layui-layer-rim', //加上边框。// return false // 点击该按钮后不关闭弹层。// return false // 点击该按钮后不关闭弹层。// 合并数组中的值为一个字符串,以逗号分隔。btn: ['按钮1', '按钮2', '按钮3'],btn: ['按钮1', '按钮2', '按钮3']btn: ['确定', '取消'],// 获取子页面中存储的选中数据。// 右上角关闭事件的逻辑。// 按钮2 的回调。// 按钮3 的回调。// 按钮1 的回调。

weixin_49801874的博客 1297

使用 layer.open() 方法结合 layer.load() 实现加载动画效果。当用户在 layer.open() 中点击确定后,关闭当前弹窗并显示加载动画,同时执行其他指定的方法。

使用 layer.open() 方法结合 layer.load() 实现加载动画效果。当用户在 layer.open() 中点击确定后,关闭当前弹窗并显示加载动画,同时执行其他指定的方法。

weixin_42064877的博客 8236

layui弹窗自适应变大_layui怎么调整弹框大小?

layui怎么调整弹框大小?下面本篇文章给大家介绍一下layui中调整layer弹出窗体大小的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。layer是一个备受青睐的web弹层组件,在默认状态下layer的宽高都自适应的,但当需要自定义宽度时,可以使用area: ['500px', '400px']进行设置。设置代码:layer.open({type: 2,area:["5...

weixin_39789327的博客 6778

从若依到Layui:深入解析$.modal.open()的弹窗刷新机制与最佳实践

本文深入解析了若依框架中$.modal.open()方法的弹窗刷新机制,揭示其底层基于Layui的layer.open()实现。针对子窗口关闭后需刷新父窗口数据的常见需求,文章对比了直接刷新与回调刷新两种策略,重点阐述了利用end回调函数实现精准、高效数据同步的最佳实践,并提供了可复用的代码方案与问题排查技巧。

docker7nomad的博客 669

解决layui弹窗下的下拉选择框被遮挡或显示不全问题

问题:在做后台的时候想要实现这样一个功能,点击弹出一个窗口,窗口是下拉选择框,给用户选择。用到了layui,但是却发现,弹窗虽然固定了高宽,但是里面的下拉框,在显示的时候却被弹窗挡住了,导致滚动条出现。 如下图: 后来发现只要是不用layui提供的下拉选择框,是不会出现被遮挡的问题的。 但是我还就非要用了,怎么滴了吧... 研究很久,怎么解决呢? 方法如下: 首先看看问题出现在哪里...

qq_34266804的博客 4715
上一篇: 解决浏览器第一次输入完数据后 自动填充表单数据问题
下一篇: 彻底搞懂 Layui中的数据表格,更改请求参数等
归来巨星
归来巨星 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄7年 5391粉丝 95原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

归来巨星

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

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

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

打赏作者

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

抵扣说明:

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

余额充值