用Javascript写一个计算器小项目

哈喽,朋友们国庆节快乐~
今天用200多行js代码来搞一个计算器玩玩

静态页面:

<div class="toggleBtn"></div>
  <div class="calculator">
    <div class="buttons">
      <h2 id="value"></h2>
      <span id="clear">Clear</span>
      <span>/</span>
      <span>*</span>
      <span>7</span>
      <span>8</span>
      <span>9</span>
      <span>-</span>
      <span>4</span>
      <span>5</span>
      <span>6</span>
      <span id="plus">+</span>
      <span>1</span>
      <span>2</span>
      <span>3</span>
      <span>0</span>
      <span>00</span>
      <span>.</span>
      <span id="equal">=</span>
    </div>
  </div>

js代码:

  <script>
    let buttons =  document.querySelector(".buttons");
    let btn = buttons.querySelectorAll("span");
    let value = document.getElementById("value");
    let toggleBtn = document.querySelector('.toggleBtn')
    let body = document.querySelector('body')

    for(let i=0; i<btn.length; i++){
      btn[i].addEventListener("click", function () { 
            
        if(this.innerHTML=="="){
          value.innerHTML = eval(value.innerHTML); 
        }else{
            if(this.innerHTML=='clear'){
              value.innerHTML = "";
            }
            else{
              value.innerHTML += this.innerHTML;
            }
          }
      });
    }

    toggleBtn.onclick = function(){
      body.classList.toggle('dark')
    }
</script>

样式代码:

  <style>
                *
        {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
        font-family: consolas;
        }
        body 
        {
        display: flex;
        justify-content: center;
        align-items: center;
        min-height: 100vh;
        background: #edf1f4;
        }
        .calculator
        {
        position: relative;
        width: 340px;
        padding: 20px;
        border-radius: 20px;
        box-shadow: 15px 15px 20px rgba(0,0,0,0.1),
        -15px -15px 20px #fffb;
        }
        .calculator .buttons
        {
        position: relative;
        display: grid;
        }
        .calculator .buttons #value
        {
        position: relative;
        left: 8px;
        grid-column: span 4;
        height: 100px;
        line-height: 100px;
        padding: 0 20px;
        border-radius: 10px;
        text-align: end;
        font-size: 2em;
        margin-bottom: 12px;
        color: #5166d6;
        overflow: hidden;
        font-weight: 500;
        width: calc(100% - 16px);
        user-select: none;
        box-shadow: inset 5px 5px 10px rgba(0,0,0,0.1),
        inset -5px -5px 20px #fff;
        }
        .calculator .buttons span 
        {
        position: relative;
        display: flex;
        justify-content: center;
        align-items: center;
        padding: 10px;
        border-radius: 10px;
        margin: 10px;
        min-width: 40px;
        font-size: 1.2em;
        color: #666;
        font-weight: 700;
        border: 2px solid #edf1f4;
        box-shadow: 5px 5px 10px rgba(0,0,0,0.1),
        -5px -5px 10px #fff;
        cursor: pointer;
        user-select: none;
        }
        .calculator .buttons span:active 
        {
        color: #f44336;
        box-shadow: inset 5px 5px 10px rgba(0,0,0,0.1),
        inset -5px -5px 10px #fff;
        }
        .calculator .buttons span#clear
        {
        grid-column: span 2;
        background: #f44336;
        border: 2px solid #edf1f4;
        color: #fff;
        }
        .calculator .buttons span#plus
        {
        grid-row: span 2;
        background: #31a935;
        border: 2px solid #edf1f4;
        color: #fff;
        }
        .calculator .buttons span#equal
        {
        grid-row: span 2;
        background: #2196f3;
        border: 2px solid #edf1f4;
        color: #fff;
        }
        .calculator .buttons span#clear:active,
        .calculator .buttons span#plus:active,
        .calculator .buttons span#equal:active
        {
        box-shadow: 5px 5px 10px rgba(0,0,0,0.1),
        -5px -5px 10px #fff,
        inset 5px 5px 10px rgba(0,0,0,0.1);
        }
        .toggleBtn
        {
        position: fixed;
        top: 20px;
        right: 20px;
        background: #555;
        width: 20px;
        height: 20px;
        border-radius: 50%;
        cursor: pointer;
        border: 2px solid #edf1f4;
        box-shadow: 5px 5px 10px rgba(0,0,0,0.1),
        -5px -5px 10px #fff;
        }
        .dark .toggleBtn
        {
        background: #edf1f4;
        border: 2px solid #333;
        box-shadow: 5px 5px 10px rgba(0,0,0,0.5),
        -5px -5px 10px rgba(255,255,255,0.25);
        }
        .dark 
        {
        background: #282c2f;
        }
        .dark .calculator
        {
        background: #33393e;
        box-shadow: 15px 15px 20px rgba(0,0,0,0.25),
        -15px -15px 20px rgba(255,255,255,0.1);
        }
        .dark .calculator #value 
        {
        color: #eee;
        box-shadow: inset 5px 5px 10px rgba(0,0,0,0.5),
        inset -5px -5px 20px rgba(255,255,255,0.1);
        }
        .dark .calculator .buttons span 
        {
        color: #eee;
        border: 2px solid #333;
        box-shadow: 5px 5px 10px rgba(0,0,0,0.25),
        -5px -5px 10px rgba(255,255,255,0.1);
        }
        .dark .calculator .buttons span:active 
        {
        box-shadow: inset 5px 5px 10px rgba(0,0,0,0.25),
        inset -5px -5px 10px rgba(255,255,255,0.1);
        }
        .dark .calculator .buttons span#clear,
        .dark .calculator .buttons span#plus,
        .dark .calculator .buttons span#equal
        {
        border: 2px solid #333;;
        }
        .dark .calculator .buttons span#clear:active,
        .dark .calculator .buttons span#plus:active,
        .dark .calculator .buttons span#equal:active
        {
        box-shadow: inset 5px 5px 10px rgba(0,0,0,0.1);
        }
    </style>

