首页 >web前端 >js教程 >如何使用 HTML CSS JavaScript 制作计算器 – 分步指南

如何使用 HTML CSS JavaScript 制作计算器 – 分步指南

WBOY
WBOY原创
2024-08-01 10:34:22341浏览

How to Make a Calculator Using HTML CSS JavaScript – Step-by-Step Guide

Calculators are an essential tool used in various fields, from simple arithmetic calculations to complex scientific computations. Building a calculator from scratch using HTML, CSS, and JavaScript not only enhances your coding skills but also deepens your understanding of how these technologies work together. This guide will walk you through creating a basic calculator that can perform addition, subtraction, multiplication, and division.

HTML Structure:
The HTML includes a div with the class calculator containing the calculator’s display and buttons.
Each button has data attributes (data-num for numbers and data-op for operations) for easy JavaScript selection.
CSS Styling:
The CSS styles center the calculator on the screen, style the display and buttons, and provide hover effects.
Specific styles are added for the equals button to differentiate it from the others.
JavaScript Functionality:
JavaScript handles the button clicks, updates the display, and performs calculations.
The handleNumber function processes number inputs and decimal points.
The handleOperator function processes operations, including clear, equals, and arithmetic operations.
The calculate function performs the arithmetic based on the selected operator.
The updateDisplay function updates the display with the current input.

<!DOCTYPE html>
<html>

<head>
    <title>iPhone Style Calculator with History and Root Button</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/10.6.4/math.js"
        integrity="sha512-BbVEDjbqdN3Eow8+empLMrJlxXRj5nEitiCAK5A1pUr66+jLVejo3PmjIaucRnjlB0P9R3rBUs3g5jXc8ti+fQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/10.6.4/math.min.js"
        integrity="sha512-iphNRh6dPbeuPGIrQbCdbBF/qcqadKWLa35YPVfMZMHBSI6PLJh1om2xCTWhpVpmUyb4IvVS9iYnnYMkleVXLA=="
        crossorigin="anonymous" referrerpolicy="no-referrer"></script>

    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background-color: #fff;
            margin: 0;
            font-family: 'Arial', sans-serif;
        }

        .calculator {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 10px;
            padding: 20px;
            border-radius: 20px;
            background-color: #333;
            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
            width: 320px;
        }

        .calculator input[type="text"] {
            grid-column: span 4;
            padding: 20px;
            font-size: 32px;
            border: none;
            border-radius: 10px;
            text-align: right;
            background-color: #000;
            color: #fff;
            box-sizing: border-box;
        }

        .calculator input[type="button"] {
            padding: 20px;
            font-size: 24px;
            border: none;
            border-radius: 10px;
            cursor: pointer;
            color: white;
            box-sizing: border-box;
        }

        .calculator input[type="button"].operator {
            background-color: #ff9500;
        }

        .calculator input[type="button"].operator:hover {
            background-color: #cc7a00;
        }

        .calculator input[type="button"].number {
            background-color: #505050;
        }

        .calculator input[type="button"].number:hover {
            background-color: #6b6b6b;
        }

        .calculator input[type="button"].zero {
            grid-column: span 2;
        }

        .calculator input[type="button"].clear {
            background-color: #d4d4d2;
            color: black;
        }

        .calculator input[type="button"].clear:hover {
            background-color: #bbb; transition: 0.5s;
        } 

        .calculator input[type="button"].root {
            background-color: #f7c600;  
        }

        .calculator input[type="button"].root:hover {
            background-color: #e6b800; transition: 0.5s;
        }
    </style>
</head>

<body>

    <div class="calculator">
        <input type="text" id="display" readonly>
        <input type="button" value="A/C" class="clear" onclick="clr()" />
        <input type="button" value="%" class="operator" onclick="dis('%')" />
        <input type="button" value="/" class="operator" onclick="dis('/')" />
        <input type="button" value="*" class="operator" onclick="dis('*')" />
        <input type="button" value="7" class="number" onclick="dis('7')" />
        <input type="button" value="8" class="number" onclick="dis('8')" />
        <input type="button" value="9" class="number" onclick="dis('9')" />
        <input type="button" value="-" class="operator" onclick="dis('-')" />
        <input type="button" value="4" class="number" onclick="dis('4')" />
        <input type="button" value="5" class="number" onclick="dis('5')" />
        <input type="button" value="6" class="number" onclick="dis('6')" />
        <input type="button" value="+" class="operator" onclick="dis('+')" />
        <input type="button" value="1" class="number" onclick="dis('1')" />
        <input type="button" value="2" class="number" onclick="dis('2')" />
        <input type="button" value="3" class="number" onclick="dis('3')" />

<input type="button" value="=" class="operator" onclick="solve()
" />


        <input type="button" value="0" class="number zero" onclick="dis('0')" />
        <input type="button" value="." class="number" onclick="dis('.')" />
        <input type="button" value="√" class="root" onclick="dis('sqrt(')" />



    </div>

    <script>
        function dis(val) {
            document.getElementById("display").value += val;
        }

        document.addEventListener('keydown', function (event) {
            const key = event.key;
            if ((key >= '0' && key <= '9') || ['+', '-', '*', '/', '%'].includes(key)) {
                dis(key);
            } else if (key === 'Enter') {
                solve();
            } else if (key === 'Escape') {
                clr();
            }
        });

        function solve() {
            try {
                let expression = document.getElementById("display").value;
                // Handle square root calculation
                expression = expression.replace(/sqrt\(([^)]+)\)/g, 'sqrt($1)');
                // Evaluate the expression
                let result = math.evaluate(expression);
                document.getElementById("display").value = result;
            } catch (err) {
                document.getElementById("display").value = "Error";
            }
        }

        function clr() {
            document.getElementById("display").value = "";
        }
    </script>
</body>

</html>

以上是如何使用 HTML CSS JavaScript 制作计算器 – 分步指南的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn