小程序仿微信支付键盘实现

2023-10-27

  1. 先上图
    键盘效果
    2.实现过程

键盘放在了vant-weapp组件的弹窗框popup中,并且默认进入页面自动弹出键盘

index.wxml

<van-popup show="{{ show }}" overlay="{{ false }}" position="bottom" bind:close="onClose">
    <view class="flex-col keyboard">
      <view class="flex-row">
        <view class="flex-row group_5">
          <view class="text-wrapper flex-col items-center justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 1 }}" catchtap="keyInput">
            <text decode="decode">1</text>
          </view>
          <view class="text-wrapper flex-col items-center view_2 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 2 }}" catchtap="keyInput">
            <text decode="decode">2</text>
          </view>
          <view class="text-wrapper flex-col items-center view_2 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 3 }}" catchtap="keyInput">
            <text decode="decode">3</text>
          </view>
        </view>
        <view class="flex-col items-center image-wrapper justify-center" hover-class="down_state" hover-stay-time="{{50}}" catchtap="delInput">
          <image src="http://test2.xjdm100.com/xz-wxapp/0d44f235e7cedbd8c950096e47507eea.png" class="image_4" />
        </view>
      </view>
      <view class="flex-row group_6">
        <view class="flex-col group_7">
          <view class="flex-col group_8">
            <view class="flex-row">
              <view class="left-text-wrapper flex-col items-center view_4 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 4 }}" catchtap="keyInput">
                <text decode="decode">4</text>
              </view>
              <view class="left-text-wrapper flex-col items-center view_5 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 5 }}" catchtap="keyInput">
                <text decode="decode">5</text>
              </view>
              <view class="left-text-wrapper flex-col items-center view_6 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 6 }}" catchtap="keyInput">
                <text decode="decode">6</text>
              </view>
            </view>
            <view class="flex-row group_10">
              <view class="text-wrapper flex-col items-center justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 7 }}" catchtap="keyInput">
                <text decode="decode">7</text>
              </view>
              <view class="text-wrapper flex-col items-center view_8 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 8 }}" catchtap="keyInput">
                <text decode="decode">8</text>
              </view>
              <view class="text-wrapper flex-col items-center view_9 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 9 }}" catchtap="keyInput">
                <text decode="decode">9</text>
              </view>
            </view>
          </view>
          <view class="flex-row group_11">
            <view class="left-text-wrapper flex-col items-center justify-center view_10" hover-class="down_state" hover-stay-time="{{50}}" data-key="{{ 0 }}" catchtap="keyInput">
              <text decode="decode">0</text>
            </view>
            <view class="flex-col items-center text-wrapper_1 justify-center" hover-class="down_state" hover-stay-time="{{50}}" data-key="." catchtap="keyInput">
              <text decode="decode">.</text>
            </view>
          </view>
        </view>
        <view class="flex-col items-center justify-center text-wrapper_2" hover-class="down_state2" hover-stay-time="{{50}}" bindtap="goRecharge">
          <text decode="decode">充值</text>
        </view>
      </view>
    </view>
  </van-popup>

index.wxss

.group_5 {
  margin-top: 20rpx;
  color: rgb(22, 22, 22);
  font-size: 33rpx;
  line-height: 25rpx;
  white-space: nowrap;
  flex: 1 1 auto;
}

.group_6 {
  margin-top: 10rpx;
}

.text_1 {
  margin-top: 3rpx;
}

.image_1 {
  margin-left: 30rpx;
  width: 350rpx;
  height: 71rpx;
}

.text_2 {
  color: rgb(28, 28, 28);
  font-size: 25rpx;
  line-height: 24rpx;
  white-space: nowrap;
}

.group_4 {
  margin-top: 50rpx;
  padding: 0 3rpx;
  /* display: inline; */
  vertical-align: top;
  /* line-height: 63rpx; */
  /* white-space: nowrap; */
}

.divider {
  margin-top: 32rpx;
  background-color: rgb(228, 228, 228);
  height: 2rpx;
}

