亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

微信小程序計算器實現(xiàn)案例詳解

 更新時間:2023年06月16日 09:51:19   作者:顏顏yan_  
最近繼續(xù)玩一些微信小程序的api來做例子,感覺自己可能創(chuàng)造力不很足,只能模仿著別人的例子來做一個自己的計算器了,下面這篇文章主要給大家介紹了關于微信小程序計算器實現(xiàn)案例的相關資料,需要的朋友可以參考下

前言

嗨嗨嗨,好久沒更新小程序專欄了,本期淺淺用小程序寫一個計算器。

實現(xiàn)效果

實現(xiàn)步驟

新建一個項目,在app.json中配置文件導航欄的標題和顏色。

先在index.wxml中編寫計算器頁面的外層結構,也就是兩個view,第一個view顯示數(shù)字和運算符,第二個view顯示各種按鈕。
然后在index.wxss中添加樣式。在page(整體頁面)中使用flex布局,將result和btns的flex設置為1,實現(xiàn)兩個view平分頁面的效果。

<view class="result"></view>
<view class="btns"></view>
page{
    display: flex;
    flex-direction: column;
    height: 100%;
}
.result{
    flex: 1;
    background-color: #e0e0e0;
}
.btns{
    flex: 1;
}

wxml

接下來我們來編寫頁面內容。我們可以先觀察計算器的布局,計算器的布局是5行4列,所以我們先寫5個view組件表示5行,每個view中分別添加4個view表示4列。每個view表示計算器的不同按鍵。給每個按鍵定義數(shù)據(jù)data-val。
上半部分只有兩個view組件,分別是用戶輸入的數(shù)字和需要的操作,這里需要綁定數(shù)據(jù)num和op
知識點: view組件的hover-class屬性表示該組件按下時的class樣式。

<view class="result">
    <view class="result-num">{{num}}</view>
    <view class="result-op">{{op}}</view>
</view>
<view class="btns">
    <view>
        <view hover-class="bg" bindtap="resetBtn">C</view>
        <view hover-class="bg" bindtap="delBtn">DEL</view>
        <view hover-class="bg" bindtap="opBtn" data-val="%">%</view>
        <view hover-class="bg" bindtap="opBtn" data-val="/">/</view>
    </view>
    <view>
        <view hover-class="bg" bindtap="numBtn" data-val="7">7</view>
        <view hover-class="bg" bindtap="numBtn" data-val="8">8</view>
        <view hover-class="bg" bindtap="numBtn" data-val="9">9</view>
        <view hover-class="bg" bindtap="opBtn" data-val="*">x</view>
    </view>
    <view>
        <view hover-class="bg" bindtap="numBtn" data-val="4">4</view>
        <view hover-class="bg" bindtap="numBtn" data-val="5">5</view>
        <view hover-class="bg" bindtap="numBtn" data-val="6">6</view>
        <view hover-class="bg" bindtap="opBtn" data-val="-">-</view>
    </view>
    <view>
        <view hover-class="bg" bindtap="numBtn" data-val="1">1</view>
        <view hover-class="bg" bindtap="numBtn" data-val="2">2</view>
        <view hover-class="bg" bindtap="numBtn" data-val="3">3</view>
        <view hover-class="bg" bindtap="opBtn" data-val="+">+</view>
    </view>
    <view>
        <view hover-class="bg" bindtap="numBtn" data-val="0">0</view>
        <view hover-class="bg" bindtap="dotBtn">.</view>
        <view hover-class="bg" bindtap="opBtn" data-val="=">=</view>
    </view>
</view>

wxss

接下來編寫樣式啦,利用flex布局實現(xiàn)按鈕根據(jù)容器的大小自動平分寬度和高度,設置flex-basis:“50%”;用于使按鈕“0”占用兩個按鈕的寬度。

