我的编程空间,编程开发者的网络收藏夹
学习永远不晚

js+css实现计算器功能

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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;
            
            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;
            
            width: 99%;
            height: 275px;
            margin: 0 auto;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
        }

        ul li {
            
            width: 24.6%;
            height: 19%;
            margin-bottom: 1.5px;
        }

        button {
            border: none;
            width: 100%;
            height: 100%;
            background-color: #FAFAFA;
        }

        
        button:focus {
            border: 0 none;
            outline: none;
        }

        .view {
            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;
        }

        
        .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 class="lazy" data-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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

js+css实现计算器功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

原生JS怎么实现简单计算器功能

本篇内容主要讲解“原生JS怎么实现简单计算器功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“原生JS怎么实现简单计算器功能”吧!使用html和css写出计算器的基本结构和样式,用原生JS实现计
2023-06-29

IO实现计算器功能

本文实例为大家分享了IO实现计算器功能的具体代码,供大家参考,具体内容如下代码:// // ViewController.m // Fraction_Calculator // // Created by 鲁军 on 2021/4/2
2022-05-27

Python实现计算器功能

#!/usr/bin/python# -*- coding:UTF-8 -*-def sum(options,x,y):    t = options    if(t == "+"):        print "x+y=",x+y   
2023-01-31

js实现简易计数器功能

这篇文章主要为大家详细介绍了js实现计数器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

iOS开发实现计算器功能

本文实例为大家分享了iOS实现计算器功能的具体代码,供大家参考,具体内容如下 效果图Masonry 使用数组来自动约束NSArray *buttonArrayOne = @[_buttonAC, _buttonLeftBracket, _b
2022-05-28

C#怎么实现计算器功能

今天小编给大家分享一下C#怎么实现计算器功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。代码:using System;u
2023-06-29

编程热搜

目录