likes
comments
collection
share

高仿苹果计算器

作者站长头像
站长
· 阅读数 28

高仿苹果计算器

先上图吧,今天要做的是一个高仿苹果计算器,做出来的效果如上图所示。

 <!-- 计算器按钮 -->
  <view class="button-container">
  
    <view class="row">
      <button class="number">C</button>
      <button class="number" bindtap="tapAbsolute">+/_</button>
      <button class="number" bindtap="tapPercent">%</button>
      <button class="operator {{operator == '/' ? 'optActive' : ''}}" data-value="/" bindtap="tapOperator">÷</button>
    </view>
  
    <view class="row">
      <button class="number" data-value="7" bindtap="tapNumber">7</button>
      <button class="number" data-value="8" bindtap="tapNumber">8</button>
      <button class="number" data-value="9" bindtap="tapNumber">9</button>
      <button class="operator {{operator == '*' ? 'optActive' : ''}}" data-value="*" bindtap="tapOperator">×</button>
    </view>
  
    <view class="row">
      <button class="number" data-value="4" bindtap="tapNumber">4</button>
      <button class="number" data-value="5" bindtap="tapNumber">5</button>
      <button class="number" data-value="6" bindtap="tapNumber">6</button>
      <button class="operator {{operator == '-' ? 'optActive' : ''}}" data-value="-" bindtap="tapOperator">-</button>
    </view>
  
    <view class="row">
      <button class="number" data-value="1" bindtap="tapNumber">1</button>
      <button class="number" data-value="2" bindtap="tapNumber">2</button>
      <button class="number" data-value="3" bindtap="tapNumber">3</button>
      <button class="operator {{operator == '+' ? 'optActive' : ''}}" data-value="+" bindtap="tapOperator">+</button>
    </view>
  
    <view class="row">
      <button class="number large" data-value="0" bindtap="tapNumber">0</button>
      <button class="number" data-value="." bindtap="tapNumber">.</button>
      <button class="operator" bindtap="tapCalculate">=</button>
    </view>

  </view>

首先看一下他的整体布局,从上往下,从左往右看,其实它就是一个个的按钮而已。然后分成number数字按钮,operator功能操作按钮。

 // 数字
  tapNumber: function(e) {
    // console.log('数字按钮:', e);
    const num = e.currentTarget.dataset['value'];
    if (num) {
      this.data.result += num;

      const fmtNumber = StringUtil.formatNumber(this.data.result);

      // 限制最大长度
      if (fmtNumber.length > 11)
        return;
 
      this.setData({
        result: fmtNumber
      });
    } else {
      console.warn('对应的 data-value 属性异常!');
    }
  },

这是点击按钮的响应。

 // 加减乘除
  tapOperator: function(e) {
    console.log('tap: ', e);
    const opt = e.currentTarget.dataset['value'];
    if (opt) {
      this.setData({
        operator: opt
      });
    }
  },

这是点击操作符之后的响应。也就是进行加减乘除操作。

总体来说实现并不是太难。想要学习微信小程序的可以关注公众号:诗一样的代码,一起探讨一下。

转载自:https://juejin.cn/post/7004640980649394184
评论
请登录