一、UI设计
微信小程序计算器的UI设计通常包含输入框、数字按钮、运算符按钮、清零按钮、等号按钮等。为了用户的良好体验,布局设计应该简约明了。
<view class="container">
<view class="input-wrapper">
<input class="input" value="{{ inputValue }}" disabled="{{ disabled }}" />
</view>
<view class="btn-wrapper">
<view class="row">
<button class="num-btn" data-num="7" bindtap="onNumBtnClick">7</button>
<button class="num-btn" data-num="8" bindtap="onNumBtnClick">8</button>
<button class="num-btn" data-num="9" bindtap="onNumBtnClick">9</button>
<button class="operator-btn" data-operator="+" bindtap="onOperatorBtnClick">+</button>
</view>
<view class="row">
<button class="num-btn" data-num="4" bindtap="onNumBtnClick">4</button>
<button class="num-btn" data-num="5" bindtap="onNumBtnClick">5</button>
<button class="num-btn" data-num="6" bindtap="onNumBtnClick">6</button>
<button class="operator-btn" data-operator="-" bindtap="onOperatorBtnClick">-</button>
</view>
<view class="row">
<button class="num-btn" data-num="1" bindtap="onNumBtnClick">1</button>
<button class="num-btn" data-num="2" bindtap="onNumBtnClick">2</button>
<button class="num-btn" data-num="3" bindtap="onNumBtnClick">3</button>
<button class="operator-btn" data-operator="*" bindtap="onOperatorBtnClick">*</button>
</view>
<view class="row">
<button class="num-btn" data-num="0" bindtap="onNumBtnClick">0</button>
<button class="num-btn" data-num="." bindtap="onNumBtnClick">.</button>
<button class="equal-btn" bindtap="onEqualBtnClick">=</button>
<button class="operator-btn clear-btn" bindtap="onClearBtnClick">清零</button>
</view>
</view>
</view>
在CSS部分,我们对各个元素进行样式设置。例如:
/* container */
.container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100vh;
overflow: hidden;
}
/* input */
.input-wrapper {
padding: 30rpx;
}
.input {
width: 100%;
padding: 20rpx;
font-size: 40rpx;
color: #333;
text-align: right;
background-color: #eee;
border: 1rpx solid #ccc;
border-radius: 8rpx;
}
/* button */
.btn-wrapper {
padding: 20rpx;
}
.row {
display: flex;
justify-content: space-between;
margin-bottom: 20rpx;
}
.num-btn,
.operator-btn,
.equal-btn,
.clear-btn {
width: 20%;
height: 90rpx;
line-height: 90rpx;
font-size: 40rpx;
color: #fff;
background-color: #333;
border: none;
border-radius: 8rpx;
box-shadow: 0 2rpx 8rpx rgba(51, 51, 51, 0.2);
text-shadow: 0 1rpx 3rpx rgba(0, 0, 0, 0.35);
text-align: center;
cursor: pointer;
}
.num-btn:active,
.operator-btn:active,
.equal-btn:active,
.clear-btn:active {
box-shadow: 0 1rpx 3rpx rgba(51, 51, 51, 0.2);
transform: translateY(2rpx);
}
.num-btn.disabled {
color: #999;
background-color: #f5f5f5;
box-shadow: none;
cursor: default;
}
二、逻辑实现
微信小程序计算器的逻辑实现主要包括数字输入、运算符输入、清零、等号、错误提示等。
1. 数字输入
用户通过点击数字按钮,将数字显示在输入框中。代码如下:
onNumBtnClick: function (e) {
var num = e.currentTarget.dataset.num;
var inputValue = this.data.inputValue;
if (inputValue === '0') {
inputValue = num;
} else {
inputValue += num;
}
this.setData({
inputValue: inputValue
});
}
以上代码中,我们先获取点击的数字,并获取当前输入框的值。判断如果当前是0,则将输入框的值设置为点击的数字;否则,将点击的数字添加到输入框的值的后面。最后,更新输入框的值。
2. 运算符输入
用户通过点击运算符按钮,将运算符显示在输入框中,并进行计算。代码如下:
onOperatorBtnClick: function (e) {
var operator = e.currentTarget.dataset.operator;
var inputValue = this.data.inputValue;
if (/[\+\-\*\/]$/.test(inputValue)) {
inputValue = inputValue.slice(0, -1);
}
inputValue += operator;
this.setData({
inputValue: inputValue,
disabled: false
});
}
以上代码中,我们先获取点击的运算符,并获取当前输入框的值。判断如果输入框的值的最后一个字符是运算符,则将输入框的值删除最后一个字符;然后将点击的运算符添加到输入框的值的后面。最后,更新输入框的值,并将结果框解禁。
3. 清零
用户通过点击清零按钮,将输入框的值恢复为默认值0,同时将结果框禁用。代码如下:
onClearBtnClick: function () {
this.setData({
inputValue: '0',
disabled: true
});
}
以上代码中,我们将输入框的值设置为0,并将结果框禁用。
4. 等号
用户通过点击等号按钮,将输入框的值进行计算,并显示在结果框中。代码如下:
onEqualBtnClick: function () {
var inputValue = this.data.inputValue;
try {
var result = eval(inputValue);
this.setData({
inputValue: result.toFixed(2),
disabled: true
});
} catch (e) {
this.setData({
inputValue: '',
disabled: true
});
wx.showToast({
title: '表达式错误',
icon: 'none'
});
}
}
以上代码中,我们通过JavaScript中的eval函数,将输入框的值进行计算,并进行保留小数位数的处理。最后,将结果显示在输入框中,并将结果框禁用。
5. 错误提示
如果用户输入的表达式不合法,则需要进行错误提示。代码如下:
try {
// ...
} catch (e) {
this.setData({
inputValue: '',
disabled: true
});
wx.showToast({
title: '表达式错误',
icon: 'none'
});
}
以上代码中,我们通过try-catch语句进行错误处理。如果出现错误,则将输入框的值清空,并显示错误提示。
三、总结
通过对微信小程序计算器的UI设计和逻辑实现的详细介绍,我们可以看到在小程序中实现一个计算器所需要的核心代码。这里我们通过一个简单的计算器,向大家展示了微信小程序的基本开发流程,包括UI设计和逻辑实现等内容。希望这篇文章能够帮助大家理解微信小程序开发的基本思路和技术原理。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/309456.html