page{
    display: flex;
    flex-direction: column;
    height: 100%;
}
.result{
    flex: 1;
    background-color: #e0e0e0;
    position: relative;
}
.result-num{
    position: absolute;
    font-size: 27pt;
    bottom: 5vh;
    right: 3vw;
}
.result-op{
    font-size: 15pt;
    position: absolute;
    bottom: 1vh;
    right: 3vw;
}
.btns{
    flex: 1;
    display: flex;
    flex-direction: column;
    font-size: 17pt;
    border-top: 1rpx solid #ccc;
    border-left: 1rpx solid #ccc;
}
.btns > view{
    flex: 1;
    display: flex;
}
.btns > view > view{
    flex-basis: 25%;
    border-right: 1rpx solid #ccc;
    border-bottom: 1rpx solid #ccc;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
}
.btns > view:last-child > view:first-child{
    flex-basis: 50%;
}
.btns > view:first-child > view:first-child{
    color: red;
}
.btns > view >view:last-child{
    color: #fc8e00;
}
.bg{
    background: #ccc;
}

頁面效果如下:

js

數(shù)字按鈕事件處理函數(shù)

  1. 添加數(shù)字按鈕事件實現(xiàn)數(shù)字的輸入,先設置值,即num和op。
  2. 設置result和isClear,其中result用來保存上次運算結果。isClear表示輸入的數(shù)字是否替代當前的數(shù)字,如果isClear的值為false,則表示下次輸入的數(shù)字放在當前顯示數(shù)字的末尾;如果isClear的值為true,則表示下次輸入的數(shù)字替代當前的數(shù)字。
  3. 判斷當前輸入的數(shù)字是否為0。如果為0,則設置num的值為0;否則設置num的值為當前輸入的值。
Page({
    data: {
        num: '',
        op: '',
    },
    // 數(shù)字按鈕處理事件
    // 保存上次運算結果
    result: null,
    isClear: false,
    numBtn:function(e){
        var num = e.target.dataset.val;
        if(this.data.num === '0' || this.isClear){
            this.setData({num:num});
            this.isClear = false;
        }else{
            this.setData({num:this.data.num+num});
        }
    }
})

計算按鈕處理事件

  • 獲取當前輸入的數(shù)字和符號;
  • 判斷是否重復計算;
  • 判斷符號是什么,當符號為+時,返回的結果就是當前數(shù)字加上添加的數(shù)字;當符號為-時,返回的結果就是當前數(shù)字減去添加的數(shù)字…
// 計算按鈕事件
    opBtn:function(e){
        var op = this.data.op;
        var num = Number(this.data.num);
        this.setData({op:e.target.dataset.val});
        //判斷是否重復計算
        if(this.isClear){
            return
        }
        this.isClear = true;
        if(this.result === null){
            this.result = num;
            return
        }
        if(op === '+'){
            this.result = this.result + num;
        }else if(op === '-'){
            this.result = this.result - num;
        }else if(op === '*'){
            this.result = this.result * num;
        }else if(op === '/')
        {
            this.result = this.result / num;
        }else if(op === '%'){
            this.result = this.result % num;
        }
        this.setData({num:this.result + ''})
    },

清空數(shù)字、刪除數(shù)字、添加“.”事件處理函數(shù)

  // 清空數(shù)字、刪除數(shù)字、添加“.”事件處理函數(shù)
    dotBtn:function(){
        if(this.isClear){
            this.setData({num:'0.'});
            this.isClear =  false;
            return
        }
        if(this.data.num.indexOf('.' >=0)){
            return
        }
    },
    delBtn:function(){
        var num = this.data.num.substr(0,this.data.num.length - 1);
        this.result = num;
        this.setData({num:num === ''?'0':num})
    },
    resBtn:function(){
        this.result = null;
        this.isClear = false;
        this.setData({num:'0',op:''})
    }
})

總結

到此這篇關于微信小程序計算器實現(xiàn)案例的文章就介紹到這了,更多相關微信小程序計算器案例內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論