微信小程序3-2 计算器

这篇具有很好参考价值的文章主要介绍了微信小程序3-2 计算器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、运行效果图

微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

二 、知识储备

(一)data-*自定义属性

微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

(二)模块

微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

三、实现步骤

(一)准备工作

1、创建项目

  • 创建项目微信小程序项目 - 计算器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 单击【确定】按钮
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 按照惯例做一些初始化工作
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

2、设置导航栏

  • app.json文件设置window配置项
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

(二)实现页面结构

  • pages/index/index.wxml文件

1、编写页面的整体结构

微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

2、编写结果区域的结构

  • 两行内容:第一行是当前的计算式,第二行是当前计算结果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

3、编写按钮区域第一行按钮的结构

  • 第一行包含了四个按钮:清除按钮、删除按钮、正负切换按钮、除号按钮
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序- 第20行代码设置了data-val自定义属性,用于区分不同按钮

4、编写按钮区域第二行按钮的结构

  • 第二行包含了四个按钮:7按钮、8按钮、9按钮、乘号按钮
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 第二行四个按钮都设置了data-val自定义属性,用于区分不同按钮

5、编写按钮区域第三行按钮的结构

  • 第三行包含了四个按钮:4按钮、5按钮、6按钮、减号按钮
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 第三行四个按钮都设置了data-val自定义属性,用于区分不同按钮

6、编写按钮区域第四行按钮的结构

  • 第四行包含了四个按钮:1按钮、2按钮、3按钮、加号按钮
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 第四行四个按钮都设置了data-val自定义属性,用于区分不同按钮

7、编写按钮区域第五行按钮的结构

  • 第五行包含了四个按钮:0按钮、点按钮、等号按钮、
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序- 第58行代码设置了data-val自定义属性,用于区分不同按钮
  • 此时查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

8、查看野蛮结构源码

<!--index.wxml-->
<!-- 结果区域 -->
<view class="result">
  <!-- 当前计算式 -->
  <view class="result-sub">{{sub}}</view>
  <!-- 当前计算结果 -->
  <view class="resut-num">{{num}}</view>
</view>
<!-- 按钮区域 -->
<view class="btns">
  <!-- 第一行按钮 -->
  <view>
  <!-- 清除按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnReset">C</view>
    <!-- 删除按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnDel">DEL</view>
    <!-- 正负号切换按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnPosNeg">+/-</view>
    <!-- 除号按钮 (+:Positive,-:Negtive)-->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnOperate" data-val="÷">÷</view>
  </view>
  <!-- 第二行按钮 -->
  <view>
    <!-- 7按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="7"></view>
    <!-- 8按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="8">8</view>
    <!-- 9按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="9">9</view>
    <!-- 乘号按钮-->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnOperate" data-val="×">×</view>
  </view>
  <!-- 第三行按钮 -->
  <view>
   <!-- 4按钮 -->
   <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="4">4</view>
    <!-- 5按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="5">5</view>
    <!-- 6按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="6">6</view>
    <!-- 减号按钮-->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnOperate" data-val="-">-</view>
  </view>
  <!-- 第四行按钮 -->
  <view>
   <!-- 4按钮 -->
   <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="1">1</view>
    <!-- 5按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="2">2</view>
    <!-- 6按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="3">3</view>
    <!-- 减号按钮-->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnOperate" data-val="+">+</view> 
  </view>
  <!-- 第五行按钮 -->
  <view>
   <!-- 0按钮 -->
   <view hover-class="bg" hover-start-time="50" bind:tap="btnNum" data-val="0">0</view>
    <!-- 点按钮 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnDot" >.</view>
    <!-- 等号按钮 —— 进行计算 -->
    <view hover-class="bg" hover-start-time="50" bind:tap="btnCalculate">=</view>
  </view>
</view>

(三)实现页面样式

  • pages/index/inde.wxss文件

1、编写页面样式

  • 编写page样式
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

2、编写结果区域样式

  • 编写结果区域有三个样式类:resultresult-subresult-num
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 修改页面结构,暂时查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果之后,将页面结构改回去
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

3、编写按钮区域样式

(1)按钮区域总体样式
  • .btns选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
(2)按钮区域中每一行的样式
  • .btns > view选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
(3)按钮区域每一行中每个按钮的样式
  • .btns > view > view选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
(4)让0按钮跨两列
  • .btns > view:last-child > view:first-child选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
(5)清除按钮样式
  • .btns > view:first-child > view:first-child选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
(6)最后一列按钮样式
  • .btns > view > view:last-child选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
(7)按钮的盘旋样式类
  • bg选择器
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

4、查看页面样式源码

/**index.wxss**/
/* 页面样式 */
page {
  height: 100vh;
  display: flex;
  flex-direction: column;
  color: #555;
}

/* 结果区域样式 */
.result {
  flex: 1;  /* 垂直均分手机屏幕,因为flex-direction:column */
  background-color: #f3f6fe;
  position: relative;
}

