用JS写一个计算器(兼容手机端)

先看成果:
1.PC端

2.

首先确立html,有哪些东西我们要知道。布局大概的样子在心里有个数

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0"><title>瑞雪的计算器</title>
    <link rel="stylesheet" href="css/index.css">
    <script src="js/index.js" charset="utf-8"></script>
  </head>
  <body>
    <header>
        <li>LRX</li>temmo
    </header>
    <div class="calculator_box">
      <!-- //显示屏 -->
      <div class="display" id="dispaly">

      </div>
      <!-- 功能条 -->
      <div class="function">
        <button type="button" name="button" onclick="empty()">清空</button>
        <button type="button" name="button" onclick="back()">撤回</button>
        <div class="music">

        </div>
      </div>
      <div class="content">
      <!-- 数字框 -->
      <div class="number_box">
        <table>
          <tr>
            <td onclick="calculator()">9</td>
            <td onclick="calculator()">8</td>
            <td onclick="calculator()">7</td>
          </tr>
          <tr>
            <td onclick="calculator()">6</td>
            <td onclick="calculator()">5</td>
            <td onclick="calculator()">4</td>
          </tr>
          <tr>
              <td onclick="calculator()">3</td>
              <td onclick="calculator()">2</td>
              <td onclick="calculator()">1</td>
          </tr>
          <tr>
            <td colspan="2" onclick="calculator()">0</td>
            <td onclick="calculator()">.</td>
          </tr>
        </table>
      </div>
      <!-- 加减框 -->
      <div class="calculator">
        <table>
          <tr>
            <td onclick="calculator()">+</td>
            <td onclick="calculator()">-</td>
          </tr>
          <tr>
            <td onclick="calculator()">*</td>
            <td onclick="calculator()">/</td>
          </tr>
        </table>
        <button type="button" name="button" id="r_out" onClick="resultscalcaulte()">=</button>
      </div>

    </div>

    </div>
    <footer><img src="img/cat4.png" ></footer>
  </body>
</html>

不过现在样式还很乱,不适合继续写JS所以,我开始设计样式,先在纸上画一画大概的样子............
写CSS代码:

body{
  margin: 0;
  background:#d67f5e;
}
header{
  text-align: center;
  background: rgb(121, 118, 138);
  margin-bottom: 50px;
  height: 40px;
  line-height: 40px;
  color: #fff;
}

header li{
  text-align: center;
  width: 10%;
  background: rgb(148, 75, 75);
  border-top-right-radius: 20px;
  border-bottom-right-radius: 20px;

}
header li:hover{
  position: relative;
  margin-top: -34px;
  transition: 0.5s;
}

table{
  text-align: center;
}
.calculator_box{
  width: 450px;
  height: 420px;
  background: rgb(112, 124, 152);
  margin: 0 auto;
  padding: 15px 0;
  border: 7px double #b0b0b0;
  border-radius: 30px;
  background-image: linear-gradient(to bottom, #5b7896, #00587b 32%);
  box-shadow: 0 3px 33px 8px rgba(22, 6, 6, 0.4), inset 0 0 28px 3px #4d4952;

}
.display{
  width: 90%;
  margin: 0 auto;
  height: 70px;
  background: rgb(204, 194, 192);
  border-radius: 8px;
  background-color: #3f3c3b;
  box-shadow: 0 0 0px 1px #252829;
  font-size: 40px;
  color:#ffffff;
  text-align: right;
  line-height: 70px;
  padding-right: 10px;
}
.function button{
  height: 30px;
  width: 60px;
  margin: 6px;
  border-radius: 15px;
  background-color: #b58068;
  color: white;
  text-shadow: 0 0 18px #2f2402;
  box-shadow: 0 0 0px 1px #4d4c51;
}
.number_box,.calculator,.music{
  display: inline-block;
}
.content{
  width: 90%;
  margin: 0 auto;
  position: relative;
}

.function{
  margin: 10px auto;
  width: 90%;
  margin: 13 auto;
  position: relative;
}
.music{
  border-top: 2px double #3c94c0;
  border-bottom:2px double #3c94c0;
  width: 250px;
  height: 5px;
  border-radius: 3px;
}
.number_box tr,.calculator tr{
  width: inherit;
}
.number_box td{
  width: 98px;
  height: 60px;
  background: rgb(235, 232, 233);
  border-radius: 5px;
  box-shadow: inset 0 0 7px 3px #c9c8c8;
}
.number_box td:active{
    background:#6c6a6a;
    box-shadow: inset 0 0 0px 0px #c9c8c8;
    transition: 0.5s;
    color: #fff;
}
.calculator{
  width: 88px;
  position: relative;
  top: -47px;
  text-align: center;
  font-size: x-large;
}

.calculator td{
  width: 44px;
  height: 72px;
  border-radius: 3px;
  text-shadow: 0px 0px 10px #1f1f1f;
  background-color: rgb(185, 185, 185);
  box-shadow: inset 0 0 8px 2px #9a9a9a;
  color: #ffffff;
}
.calculator td:active{
  box-shadow: inset 0 0 0px 0px ;
  background-color:#9c1414;
  transition: 0.5s;
}
#r_out{
  width: 86px;
  height: 100px;
  border-radius: 8px;
  margin-top: 2px;
  color: aliceblue;
  background-color: #b55f5f;
  text-shadow: 0 0 12px black;
  box-shadow: inset 0 0 20px 3px #876161;
}
#r_out:active{
  background-color:#55595e;
  box-shadow: inset 0 0 0px 0px;
  transition: 0.5s;
}
footer img{
  width: 302px;
  height: 267px;
}
footer img:hover{
  margin-right: -150px;
  transition: 0.5s

}

