首頁 > web前端 > js教程 > 主體

如何使用 HTML CSS JavaScript 製作計算機 – 逐步指南

WBOY
發布: 2024-08-01 10:34:22
原創
286 人瀏覽過

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中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!