/* 当前计算式样式 */
.result-sub {
  font-size: 52rpx;
  position: absolute;
  bottom: 16vh;
  right: 3vw;
}

/* 当前计算结果样式 */
.result-num {
  font-size: 100rpx;
  position: absolute;
  bottom: 3vh;
  right: 3vw;
}

/* 按钮区域样式 */
.btns {
  flex: 1;
  display: flex;
  flex-direction: column;
  font-size: 48rpx;
  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; /* 主轴居住 - 水平居中 */
}

/* 0按钮跨2列,view:first-child ~ view:nth-child(1) */
.btns > view:last-child > view:nth-child(1) {
  flex-basis: 50%;
}

/* 清除样式类 */
.btns > view:first-child > view:first-child {
  color: #f00;
}

/* 最后一列按钮样式 */
.btns > view > view:last-child {
  color: #fc8100;
}
	
/* 按钮的盘旋样式类 */
.bg {
  background: #eee;
}

(四)创建工具模块

微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序文章来源地址https://www.toymoban.com/news/detail-858239.html

  • 在项目更目录创建utils目录
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

1、数学模块 - math.js

  • utlis目录创建math.js文件
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
// 精准计算功能,用于解决JavaScript浮点数运算精度不准确的问题
module.exports = {
  // 加法
  add: function (a, b) {
    var r1, r2, m
    try {
      r1 = a.toString().split('.')[1].length
    } catch (e) {
      r1 = 0
    }
    try {
      r2 = b.toString().split('.')[1].length
    } catch (e) {
      r2 = 0
    }
    m = Math.pow(10, Math.max(r1, r2))
    return (a * m + b * m) / m
  },
  // 减法
  sub: function (a, b) {
    var r1, r2, m, n
    try {
      r1 = a.toString().split('.')[1].length
    } catch (e) {
      r1 = 0
    }
    try {
      r2 = b.toString().split('.')[1].length
    } catch (e) {
      r2 = 0
    }
    m = Math.pow(10, Math.max(r1, r2))
    // 动态控制精度长度
    n = (r1 >= r2) ? r1 : r2
    return ((a * m - b * m) / m).toFixed(n)
  },
  // 乘法
  mul: function (a, b) {
    var m = 0,
      s1 = a.toString(),
      s2 = b.toString()
    try {
      m += s1.split('.')[1].length
    } catch (e) {}
    try {
      m += s2.split('.')[1].length
    } catch (e) {}
    return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m)
  },
  // 除法
  div: function (a, b) {
    var t1 = 0,
      t2 = 0,
      r1, r2
    try {
      t1 = a.toString().split('.')[1].length
    } catch (e) {}
    try {
      t2 = b.toString().split('.')[1].length
    } catch (e) {}

    r1 = Number(a.toString().replace('.', ''))
    r2 = Number(b.toString().replace('.', ''))
    return (r1 / r2) * Math.pow(10, t2 - t1)
  }
}
  • 演示处理方式
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

2、计算模块 - calc.js

  • utils目录里创建计算模块 - calc.js
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
// 引入math.js模块,获取math对象
const math = require('./math.js')
// 计算器中的数字处理
module.exports = {
  target: 'num1', // 表示当前正在输入哪个数字,取num1或num2
  num1: '0', // 保存第1个数字
  num2: '0', // 保存第2个数字
  op: '', // 运算符,值可以是+、-、×、÷

  // 设置当前数字
  setNum(num) {
    this[this.target] = num
  },
  // 获取当前数字
  getNum() {
    return this[this.target]
  },
  // 切换到第2个数字
  changeNum2() {
    this.target = 'num2'
  },
  // 重置
  reset() {
    this.num1 = '0'
    this.num2 = '0'
    this.target = 'num1'
    this.op = ''
  },
  // 进行运算
  getResult() {
    let result = 0
    if (this.op === '+') {
      result = math.add(this.num1, this.num2)
    } else if (this.op === '-') {
      result = math.sub(this.num1, this.num2)
    } else if (this.op === '×') {
      result = math.mul(this.num1, this.num2)
    } else if (this.op === '÷') {
      result = math.div(this.num1, this.num2)
    }
    return result
  }
}

(五)实现页面逻辑

  • pages/index/index.js文件

1、引入calc.js文件

  • 引入calc.js文件,获取计算器对象
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

2、编写页面所需数据

  • data里包含两个数据:subnum
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

3、设置变量标识

  • 设置三个变量标识:numChangeFlagexecFlagresultFlag
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

4、编写数字按钮的点击事件处理函数

  • 数字按钮的点击事件处理函数 - btnNum()
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 编译之后,查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 如果不采用条件运算符来处理,就可能出现0打头的数字或一串0的数字
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