@media only screen and (max-width: 500px) {

    .calculator_box{
      width: 95%;
      height: 390px;
      margin: 0 auto;
    }
    .number_box td{
      width: 70px;
      height: 57px;
    }
    .calculator{
      margin-top: -47px;
    }
    .calculator td{
      width: 44px;
      height: 66px;
    }
    .music{
      width: 165px;
    }
    .content {
      width: 81%;
      margin: 0 auto;
      position: relative;
    }
    header li{
      border-radius: 0px;
      border-bottom-right-radius: 20px;
      border-bottom-left-radius: 20px;

    }
}

@media only screen and (max-width: 400px){
  .calculator_box{
    width: 95%;
    height: 390px;
    margin: 0 auto;
  }
  .number_box td{
    width: 57px;
    height: 57px;
  }
  .calculator{
    margin-top: -47px;
    margin-left: 3px;
  }
  .calculator td{
    width: 44px;
    height: 66px;
  }
  .music{
    width: 154px;
  }

}
@media only screen and (max-width: 360px){
  .content {
    width: 89%;
  }
  .calculator_box{
    width: 95%;
    height: 390px;
    margin: 0 auto;
  }
  .number_box td{
    width: 64px;
    height: 57px;
  }
  .calculator{
    display: inline-block;
    margin-top: -47px;
    margin-left: 2px;
  }
  .calculator td{
    width: 44px;
    height: 66px;
  }
  .music{
    width: 154px;
  }
}

@media only screen and (max-width: 320px){
  .number_box td{
    width: 53px;
    height: 57px;
  }

}

用了好些个媒体查询!手机端必须做好,因为计算器,手机用的比较多,所以响应式必须做好

最后就是JS代码啦~

window.onload = function() {
     FastClick.attach(document.body);
 }
var display;
var result="";
var calresults;
display=document.getElementById("dispaly");
function calculator(){
  result+=event.srcElement.innerText;
  // alert(result);
  dispaly.innerText=result;

}
function resultscalcaulte(){
  var display=document.getElementById("dispaly");
  calresults=eval(result);
  display.innerText=calresults;
}
function empty(){
  result="";
  dispaly.innerText=result;
}
function back(){
  if (result!="") {
    result=result.substring(0, result.length - 1);
    dispaly.innerText=result;
  }
}

然后就把计算器发给小伙伴们用吧!
不过在手机上按键会有延迟~正在解决ing

原文地址:https://www.cnblogs.com/10manongit/p/12217735.html

时间: 2024-10-14 05:21:06

用JS写一个计算器(兼容手机端)的相关文章

用JS写一个计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

《JS实现复制内容到剪贴板功能,可兼容所有PC浏览器,不兼容手机端》

