js+css实现计算器功能

本文实例为大家分享了js+css实现计算器功能的具体代码,供大家参考,具体内容如下

目前仅实现了最基础的运算功能

(因为是js的运算内核,有些小数点计算并不准确,懒得去做去小数点后几位的操作)

一、最终呈现的视图效果

二、思路

代码量有点多,没办法。一开始只是无聊随便写的,没有构思,越写到后面越冗杂,自己又不想重新推翻去写。

三、代码逻辑

<style>         * {             margin: 0;             padding: 0;         }         .content {             width: 350px;             height: 530px;             position: relative;             background-color: #E6E6E6;             border: 1px solid #000;             margin: 100px auto;             /* overflow: hidden; */             box-shadow: 0px 0px 10px #888888;         }         .header {             height: 30px;             line-height: 30px;             padding-left: 10px;         }         .header span {             float: left;             font-weight: 600;             font-size: 12px         }         .tabNav {             height: 28px;             line-height: 28px;             font-size: 12px;             padding: 0 10px;             background-color: #fff;             border-radius: 6px;             position: absolute;             left: 53px;             top: 2px;             box-shadow: 0px 0px 10px #888888;             display: none;         }         .tabNav2 {             height: 28px;             line-height: 28px;             font-size: 12px;             padding: 0 10px;             background-color: #fff;             border-radius: 6px;             position: absolute;             left: -50px;             top: -30px;             box-shadow: 0px 0px 10px #888888;             display: none;         }         .pattern {             display: flex;             flex-wrap: nowrap;             justify-content: space-between;         }         .pLeft {             display: flex;         }         .pLeft>div,         .pRight {             width: 40px;             height: 40px;             line-height: 40px;             text-align: center;         }         .pLeft>div>span,         .pRight>span {             display: inline-block;             width: 12px;             height: 12px;             border: 1px solid #000;         }         #allView {             width: 40px;             height: 30px;             line-height: 30px;             text-align: center;             display: none;         }         #allView span {             display: inline-block;             width: 12px;             height: 12px;             border: 1px solid #000;         }         .Mstyle {             display: flex;             flex-wrap: nowrap;             justify-content: space-between;             height: 32px;             line-height: 32px;             font-size: 12px;             font-weight: bold;             color: #B8B8B8;             margin-bottom: 2px;         }         .Mstyle span {             width: 15.66%;             text-align: center;         }         .special {             color: #000;         }         .list {             list-style: none;             /* background-color: #333; */             width: 99%;             height: 275px;             margin: 0 auto;             display: flex;             flex-wrap: wrap;             justify-content: space-around;         }         ul li {             /* float: left; */             width: 24.6%;             height: 19%;             margin-bottom: 1.5px;         }         button {             border: none;             width: 100%;             height: 100%;             background-color: #FAFAFA;         }         /*取消button点击的默认样式*/         button:focus {             border: 0 none;             outline: none;         }         .view {             height: 100px;             /* line-height: 100px; */             display: flex;             flex-wrap: wrap;             text-align: right;             padding-right: 10px;         }         #calculation {             font-size: 14px;             color: #777;             width: 100%;         }         #val {             font-size: 43px;             font-weight: bold;             width: 100%;         }         .btn {             background-color: #8abae0;         }         /* hover不同颜色值设置 */         .colorChange {             border: 1px solid #E6E6E6;         }         .newColor {             background-color: #F0F0F0;         }         .ortherColor {             font-weight: bold;             font-size: 18px;         } </style> <div class="content">         <div class="header">             <span>计算器</span>         </div>         <div class="tabNav">             保持在顶部 (Alt + Up)         </div>         <div class="tabNav2">             返回全视图 (Alt + Down)         </div>         <div class="pattern">             <div class="pLeft">                 <div class="colorChange">                     <span></span>                 </div>                 <div style="width:45px;font-size: 20px;font-weight: bold;">标准</div>                 <!-- 懒得去找图片,手动画个正方形代替 -->                 <div class="colorChange" id="keep">                     <span></span>                 </div>             </div>             <!-- 懒得去找图片,手动画个正方形代替 -->             <div class="pRight colorChange">                 <span></span>             </div>         </div>         <!-- 全视图显示的操作按钮 -->         <div class="colorChange" id="allView" style="width: 40px;height:30px;line-height: 30px;text-align:center;">             <span></span>         </div>         <div class="view">             <span id="calculation"></span>             <span id='val'>0</span>         </div>         <div class="Mstyle">             <span>MC</span>             <span>MR</span>             <span class="special colorChange">M+</span>             <span class="special colorChange">M-</span>             <span class="special colorChange">MS</span>             <span>M-</span>         </div>         <ul class="list">             <li><button class="newColor">%</button></li>             <li><button class="newColor">CE</button></li>             <li><button id="c24" class="newColor">C</button></li>             <li><button class="newColor">无效</button></li>             <li><button class="newColor">1/x</button></li>             <li><button class="newColor">x²</button></li>             <li><button class="newColor">x^</button></li>             <li><button class="newColor" id="except">÷</button></li>             <li><button value="7" class="ortherColor">7</button></li>             <li><button value="8" class="ortherColor">8</button></li>             <li><button value="9" class="ortherColor">9</button></li>             <li><button id="ride" class="newColor">x</button></li>             <li><button value="4" class="ortherColor">4</button></li>             <li><button value="5" class="ortherColor">5</button></li>             <li><button value="6" class="ortherColor">6</button></li>             <li><button id="reduce" class="newColor">-</button></li>             <li><button value="1" class="ortherColor">1</button></li>             <li><button value="2" class="ortherColor">2</button></li>             <li><button value="3" class="ortherColor">3</button></li>             <li><button id="add" class="newColor">+</button></li>             <li><button style="font-size:18px;">+/-</button></li>             <li><button value="0" class="ortherColor">0</button></li>             <li><button id="spot" style="font-size: 20px;">.</button></li>             <li><button class="btn" id="equal">=</button></li>         </ul> </div> <script src="https://code.jquery.com/jquery-latest.min.js"></script>     <script>         // 鼠标事件         $('.colorChange').hover(function () {             console.log(window.event.clientX)             console.log(window.event.clientY)             if (this.id == 'keep') {                 $('.tabNav').fadeIn(700)             } else if (this.id == 'allView') {                 $('.tabNav2').fadeIn(700)             }             $(this).css('background-color', '#d7d7d7')             $(this).css('border', '1px solid #999')         }, function () {             $('.tabNav').fadeOut(100)             $('.tabNav2').fadeOut(100)             $(this).css('background-color', '#E6E6E6')             $(this).css('border', '1px solid #E6E6E6')         })         // 全视图操作         $('#allView').click(function () {             $('.header,.pattern,.Mstyle').show()             $('#allView').hide()             $('.content').css('height', '530px')         })         $("#keep").click(function () {             $('.header,.pattern,.Mstyle').hide()             $('#allView').show()             $('.content').css('height', '456px')         })         // 所有按钮的hover         $('button').hover(function () {             $(this).css('background-color', '#d7d7d7')             $(this).css('border', '1px solid #999')         }, function () {             if ($(this).attr('class') == 'newColor') {                 $(this).css('background-color', '#F0F0F0')                 $(this).css('border', 'none')             } else {                 $(this).css('background-color', '#fff')                 $(this).css('border', 'none')             }         })         // 鼠标放在等于号的事件         $(".btn").hover(function () {             $(".btn").css("background-color", "#4599db");         }, function () {             $(".btn").css("background-color", "#8abae0");         });     </script>     <script>         // 获取 dom         var listText = $('#calculation');         var inputValue = $('#val');         // 运算的第一个值         var first = 0;         // 运算的第二个值         var last = 0;         // 用来区分为第一个还是第二个赋值         var panduan = '1';         // 记录运算的符号         var sum = '';         // 记录是否为小数点状态         var isXiao = false;         // 用来阻止用户多次点击小数点         var dianNum = 0;         // 用来记录是否进行过计算         var isjisuan = false;         // 所有按钮的点击事件         $("button").click(function () {             var id = this.id             // 区分数字和运算符号             if (this.value) {                 // 判断是否是经过计算后的                 if (!isjisuan) {                 } else {                     inputValue.text(0)                     listText.text(0)                     // inputValue.value = 0                     first = 0;                     last = 0;                     sum = '';                     panduan = '1';                     isXiao = false;                     dianNum = 0;                     isjisuan = false                 }                 // 判断是否是小数                 if (isXiao) {                     // 判断是否为第一个值                     if (panduan == '1') {                         if (first && first.indexOf('.') == -1) {                             first = first + '.' + this.value                         } else {                             first += this.value                         }                         inputValue.text(Number(first))                     } else {                         if (last && last.indexOf('.') == -1) {                             last = last + '.' + this.value                         } else {                             last += this.value                         }                         inputValue.text(Number(last))                         inputValue.value = Number(last)                     }                 } else {                     // 判断是否为第一个值                     if (panduan == '1') {                         first += this.value                         inputValue.text(Number(first))                     } else {                         last += this.value                         inputValue.text(Number(last))                     }                 }             } else {                 isjisuan = false                 // 判断具体是哪个运算符号的点击事件                 if (id == 'equal') { // 等于事件                     if (last) {                         isjisuan = true                         listText.text(Number(first) + sum + Number(last) + '=   ')                         inputValue.text(eval(Number(first) + sum + Number(last)))                     } else {                         inputValue.text(Number(first))                     }                     first = inputValue.text()                     last = 0                     panduan = '1';                     sum = '';                 } else if (id == 'add') { // 相加                     operation('+')                 } else if (id == 'reduce') { // 相减                     // sum = '-'                     operation('-')                 } else if (id == 'ride') { // 相乘                     // sum = '*'                     operation('*')                 } else if (id == 'except') { // 相除                     // sum = '/'                     operation('/')                 } else if (id == 'spot') {                     // 阻止多次点击小数点                     if (dianNum >= 1) {                         return                     }                     isXiao = true                     dianNum = 1                 } else if (id == 'c24') { // 清除所有的东西                     inputValue.text(0)                     listText.text(0)                     // inputValue.value = 0                     first = 0;                     last = 0;                     sum = '';                     panduan = '1';                     isXiao = false;                     dianNum = 0;                     isjisuan = false                 }             }         })         // 用来处理多次点击运算符号的函数         function operation(sysbols) {             // 判断 值是否存在小数,若存在清一下小数点点击次数的状态             dianNum = 0             // 清一下为小数赋值的状态             isXiao = false             panduan = '2'             // 用来区分是否是连续点击运算符号             if (!last) {                 listText.text(Number(first) + sysbols)             } else {                 // 用来识别 储存运算符号的变量                 console.log(listText.text(), '1')                 first = eval(Number(first) + sum + Number(last))                 last = 0                 inputValue.text(first)                 listText.text(first + sysbols)             }             sum = sysbols         } </script>

推荐阅读

    js设置div的边框|怎样给div设置边框

    js设置div的边框|怎样给div设置边框,,1. 怎样给div设置边框1、首先新建一个html文件,输入基本的内容,这里设置一个div,并把它的class设置为de

    js设置样式|js设置样式类

    js设置样式|js设置样式类,,js设置样式    javascript改变CSS样式分为局部和全局,分别如下:  一、局部改变样式    有三种方法:直接

    js用代码实现简单购物车

    js用代码实现简单购物车,,图: 选择所有按钮: 复制代码代码如下所示: 选择 笔记本电脑:3000元 笔记本电脑:3000元 笔记本电脑:3000元 笔记本电脑:3

    js设置背景色|js设置颜色

    js设置背景色|js设置颜色,,js设置背景色首先通过js定位到div的子元素,再通过setatteibute方法给属性添加背景色。js设置颜色js改变字体的颜

    在DW中编写CSS人的几点建议

    在DW中编写CSS人的几点建议,,在Dreamweaver中编写CSS是不提倡的。然而,由于它的可视化和简单操作,许多朋友仍在使用,并在今天列出了一些。帮

    CSS3输出PDF打印的小技巧

    CSS3输出PDF打印的小技巧,纸张,特殊,前文再续,书接上一回,自从《PHP输出PDF打印HTML5+CSS3打印格式控制》之后,实现了用HTML5+CSS3直接输出成

    Safari调试iOS中的js

    Safari调试iOS中的js,页面,设备,概述对于HTML5的开发,大家都知道Chrome的DevTools工具有强大的功能和友好的用户体验,不仅能快速方便调试Jav

    Bootstrap的js插件之模态框|modal

    Bootstrap的js插件之模态框|modal,模态,饭盒,.modal——指明div元素包裹模态框;.fade——给模态框添加淡入淡出效果;.modal-dialog——包裹

    div滚动条设置|css滚动条设置

    div滚动条设置|css滚动条设置,,css滚动条设置<div>这个DIV有滚动条</div> css 设置滚动条1. 滚动文字标签——marquee使用<marquee>标签