5、编写运算符按钮的点击事件处理函数

  • 运算符按钮的点击事件处理函数 - btnOperate()
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 重新编译,查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

6、修改数字按钮点击事件代码

  • 按了运算符按钮之后,应该输入第二个数字,但是它会接到第1个数字后面,而不是输入第2个数字,为了解决这个问题,我们要在数字按钮点击事件函数里进行判断。
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 重新编译,查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

7、编写等号按钮的点击事件处理函数

  • 等号按钮的点击事件处理函数 - btnCalculate()
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 重新编译,查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 显示算式和计算结果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

8、重置按钮(“C”按钮)的点击事件处理函数

  • 重置按钮的点击事件处理函数 - btnReset()
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 重新编译,查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 实现了重置按钮功能之后,我们可以进行多次计算

9、小数点按钮的点击事件处理函数

  • 小数点按钮的点击事件处理函数 - btnDot()
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序
  • 重新编译,查看预览效果
    微信小程序计算器math.js和calc.js文档,微信小程序,微信小程序,notepad++,小程序

(六)特殊情况处理

到了这里,关于微信小程序3-2 计算器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序————简易计算器

        点击页面数字按键可以计算简单的加减乘除数据运算。 页面显示   大概逻辑是当点第一次击数字键的时候要有个变量来存储这个点击的数,然后再来个记录点击运算符的变量,等要算的数全输入后,最后“=”后把前面输入的数字和运算符以字符串的形式显示在上屏幕上

    2024年02月17日
    浏览(184)
  • 微信小程序3-2 计算器

    1、创建项目 创建项目微信小程序项目 - 计算器 单击【确定】按钮 按照惯例做一些初始化工作 2、设置导航栏 在 app.json 文件设置 window 配置项 pages/index/index.wxml 文件 1、编写页面的整体结构 2、编写结果区域的结构 两行内容:第一行是当前的计算式,第二行是当前计算结果

    2024年04月26日
    浏览(42)
  • 微信小程序:计算器(附源码)

    index.js页面:( 需要引入一个精确计算 ) 精确计算的JS:accurate.js index.wxml页面: index.wxss页面: index.json: 百度网盘链接:https://pan.baidu.com/s/1PTXK0t44kRJ5onVk9leROw 提取码:4d2k

    2024年02月11日
    浏览(43)
  • 微信小程序如何制作简易计算器

    1、首先在浏览器中输入\\\"GitHub - dunizb/wxapp-sCalc: :speech_balloon:微信小程序版简易计算器demo,适合入门练手\\\"网址,输入完成后会进入到以下这个界面: 2、点击旁边绿色的按键 3、点击之后会有以下几个选项: 点击最后一行的Download ZIP,下载一个文件 然后解压一下这个文件,解压完

    2024年04月23日
    浏览(64)
  • 微信小程序如何写一个计算器

    构思:1.画一个计算界面            2.找一个计算器实现库            3.调用实现库进行计算 实现:1.画出计算器图标、界面  页面代码实现 样式代码 实现代码 库代码  

    2024年02月11日
    浏览(57)
  • 微信小程序案例3-2:计算器

    录屏演示多次计算 1、创建项目 创建微信小程序项目 - 计算器 单击【确定】按钮 按照惯例,做一些初始化工作 2、设置导航栏 在 app.json 设置 window 配置项 pages/index/index.wxml 文件 1、编写页面整体结构 2、编写结果区域结构 两行内容:第一行是当前的计算式,第二行是当前计算

    2024年04月12日
    浏览(100)
  • 房贷计算器微信小程序原生语言

    效果: 输入 300万 结果 还款明细 一共有3个页面 1、输入页面 2、结果页面 3、详情页面 index.wxml文件

    2024年04月28日
    浏览(65)
  • 微信小程序入门项目-做一个马马虎虎的计算器

    效果: 打开微信开发者工具,新建小程序 打开app.json设置顶部的标题和颜色 由于小程序不支持JavaScript的一些函数,比如evel(),所以代码变得复杂很多。 pagesindexindex.js的代码:

    2024年02月08日
    浏览(48)
  • uniapp写一个计算器用于记账(微信小程序,APP)

    提要:自己用uniapp写了一个记账小程序(目前是小程序),写到计算器部分,在网上找了别人写的计算器,大多数逻辑都是最简单的,都不能满足一个记账计算器的基本逻辑。与其在网上找来找去,还不如自己多捣鼓捣鼓。 https://gitee.com/yapplee/kog-calculator.git 贴部分主要代码,

    2024年02月05日
    浏览(48)
  • 用javascript做一个计算器,用js做一个计算器代码

    大家好,给大家分享一下怎么用javascript做一个简单的计算器,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 页面布局设计(HTML+CSS)   由于在之前的博客中有对html和css进行详细的讲解,再次就不多叙述,直接上代码。因为js中用到了JQuery选择器所以在

    2024年02月04日
    浏览(68)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包