最终的运行效果:
在这里插入图片描述

好的,下面是一个简单的微信小程序计算器代码示例: 1. 在微信开发者工具中创建一个新的小程序项目。 2. 在项目结构中找到 app.json 文件,在其中添加以下代码: ```json { "pages": [ "pages/index/index" ], "window": { "navigationBarTitleText": "计算器" } } ``` 这里我们只创建了一个页面 index,用于显示计算器界面。 3. 在 pages 目录下创建一个名为 index 的新目录,并在其中创建 index.wxml、index.js 和 index.wxss 三个文件。 4. 在 index.wxml 中添加以下代码: ```html <view class="container"> <view class="result">{{result}}</view> <view class="row"> <text class="button" bindtap="onTap" data-value="7">7</text> <text class="button" bindtap="onTap" data-value="8">8</text> <text class="button" bindtap="onTap" data-value="9">9</text> <text class="button" bindtap="onTap" data-value="/">÷</text> </view> <view class="row"> <text class="button" bindtap="onTap" data-value="4">4</text> <text class="button" bindtap="onTap" data-value="5">5</text> <text class="button" bindtap="onTap" data-value="6">6</text> <text class="button" bindtap="onTap" data-value="*">×</text> </view> <view class="row"> <text class="button" bindtap="onTap" data-value="1">1</text> <text class="button" bindtap="onTap" data-value="2">2</text> <text class="button" bindtap="onTap" data-value="3">3</text> <text class="button" bindtap="onTap" data-value="-">-</text> </view> <view class="row"> <text class="button" bindtap="onTap" data-value="0">0</text> <text class="button" bindtap="onTap" data-value=".">.</text> <text class="button" bindtap="onTap" data-value="=">=</text> <text class="button" bindtap="onTap" data-value="+">+</text> </view> <view class="row"> <text class="button clear" bindtap="onClear">清除</text> </view> </view> ``` 这里我们使用了微信小程序的基础组件 view 和 text 来构建计算器界面,同时使用了 data-value 属性来存储每个按键的值。 5. 在 index.js 中添加以下代码: ```javascript Page({ data: { result: '0', current: '0', operator: '', operand: '' }, onTap: function(event) { let value = event.currentTarget.dataset.value; if (value === '+' || value === '-' || value === '*' || value === '/') { // 操作符按键 this.setData({ current: '0', operator: value, operand: this.data.current }); } else if (value === '=') { // 等号按键 let a = parseFloat(this.data.operand); let b = parseFloat(this.data.current); let result; switch (this.data.operator) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; } this.setData({ result: result.toString(), current: result.toString(), operator: '', operand: '' }); } else if (value === '.') { // 小数点按键 if (this.data.current.indexOf('.') === -1) { this.setData({ current: this.data.current + '.' }); } } else if (value === '0' && this.data.current === '0') { // 避免出现多个前导零 return; } else { // 数字按键 if (this.data.current === '0') { this.setData({ current: value }); } else { this.setData({ current: this.data.current + value }); } } }, onClear: function() { // 清除按键 this.setData({ result: '0', current: '0', operator: '', operand: '' }); } }) ``` 这里我们使用了 Page() 函数来创建一个页面对象,其中 data 对象用于存储计算器的状态,onTap() 函数用于处理用户按键事件,onClear() 函数用于清除计算器状态。 6. 在 index.wxss 中添加以下代码: ```css .container { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; font-size: 32rpx; background-color: #f2f2f2; } .result { width: 100%; padding: 16rpx; text-align: right; background-color: #fff; } .row { display: flex; flex-direction: row; justify-content: space-between; width: 100%; } .button { flex: 1; display: flex; align-items: center; justify-content: center; height: 96rpx; margin: 8rpx; background-color: #fff; border: 1px solid #ddd; border-radius: 8rpx; color: #333; } .clear { background-color: #ff4d4f; color: #fff; } ``` 这里我们使用了 flex 布局来构建计算器界面,同时使用了 rpx 单位来实现自适应布局。 7. 在微信开发者工具中预览小程序,即可看到一个简单的计算器界面。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值