.balance-area {
  margin-top: 12rpx;
  color: rgb(28, 28, 28, .6);
  font-size: 25rpx;
}

.view_2 {
  margin-left: 10rpx;
}

.view_3 {
  margin-left: 12rpx;
}

.image-wrapper {
  margin-left: 10rpx;
  margin-top: 20rpx;
  padding: 26rpx 0 27rpx;
  width: 160rpx;
  background-color: rgb(255, 255, 255);
  border-radius: 10rpx;
  height: 90rpx;
}

.group_7 {
  flex: 1 1 auto;
}

.text-wrapper_2 {
  margin-left: 10rpx;
  padding: 118rpx 0;
  color: rgb(255, 255, 255);
  font-size: 29rpx;
  line-height: 28rpx;
  white-space: nowrap;
  background-color: rgb(7, 193, 96);
  border-radius: 10rpx;
  width: 160rpx;
  height: 290rpx;
}

.image_3 {
  width: 36rpx;
  height: 50rpx;
}

.text_3 {
  margin-left: 27rpx;
  height: 70rpx;
  flex: 1;
  color: rgb(28, 28, 28);
  font-size: 84rpx;
  font-weight: 600;
  caret-color: rgb(7, 193, 96);
}

.image_4 {
  width: 33rpx;
  height: 27rpx;
}

.group_8 {
  color: rgb(22, 22, 22);
  font-size: 33rpx;
  line-height: 25rpx;
  white-space: nowrap;
}

.group_11 {
  margin-top: 10rpx;
}

.group_10 {
  margin-top: 10rpx;
}

.view_10 {
  flex: 1 1 auto;
  color: rgb(22, 22, 22);
  font-size: 33rpx;
  line-height: 25rpx;
  white-space: nowrap;
}

.text-wrapper_1 {
  margin-left: 10rpx;
  padding: 45rpx 0 29rpx;
  color: rgb(22, 22, 22);
  font-size: 33rpx;
  line-height: 6rpx;
  white-space: nowrap;
  background-color: rgb(255, 255, 255);
  border-radius: 10rpx;
  width: 180rpx;
  height: 90rpx;
}

.view_4 {
  flex: 1 1 160rpx;
}

.view_5 {
  margin-left: 10rpx;
  flex: 1 1 160rpx;
}

.view_6 {
  margin-left: 10rpx;
  flex: 1 1 160rpx;
}

.view_8 {
  margin-left: 10rpx;
}

.view_9 {
  margin-left: 10rpx;
}

.keyboard {
  background-color: rgb(235 243 255);
  box-sizing: border-box;
  padding: 10rpx;
  font-size: 46rpx;
  font-weight: 500;
}

.down_state {
  background-color: #f5f5f5;
}

.down_state2 {
  background-color: rgba(7, 193, 96, .6);
}

.text-wrapper {
  flex: 1 1 160rpx;
  padding: 27rpx 0 29rpx;
  background-color: rgb(255, 255, 255);
  border-radius: 10rpx;
  height: 90rpx;
}
// 公共部分
.flex-row {
  display: flex;
  flex-direction: row;
}

.flex-col {
  display: flex;
  flex-direction: column;
}

.justify-start {
  display: flex;
  justify-content: flex-start;
}

.justify-center {
  display: flex;
  justify-content: center;
}

.justify-end {
  display: flex;
  justify-content: flex-end;
}

.justify-evenly {
  display: flex;
  justify-content: space-evenly;
}

.justify-around {
  display: flex;
  justify-content: space-around;
}

.justify-between {
  display: flex;
  justify-content: space-between;
}

.items-start {
  display: flex;
  align-items: flex-start;
}

.items-center {
  display: flex;
  align-items: center;
}

.items-end {
  display: flex;
  align-items: flex-end;
}

index.js

