仿微信支付转账页面

导读:本篇文章讲解 仿微信支付转账页面,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、效果

宁可累死自己,也要卷死他们。大家好。我是小卷
在这里插入图片描述

二、解析说明

此页面可分分为4部分
1 返回箭头
2 头像和昵称
3 金额输入
4 输入的键盘

三、代码展示

3.1、wxml

<!--返回按钮-->
<view style="margin-top: {{CustomBar*5/8}}px;margin-left: 10px;color: black;">
    <view class="cuIcon-back" bindtap="backPage"></view>
</view>
<!--头像与昵称-->
<view style="text-align: center;">
    <image class="avatar" src="/img/base/avatar.jpg"></image>
    <view class="nickName">大小姐</view>
</view>

<view class="page_box">
    <!--金额-->
    <view class="input_view">
        <text class="title">金额</text>
        <view class="input_box">
            <text class="input_label"></text>
            <!--输入内容-->
            <text class="content" wx:if="{{content}}">{{content}}</text>
            <view class="className" wx:if="{{keyShow}}"></view>
        </view>
        <view style="color:darkblue;margin-top: 40rpx;">添加转账说明</view>
    </view>
    <!--键盘-->
    <view class='keyboard {{keyShow&&"hind_box"}}'>
        <view class='key_box'>
            <!--右侧-->
            <view class="number_box">
                <view class='keys {{index==9?"zero":""}}' wx:for='{{KeyboardKeys}}' wx:key='*this' catchtap='keyTap' data-keys='{{item}}'>{{item}}</view>
            </view>
            <!--左侧-->
            <view class="btn_box">
                <view class='keys delete' catchtap='keyTap' data-keys='<'>
                    <text class="cuIcon-del"></text>
                </view>
                <view class="keys pay_btn" catchtap='payTap'>转账</view>
            </view>
        </view>
    </view>
</view>

提示:返回箭头 cuIcon-back和去除cuIcon-del,用到iconfont
头像路径可以自行替换呢

3.2、wxss

page {
    background-color:#EDEDED;
}
/*头像*/
.avatar{
    width: 80rpx;
    height: 80rpx; 
    border-radius: 10rpx;
}
/*昵称*/
.nickName{
    margin-top: 20rpx;
    font-weight: bold;
}
/*整体*/
.page_box {
    margin-top: 50rpx;
    width: 100%;
    height: auto;
    background-color: #fff;
    border-top-left-radius: 30rpx;
    border-top-right-radius: 30rpx;
    overflow: hidden;
}

/*1 输入金额整体*/
.input_view{
    width: 100%;
    height: 1050rpx;
    padding: 30rpx 60rpx 40rpx 60rpx;
    box-sizing: border-box;
}
/*1.1 金额名称*/
.title {
    display: block;
    font-size: 24rpx;
    color: #000;
    padding-left: 10rpx;
}
/*1.2 输入框*/
.input_box{
    display: flex;
    padding: 20rpx 0;
    height: 120rpx;
    border-bottom: 1px solid #efefef;
}
/*1.3 ¥样式*/
.input_label{
    font-size: 60rpx;
    font-weight: bold;
    margin-right: 5rpx;
}
/*1.4 金额*/
.content{
    font-size: 60rpx;
    font-weight: bold;
    line-height: 90rpx;
    margin-top: 8rpx;
}
/*1.5 光标闪烁*/
.className {
    width: 4rpx;
    height: 80rpx;
    background: #43ad3f;
    margin-top: 15rpx;
    animation: twinkling 1s infinite;
}
/*1.6 光标动作*/
.animated {
    animation-duration: 1s;
    animation-fill-mode: both
}
/*1.7 动作效果*/
@keyframes twinkling {
    0% {
        opacity: 0;
    }
    100% {
        opacity: 1;
    }
}
/*2 键盘*/
.keyboard {
    height: 0;
    width: 100%;
    background: #f7f7f7;
    position: fixed;
    bottom: 0;
    left: 0;
    transition: height 0.3s;
    padding: 0 0 0 16rpx;
    z-index: 10;
}

.hind_box {
    height: 440rpx;
}

.key_box {
    overflow: hidden;
}
.number_box{
    width: calc((100% / 4 * 3) - 16rpx);
    display: inline-block;
}
.btn_box{
    width: calc(100% / 4);
    display: inline-block;
}
.keys {
    float: left;
    width: calc(100% / 3 - 16rpx);
    height: 90rpx;
    text-align: center;
    line-height: 90rpx;
    box-sizing: border-box;
    font-size: 40rpx;
    background: #fff;
    margin: 16rpx 16rpx 0 0;
    border-radius: 10rpx;
    font-weight: bold;
}
.keys.zero{
    width: calc((100% / 3) * 2 - 16rpx);
}
.keys.delete{
    font-size: 60rpx;
}
.btn_box{
    width: calc((100% / 4));
}
.btn_box .keys{
    width: calc(100% - 16rpx);
    /* padding-top: 10rpx; */
}
.btn_box .pay_btn{
    height: 298rpx;
    line-height: 298rpx;
    padding-top: 0;
    background: #05c160;
    font-size: 30rpx;
    color: #fff;
    font-weight: normal;
}

3.3、js

const app = getApp();
Page({
    data: {
        CustomBar: app.globalData.CustomBar,
        keyShow: true, //默认显示键盘
        KeyboardKeys: [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, '·'],
        content: ''
    },
    //点击界面键盘消失
    hindKeyboard() {
        this.setData({
            keyShow: false
        });
    },
    //点击输入框,键盘显示
    showKeyboard() {
        this.setData({
            keyShow: true
        });
    },

    //按钮
    keyTap(e) {
        wx.vibrateShort({
          type: 'light',
        })
        let keys = e.currentTarget.dataset.keys;
        let content = this.data.content;
        let len = content.length;

        switch (keys) {
            //点击小数点
            case '·':
                //如果字符串里有小数点了,则不能继续输入小数点,且控制最多可输入10个字符串
                if (len < 11 && content.indexOf('.') == -1) {
                    //如果小数点是第一个输入,那么在字符串前面补上一个0,让其变成0.
                    if (content.length < 1) {
                        content = '0.';
                    } else { //如果不是第一个输入小数点,那么直接在字符串里加上小数点
                        content += '.';
                    }
                }
                break;
            case 0:
                if (len < 4) {
                    console.log(content.length)
                    if (content.length < 1) { //如果0是第一个输入,让其变成0.
                        content = '0.';
                    } else {
                        content += '0'
                    }
                }
                break;
            case '<': //如果点击删除键就删除字符串里的最后一个
                content = content.substr(0, content.length - 1);
                break;
            default:
                let Index = content.indexOf('.'); //小数点在字符串中的位置
                if (Index == -1 || len - Index != 3) { //这里控制小数点只保留两位
                    if (len < 11) { //控制最多可输入10个字符串
                        content += keys;
                    }
                }
                break
        }

        this.setData({
            content: content
        });
    },

    // 付款
    payTap() {
        this.hindKeyboard();
        let content=this.data.content;
        if(content==''){
            wx.showToast({
              title: '请先填写金额',
              icon:'error'
            })
            setTimeout(() => {
                this.showKeyboard();
            }, 500)
        }
        console.log(this.data.content)
    }

})

其中 CustomBar 获取屏幕导航栏高度

大家测试一下。如果效果和微信支付转账一样。麻烦在评论留言 一模一样。
希望大家。点赞👍。收藏⭐。最后关注。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/107075.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!