html 计算器界面

其他链接:
https://www.freecodecamp.org/news/how-to-build-an-html-calculator-app-from-scratch-using-javascript-4454b8714b98/
https://codepen.io/pen/tour/welcome/start

下面展示一些 内联代码片

javascript 复制代码
<!DOCTYPE html>
<html lang="en">
    <!--
    https://www.freecodecamp.org/news/how-to-build-an-html-calculator-app-from-scratch-using-javascript-4454b8714b98/ 
    https://codepen.io/pen/tour/welcome/start 
    -->
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* // NOTE: You don't need to mess around with 
        // CSS to follow the tutorial. Focus on the 
        // JavaScript instead!
        // =========================

        // Some personal resets */
            html {
                box-sizing: border-box;
            }

            *,
            *::before,
            *::after {
            box-sizing: inherit;
            }

            body {
            margin: 0;
            }

            /* Responsive Images */
            embed,
            iframe,
            img,
            object,
            video {
                max-width: 100%;
            }

            h1,
            h2,
            h3,
            h4,
            h5,
            h6,
            ul,
            ol,
            li,
            p,
            pre,
            blockquote,
            figure,
            hr {
                margin: 0;
                padding-right: 0;
                padding-left: 0;
            }

            a {
                text-decoration: none;
            }

            a:focus {
                outline: none;
            }

            h1,
            h2,
            h3,
            h4,
            h5,
            h6 {
                display: block;
            }

            /* Removes all decimals and discs from lists */
            ol,
            ul {
                list-style: none;
            }

            /* 
            * Completely resets form items
            * ----------------------------
            * Super hard reset that removes all borders
            * and radiuses of all form items (including
            * checkboxes and radios)
            */

            input,
            textarea,
            button {
                border: 0;
                border-radius: 0;
                background-color: transparent;
                font-size: inherit;
                font-family: inherit;
                font-weight: inherit;
                outline: none;
                appearance: none;
                text-align: left;
            }

            input:hover,
            input:active,
            input:focus,
            textarea:hover,
            textarea:active,
            textarea:focus,
            button:hover,
            button:active,
            button:focus {
            outline: none;
            }

            :root {
                font-family: Helvetica, Arial, sans-serif;
            }

            html {
                font-size: 175%;
                font-weight: 300;
                line-height: 1.3;
            }

            body {
                align-items: center;
                background-image: linear-gradient(236deg, #74ebd5, #acb6e5);
                display: flex;
                height: 100vh;
                justify-content: center;
            }

            .container {
                max-width: 20em;
            }

            .container > p {
                text-align: center;
            }

            .calculator {
                border-radius: 12px;
                box-shadow: 0 0 40px 0px rgba(0, 0, 0, 0.15);
                margin-left: auto;
                margin-right: auto;
                margin-top: 2em;
                max-width: 15em;
                overflow: hidden;
            }

            .calculator__display {
                background-color: #222222;
                color: #fff;
                font-size: 1.714285714em;
                padding: 0.5em 0.75em;
                text-align: right;
            }

            .calculator__keys {
                background-color: #999;
                display: grid;
                grid-gap: 1px;
                grid-template-columns: repeat(4, 1fr);
            }

            .calculator__keys > * {
                background-color: #fff;
                padding: 0.5em 1.25em;
                position: relative;
                text-align: center;
            }

            .calculator__keys > *:active::before,
            .calculator__keys > .is-depressed::before {
                background-color: rgba(0, 0, 0, 0.2);
                bottom: 0;
                box-shadow: 0 0 6px 0 rgba(0, 0, 0, 0.5) inset;
                content: "";
                left: 0;
                opacity: 0.3;
                position: absolute;
                right: 0;
                top: 0;
                z-index: 1;
            }

            .key--operator {
                background-color: #eee;
            }

            .key--equal {
                background-image: linear-gradient(to bottom, #fe886a, #ff7033);
                grid-column: -2;
                grid-row: 2 / span 4;
            }

    </style>
</head>
<body>
    
    <div class="container">
        
        <div class="calculator">
          <div class="calculator__display">0</div>
    
          <div class="calculator__keys">
            <button class="key--operator" data-action="add">+</button>
            <button class="key--operator" data-action="subtract">-</button>
            <button class="key--operator" data-action="multiply">&times;</button>
            <button class="key--operator" data-action="divide">÷</button>
            <button>7</button>
            <button>8</button>
            <button>9</button>
            <button>4</button>
            <button>5</button>
            <button>6</button>
            <button>1</button>
            <button>2</button>
            <button>3</button>
            <button>0</button>
            <button data-action="decimal">.</button>
            <button data-action="clear">AC</button>
            <button class="key--equal" data-action="calculate">=</button>
          </div>
        </div>
      </div>


      <script>
        console.log("start");
        const calculator = document.querySelector('.calculator');
        console.log(calculator);
        const keys = calculator.querySelector('.calculator__keys');


        keys.addEventListener('click', e => {
            if (e.target.matches('button')) {
                // Do something
                const key = e.target  
                const action = key.dataset.action  // 得到动作  +-*/

                // 如果不是action,则是数字
                if (!action) {
                    console.log('number key!')
                }

                if (
                    action === 'add' ||
                    action === 'subtract' ||
                    action === 'multiply' ||
                    action === 'divide'
                ) {
                console.log('operator key!')
                }
            }
        })

    </script>
</div>

</body>
</html>
相关推荐
很晚很晚了2 小时前
纯前端转全栈 Day 1:我从第一个 NestJS 接口开始
前端
Lee川3 小时前
从零解剖一个 AI Agent Tool是如何实现的
前端·人工智能·后端
wangruofeng4 小时前
Playwright 深度调研:为什么它成了浏览器自动化的新底座
前端·测试
李白的天不白6 小时前
SSR服务端渲染
前端
卷帘依旧7 小时前
SSE(Server-Sent Events)完全指南
前端
码云之上7 小时前
万星入坞:我们如何用三层插件体系干掉巨石应用
前端·架构·前端框架
kyriewen7 小时前
一口气讲清楚 Monorepo、Turborepo、pnpm、Changesets 到底是什么?
前端·架构·前端工程化
IT_陈寒8 小时前
React性能优化踩的坑,这个错你可能也会犯
前端·人工智能·后端
zhangxingchao8 小时前
AI应用开发三:RAG技术与应用
前端·人工智能·后端
摘星小杨9 小时前
如何在前端循环调取接口,实时查询数据
开发语言·前端·javascript