前记:本来原生的JS是有提供一个函数来实现这个功能(window.clipboardData),但是很遗憾,这个函数仅仅支持IE和FF浏览器,所以基本用处不大.下边介绍的是一个第三方插件库(ZeroClipboard.js). ZeroClipboard.js在Git上的地址为:https://github.com/zeroclipboard/zeroclipboard 注意:此js库不支持兼容手机端(包括Android.IOS),仅支持PC端浏览器. 第一步:将插件库引入到工程中. 把Git上

web前端课程技术内容之如何做一个简单的手机端页面的翻页

[如何做一个简单的手机端页面的翻页] 第一步:创建移动端页面内 HTML + CSS [注]可用弹性布局 但需要注意的是 外层盒子的定位 第二步: 思考问题 要实现怎样的效果? 1. 手指滑动时触发事件[左右]两个方向 2.点击footer部分的下标实现切换效果 3.点击footer部分的下标实现下标颜色变化 第三步:编写JS代码 添加监听事件 document.addEventListener('DOMContentLoaded',function(){ 创建一个数组用于调用数组属性值 或者

用VBA写一个计算器

着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始====================================================== 之所以 要有今天这样一篇博客是因为. 之前领导让找几组数据.从excel表格里面. 要求是 主号码 一致,副号码 一致,名称为 XXX 的 项目发生变化的数据 需要被找到. 这样的 项目 有 11个. 我找的真的是眼要花. 变动前

分享:计算机图形学期末作业!!利用WebGL的第三方库three.js写一个简单的网页版“我的世界小游戏”

这几天一直在忙着期末考试,所以一直没有更新我的博客,今天刚把我的期末作业完成了,心情澎湃,所以晚上不管怎么样,我也要写一篇博客纪念一下我上课都没有听,还是通过强大的度娘完成了我的作业的经历.(当然作业不是百度来的,我只是百度了一些示例代码的意思,怎么用!算了,越解释万一越黑呢!哈哈O(∩_∩)O哈哈~) ----------------------------------------------------------------分界线------------------------------

利用面向对象写一个计算器

本文参考了程杰的<大话设计模式>,使用C#语言利用面向对象的模式来写一个计算器. 如果是我本人来写计算器,也就加减乘除的话,估计我会全部写进控制台里面,写4个if语句出来......或者我会利用switch,但是这样的效果都不好,有更好的方法,就是如下所示的代码啦: 先定义一个Operation类,主要实现运算框架: class Operation { public double Number1 { get; set;} public double Number2 { get; set; }

如何写一个计算器

考虑这样一个问题,给定一个字符串,"1+1+(3+4)-2*3+8/2",如何将它转化为如下形式, "1+1=2" "3+4=7" "2+7=9" "2*3=6" "9-6=3" "8/2=4" "3+4=7" 换句话说,就是如何将字符串按照四则运算计算出来,如何写一个计算器.拿java来举例,并且为了简单,我们只考虑个位数.这个过程大概分为这几个

前端用js写一个函数实现KB、MB、GB、TB单位转换

需求:用js写一个函数实现KB.MB.GB.TB单位转换 实现思路: 当函数参数值小于等于1000时,参数除以1000,即可得到最小单位kb,赋值给变量_integer:当_integer值大于1000时,kb值除以1000,即可得到mb,赋值给变量_integer:以此类推. 将单位保存在数组中, 将转换后的值与单位进行拼接即可得到转换后的单位. 代码展示: <!DOCTYPE html> <html lang="en"> <head> <m

HTML+JS 写一个 个人博客

HTML+JS 写一个 个人博客(初学版) HTML+JS 写一个 个人博客(初学版) 自己琢磨了两三天,算是把HTML入门了吧,然后就想着用这点知识写一个个人主页,然后一下午的时间写完了. 先不看代码,说说思路: 第一步:就是构思,一个网页的展示怎么才好看?!!站在一个老男人的角度,那远远是不能的,,, 1.标题 2.菜单栏(加个超链接) 3.展示页面(图片轮播) 第二步:小标题展示页面. 第三步:代码实现.(说了一堆废话)  代码 Jscript实现图片轮播.(很简单,一看就懂) <scri