data: {
    amount: '',
    show: false,
},
keyInput(e) {
    let key = e.currentTarget.dataset.key
    let now = this.data.amount + key.toString()
    let inputVal = this.money(now)
    this.setData({
      amount: inputVal
    })
  },
goRecharge() {
    wx.showLoading({
      title: '充值中',
    })
    setTimeout(() =>{
		wx.hideLoading()
    },2000)
},
delInput() {
    let now = this.data.amount
    this.setData({
      amount: now.substr(0, now.length - 1)
    })
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序仿微信支付键盘实现 的相关文章

  • 在动态创建的元素的onclick函数的属性中传递一个字符串

    我试图在动态创建的锚元素的 onClick 事件处理函数的参数中传递一个字符串 请参阅小提琴http jsfiddle net shmdhussain bXYe4 http jsfiddle net shmdhussain bXYe4 我无
  • 使用 VSCode 的 EJS 文件缩进错误

    我在 VSCode 上遇到 EJS 文件问题 每次保存文件时 格式化程序都会应用错误的缩进 在每个 EJS 标识符下方 下一行向右移动 缺少正确的垂直对齐 我使用 ejs 的 HTML 格式并安装了 DigitalBrainstem 的 E
  • django 模板上的 vscode html 自动套用格式

    我喜欢 VSCode 的保存自动格式功能 直到它弄乱了我的模板代码 它错误地将我的 django 模板语法格式化为一行代码 有时非常长的一行 所以不用这段代码 for row in ABCDEFGH tr for col in 123456
  • 文件缓存:查询字符串与上次修改时间?

    我正在研究缓存网站资源的方法 并注意到大多数与我类似的网站都使用查询字符串来覆盖缓存 例如 css style css v 124942823 后来 我注意到每当我保存 style css 文件时 最后修改的标头都会 更新 使得查询字符串变
  • CSS以两种颜色显示一个字符[重复]

    这个问题在这里已经有答案了 css中是否可以用两种颜色制作单个字符 我的意思是例如字符 B 上半部分为红色 下半部分为蓝色 h1 font size 72px background webkit linear gradient red 49
  • 如何在 HTML 中将文本设置为粗体?

    我正在尝试使用 HTML 将一些文本加粗 但我很难让它发挥作用 这就是我正在尝试的 Some
  • 浮动CSS属性导致父div不继承高度?

    我在 div 中有一个元素设置为float right但是 它会导致最外面的 div 不环绕 这是jsfiddle http jsfiddle net W792X 5 for it 我试图让提交按钮在 div 内浮动 但设置该属性似乎会导致
  • jQuery:向左滑动和向右滑动

    我见过slideUp and slideDown在 jQuery 中 左右滑动的功能 方式怎么样 您可以使用 jQuery UI 中的附加效果来做到这一点 详情请参阅此处 http docs jquery com UI Effects Sl
  • Radiobutton-带有纯 html/css 的按钮

    是否可以创建像这样的单选按钮JQuery http jqueryui com demos button radio那些 用纯html css thanks 试试这个小提琴 http jsfiddle net mcXm7 1 http jsf
  • 如何使一个 div 位于另外两个 div 的中间以跨越多行,就像表中的 rowspan 一样

    我已经有一段时间试图避免使用表格来布局元素了 因为我意识到它们并不是为此而设计的 并且像 div p 这样的普通容器元素以及 CSS 足以实现人们可能需要的任何布局 到目前为止 我已经取得了成功 但有一种情况我似乎无法独自克服 我基本上需要
  • Youtube API 设置当前时间

    我目前正在我的一个项目中使用 You Tube API 我的使用方法如下 var tag document createElement script tag src https www youtube com iframe api var
  • Bootstrap 3.0:全宽彩色背景,中心紧凑列

    我想要制作一个条纹商业主题 类似于 W3Schools 创建的主题 主题可以找到here http www w3schools com bootstrap bootstrap theme company asp 它的特点是水平部分 由不同的
  • 在 CSS 选择器中转义双引号

    我有一个 html 标签 div style background image url div images test jpg gt 我想使用 CSS 选择器来定位这个元素 我尝试了下面的选择器 但它抛出错误 document queryS
  • 方向改变后的javascript最大视口高度Android和iOS

    目标 查找设备的最大视口高度 包括设备的空间address bar这样我们就可以动态调整 min body 的大小并将内容向上推 问题 移动浏览器处理方向状态的方式不同 方向变化时更新 DOM 属性的方式也不同 使用 JavaScript
  • 粉碎一个元素,向随机方向发送碎片

    我试图 粉碎 一个元素 例如 一个图像 并将其碎片朝随机方向飞行 当碎片到达目的地时 即x距离 以像素为单位 它们变成原始图像的较小版本 jQuery UI 的explode http api jqueryui com explode ef
  • 如何使用javascript从特定标签获取HTML文档中的所有textNode?

    如何在不使用xpath或treewalker的情况下从单个数组中的一组特定标签中获取所有textNodes blockquote em h4 h6 p IE不允许您使用xpath和treewalker 请帮助我 如果脚本仅适用于 IE 那就
  • bootstrap css中垂直对齐缩略图?

    我认为这应该很简单 但我就是无法让它发挥作用 在 ASP NET MVC 中 我有一个如下所示的项目列表 div class row div class span12 ul class thumbnails foreach var film
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • 如何从 HTML 中的列数据而不是行数据创建表格?

    根据这篇文章W3学校 http www w3schools com html html tables asp 可以像这样在 HTML 中创建一个基本表格 table border 1 tr td row 1 cell 1 td td row
  • 手机上的网页滚动条可以隐藏吗?

    我正在尝试在移动设备上隐藏滚动条 一切在桌面上看起来都很好 没有滚动条 但是当我检查某些 Android 设备 ipad 时 我仍然可以看到灰色 细小的拇指 可以从浏览器中隐藏预定义的滚动条 我的代码 在桌面上运行良好 body webki

随机推荐

  • Linux centos7关闭防火墙

    1 命令行界面输入命令 systemctl status firewalld service 并按下回车键 2 然后在下方可度以查看得到 active running 此时说明防火墙已经被打开了 root a1663303 systemct
  • 区块链系统运行逻辑

    文章目录 一 开发工具 二 程序运行完整逻辑 2 1 总体逻辑 2 2 详细过程 以添加数据 AddData 为例 一 开发工具 hyperledger fabric 1 4 7 hyperledger ca 1 4 7 ca是用来生成证书
  • [SCOI2005]骑士精神【迭代加深+IDA*】

    题目链接 P2324 SCOI2005 骑士精神 首先 我们先讲讲几个基础知识 迭代加深 我们假设深度优先搜索 DFS 的最深搜索到Max depth 那么也就是说深度到达Max depth的时候不管满不满足答案都要返回了true or f
  • 【id:120】【25分】B. 虚拟电话(构造与析构)

    时间限制 1s 内存限制 128MB 题目描述 虚拟电话包含属性 电话号 状态 机主姓名 1 电话号是一个类 它包含号码和类型 其中号码是整数类型 类型用单个字母表示用户类别 A表示政府 B表示企业 C表示个人 类操作包括构造 属性的获取和
  • 【WiFi】WIFI芯片的研发

    目录 1 硬件设计 2 软件开发 3 集成和测试 4 认证和合规性 5 量产和供应链管理 6 总结说明 1 硬件设计 首先 您需要进行WiFi芯片的硬件设计 这包括选择适当的射频 RF 芯片 基带处理器 调制解调器等组件 并进行电路设计和布
  • Unity C# The type or namespace name could not be found 解决办法

    在使用Unity写脚本的时候有可能需要用到外部的库 这个时候如果直接用VS里的NuGet安装包 安装完之后可以运行 但是重启Unity之后就会出现 CS0246 C The type or namespace name could not
  • Numpy-基础数据结构

    Numpy是python中一个运行速度非常快的的数学库 主要用于数组计算 包含 一个强大的N维数组对象 ndarray 广播功能函数 线性代数 傅里叶变换 随机数生成等功能 接下来 我会系列介绍Numpy的知识点 包含其基础数据结构 通用函
  • 【OpenGL学习】光源

    光源 本节中 LearnOpenGL 教程中的标题为投光物 表示将光线投射到物体的光源 事实上这些投光物都可以称之为光源 包括平行光 点光源 聚光灯等 不同类型的光源可以给场景带来不同的光照效果 本节主要学习定向光 Directional
  • Tinymce富文本编辑器在vue项目中的使用;引入第三方插件和上传视频、图片等

    先放张效果图 第一步 安装依赖 npm install tinymce 5 0 12 第二步 在项目中的public文件夹中新建tinymce文件夹 因为我的项目是脚手架创建的 所以公共文件夹是public 在node modules中找到
  • chrome 安装axure 插件

    一般使用chrome查看axure原型文件时 会提示安装插件 但是又连不上google扩展安装 这里提供一个简便的方式安装 1 静态原型页面路径resources chrome axure chrome extension crx 找到文件
  • RTThread中HardFault_Handler分析

    以Cortex M3为例 RTThread在运行过程如果产生fault 会进人HardFault Handler中断 RTThread对HardFault Handler进行了重定义 HardFault Handler函数在context
  • vue2+three.js实现宇宙(进阶版)

    2023 9 12今天我学习了vue2 three js实现一个好看的动态效果 首先是安装 npm install three 相关代码如下
  • SSL是什么?SSL怎么用?

    SSL是什么 SSL Secure Sockets Layer 安全套接层 及其继任者传输层安全 Transport Layer Security TLS 是为网络通信提供安全及数据完整性的一种安全协议 如今被广泛使用 如网页 电子邮件 互
  • STM32F103基于HAL工程TIM4多通道PWM固定占空比输出

    STM32F103基于HAL工程TIM4多通道PWM固定占空比输出 在测试过程中发现配置的2路PWM总是只有一个固定的通道有输出 于是复用到其他引脚 输出波形有 确定是芯片引脚的问题 后面换了一块板测试 确定是芯片引脚确实有问题 刚开始一直
  • 史上最全Elasticsearch学习

    文章目录 Elasticsearch 一 Elasticsearch简介 安装 1 1 Elasticsearch是什么 1 2 全文搜索引擎 1 3 Elasticsearch的应用案例 1 4 Elasticsearch的下载 安装 运
  • python异常处理

    Python3 错误和异常 作为 Python 初学者 在刚学习 Python 编程时 经常会看到一些报错信息 在前面我们没有提及 这章节我们会专门介绍 Python 有两种错误很容易辨认 语法错误和异常 Python assert 断言
  • 【计算机科学与技术】信息论笔记(6):微分熵

    200803本篇是学习信息论的入门笔记 希望能与各位分享进步 这是第六章 微分熵 文章目录 6 微分熵 6 1 定义 6 2 连续随机变量的AEP 6 3 微分熵与离散的关系 6 4 联合微分熵与条件微分熵 6 5 相对熵与互信息 6 6
  • ubuntu 12.04安装jdk

    分类 LINUX 在安装之前 系统没有任何jdk软件 也就是说在终端执行 java version 将会输出如下内容 root haiyang Aspire java version 程序 java 已包含在下列软件包中 default j
  • 解决linux下图形界面卡死不能操作的问题

    由于linux系统bug很多 所以有时候用着用这就会发生图形界面卡死不能操作的情况 具体解决方法如下 1 按住ctrl alt f2 然后进入了一个黑色的shell界面 注 linux下共有六个虚拟控台 f2 f6 分别对应这不同的权限 2
  • 小程序仿微信支付键盘实现

    先上图 2 实现过程 键盘放在了vant weapp组件的弹窗框popup中 并且默认进入页面自动弹出键盘 index wxml