網頁計算器的實現

簡介

該項目實現了一個功能完備、交互友好的網頁計算器應用。只使用了 HTML、CSS 和 JavaScript ,用于檢驗web前端基礎水平。

  • 開發環境:Visual Studio Code
  • 開發工具:HTML5、CSS3、JavaScript
  • 實現效果
    在這里插入圖片描述

功能設計和模塊劃分

  1. 顯示模塊:負責展示輸入的數字和計算結果。
  2. 輸入模塊:處理用戶點擊數字和運算符按鈕的操作。
  3. 計算模塊:執行具體的數學運算,并處理異常情況。

具體實現

  1. 項目結構
    在這里插入圖片描述
  2. index.html
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>計算器</title><link rel="stylesheet" href="./css/index.css"><script src="./js/index.js"></script>
</head><body><div id="outer"><!-- 顯示 --><div class="screen"><div class="showNum">0</div></div><!-- 按鈕 --><div class="buttons"><input type="button" value="AC" class="btn1"><input type="button" value="<-" class="btn1"><input type="button" value="+/-" class="btn1"><input type="button" value="/" class="btn2"><input type="button" value="1"><input type="button" value="2"><input type="button" value="3"><input type="button" value="*" class="btn2"><input type="button" value="4"><input type="button" value="5"><input type="button" value="6"><input type="button" value="-" class="btn2"><input type="button" value="7"><input type="button" value="8"><input type="button" value="9"><input type="button" value="+" class="btn2"><input type="button" value="0"><input type="button" value="."><input type="button" value="m"><input type="button" value="=" class="btn2"></div></div></body></html>
  1. index.css
/* 去除默認樣式 */
* {padding: 0;margin: 0;
}input {border: 0;
}/* 外部輪廓的樣式 */
#outer {width: 380px;height: 640px;background-color: black;/* 居中 */margin: 0 auto;/* 設置圓角效果 */border-radius: 30px;}/* 顯示樣式 */
.screen {width: 380px;height: 180px;/* 開啟相對定位 */position: relative;
}.showNum {color: white;font-size: 60px;/* 開啟絕對定位 */position: absolute;right: 30px;bottom: 10px;
}/* 按鈕樣式 */
.buttons {height: 440px;/* 設置內邊距 */padding: 10px;/* 開啟彈性盒子 */display: flex;/* 自動換行 */flex-wrap: wrap;/* 水平方向設置兩端對齊 */justify-content: space-between;/* 垂直方向兩端對齊 */align-content: space-between;
}.buttons>input {width: 80px;height: 80px;background-color: rgb(51, 51, 51);/* 設置圓形 */border-radius: 50%;/* 設置字體顏色 */color: white;/* 設置字體大小 */font-size: 28px;
}.buttons>.btn1 {color: black;background-color: rgb(165, 164, 164);
}.buttons>.btn2 {background-color: rgb(213, 158, 90);
}/* 設置點擊高亮效果 */
.buttons>input:active {filter: brightness(140%);
}
  1. index.js
window.addEventListener("load", function () {let showNum = document.querySelector(".showNum");// 利用事件委托,給按鈕共同的祖先元素綁定事件,利用事件冒泡完成對應的事件回調let buttons = document.querySelector(".buttons");//定義一個標志符let flag = false;buttons.addEventListener("click", function (e) {let buttonValue = e.target.value;let showNumValue = showNum.innerHTML;// 1.判斷如果點擊的是數字,則顯示if (!isNaN(buttonValue)) {// 2.屏幕顯示數字是否是0if (showNumValue == 0) {showNum.innerHTML = buttonValue;} else {showNum.innerHTML = showNumValue + buttonValue;}} else {//點擊功能按鈕switch (buttonValue) {case "AC": //清零showNum.innerHTML = 0;break;case "<-":showNum.innerHTML = delOneFun(showNumValue);break;case "+/-":showNum.innerHTML = showNumValue * -1;break;case ".":showNum.innerHTML = pointFun(showNumValue);break;case "m":location.href = "https://www.baidu.com";break;default:switch (buttonValue) {case "/":case "*":case "-":case "+":flag = true;showNum.innerHTML = showNumValue + buttonValue;break;case "=":showNum.innerHTML = evalFun(showNumValue);break;}break;}}});//退格函數function delOneFun(value) {let newValue = value.substring(0, value.length - 1);if (newValue.length == 0) {newValue = 0;}return newValue;}//小數點function pointFun(value) {let newValue = "";if (value.indexOf(".") == -1) {newValue = value + ".";} else if (flag) {newValue = value + ".";flag = false;} else {return value;}return newValue;}//運算函數function evalFun(value) {let newValue = "";// eval()可以接收一個字符串作為js的代碼執行newValue = eval(value);// Number.isInteger() 判斷一個數字是否是整數,如果是則返回trueif (Number.isInteger(newValue)) {return newValue;} else {// toFixed()保留指定位數的小數newValue = newValue.toFixed(2);return newValue;}}
});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40190.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40190.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40190.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Bean類的設計規范:Bean規范

Bean規范 類要求必須含有無參&#xff0c;公共的構造方法屬性必須私有化&#xff0c;然后提供公共的 set 和 get 方法

anaconda命令大全

目錄 查看所有虛擬環境查看某虛擬環境安裝的包創建虛擬環境激活創建好的虛擬環境回到之前的環境刪除創建的虛擬環境查看conda所在的位置、虛擬環境位置等信息conda修改虛擬環境所在的位置 查看所有虛擬環境 conda env list查看某虛擬環境安裝的包 激活要查看的虛擬環境之后&a…

Android 性能優化之啟動優化

文章目錄 Android 性能優化之啟動優化啟動狀態冷啟動溫啟動熱啟動 耗時檢測檢測手段TraceView使用方式缺點 Systrace環境配置使用方式TraceView和Systrace比較 AOP統計耗時環境配置使用 優化白屏優化異步加載優化環境配置使用 延遲加載優化AppStartup 源碼下載 Android 性能優化…

Reid系列論文學習——無人機場景下基于 Transformer 的輕量化行人重識別

今天介紹的一篇論文是針對無人機場景下的行人重識別&#xff0c;論文題目為&#xff1a;"無人機場景下基于 Transformer 的輕量化行人重識別"。該論文針對無人機場景下行人呈現多角度多尺度的特點、以及傳統CNN網絡在行人重識別任務中受限于感受野和下采樣導致的無法…

力扣1895.最大的幻方

力扣1895.最大的幻方 求前綴和暴力枚舉幻方邊長 求行列前綴和 class Solution {public:int largestMagicSquare(vector<vector<int>>& grid) {int n grid.size() , m grid[0].size();vector<vector<int>> rowsum(n,vector<int>(m));for…

關于汽車軟件測試的幾點想法

如果你有過汽車行業的從業經驗&#xff0c;你就應該知道&#xff0c;過去汽車行業只做測試&#xff0c;而不做開發。汽車制造商的主要任務&#xff08;從工程角度看&#xff09;是將來自數百家供應商的數千個零部件組裝在一起。考慮到現代軟件的復雜性和客戶的“挑剔”&#xf…

Rufus 制作啟動盤 | 便攜的工作空間

嘮嘮閑話 最近服務器硬盤故障多&#xff0c;在修復過程中&#xff0c;學習了一些操作&#xff0c;這里做個記錄。本期主要介紹 U盤啟動盤的制作&#xff0c;以及持久化存儲。 U 盤啟動盤 鏡像選擇 Ubuntu 的版本命名遵循 “Adjective Animal” 的模式&#xff0c;即 “形容…

【trition-server】python-backend 源碼閱讀

c++ 的stub 代碼import 了 python的類 sys 和 triton_python_backend_utils.pystub本身是一個進程,與主進程做IPC通信docker 運行一個trition-server (base) zhangbin@ubuntu-server:~$ docker run --shm-size=1g --ulimit memlock=-1 -p 8000:8000 -p 8001:8001 -p 8002:8002…

windwos環境和pyspark環境問題解決-記錄

一&#xff1a; 打不開cmd/cmd閃退問題解決 1.winR打開 regedit 2.在注冊表找到 HKEY_CURRENT_USER\Software\Microsoft\Command Processor路徑 3.在該路徑下找到AutoRun&#xff0c;將數值改為空 可能原因&#xff1a;找到AutoRun 發現值是&#xff1a; if exist & if…

新港海岸NCS8822 低功耗DP轉VGA 分辨率支持1920*1200*60HZ

NCS8822描述&#xff1a; NCS8822是一個低功耗顯示端口到vga轉換器。NCS8822集成了一個與DP1.2兼容的接收器和一個高速三通道視頻DAC。對于DP1.2輸入&#xff0c;NCS8822支持1車道/2車道&#xff0c;也支持車道交換功能。對于VGA輸出NCS8822&#xff0c;在60Hz幀率下對WUXGA&a…

C++ 棧-隊列-優先級隊列

目錄 1 棧 2 隊列 3 deque 介紹 4 優先級隊列 5 反向迭代器 棧也是我們在C語言就模擬實現過的一種數據結構&#xff0c;在C中&#xff0c;棧其實和我們前面模擬實現過的string、vector等容器有一點區別&#xff0c;站起是不是容器&#xff0c;而是一種容器適配器&#xff0c;我…

java必知必會-j2ee規范(上)

文章目錄 一、WEB三大規范二、j2ee相關接口(上)1.javax.servlet.Servlet2.javax.servlet.http.HttpServlet3.javax.servlet.ServletRequest4.javax.servlet.http.HttpServletRequest5.javax.servlet.ServletResponse6.javax.servlet.http.HttpServletResponse7. javax.servlet.…

k8s record 20240705

k8s 安全管理 request 是1g&#xff0c;你得不到要求&#xff0c;我就不創建了&#xff0c;這就是準入控制二次校驗 SA就是serviceAccount。 內部是SA和 token, 外部用戶進來就是 .kube/config文件 namespace下的是role&#xff0c;整個集群是 ClusterRole. 動作就是Binding li…

pytest-rerunfailures:優化測試穩定性的失敗重試工具

筆者在執行自動化測試用例時&#xff0c;會發現有時候用例失敗并非代碼問題&#xff0c;而是由于服務正在發版&#xff0c;導致請求失敗&#xff0c;從而降低了自動化用例的穩定性&#xff0c;最后還要花時間定位到底是自身case的原因還是業務邏輯問題&#xff0c;還是其他原因…

大數據面試題之Presto[Trino](3)

目錄 Presto如何處理數據的聚合操作&#xff1f; Presto支持哪些類型的JOIN操作&#xff1f; 如何在Presto中使用子查詢&#xff1f; 解釋Presto中的窗口函數。 Presto中的Page和Block是什么&#xff1f; 描述Presto如何處理列式存儲數據。 ORC和Parquet格式在Presto中的…

適合家居建材企業的CRM系統盤點(2024版)

當前&#xff0c;CRM市場上&#xff0c;國際巨頭的市場優勢正在逐漸減弱&#xff0c;國內CRM企業奮起追趕&#xff0c;呈現出強勁的崛起勢頭。因此&#xff0c;對于家居建材企業來講&#xff0c;在進行CRM選型時&#xff0c;如何選擇一款合適的系統是關乎企業高效發展的重要課題…

探索C嘎嘎的奇妙世界:第十九關---STL(list的模擬實現)

1. 基本框架 首先&#xff0c;我們先從節點的準備工作入手&#xff0c;請看示例&#xff1a; #pragma once #include<iostream> #include<assert.h> using namespace std; //節點 template<class T> struct ListNode {ListNode<T>* _next;Li…

矩陣鍵盤與密碼鎖

目錄 1.矩陣鍵盤介紹?編輯 2.掃描的概念 3.代碼演示&#xff08;讀取矩陣鍵盤鍵碼&#xff09; 4.矩陣鍵盤密碼鎖 1.矩陣鍵盤介紹 為了減少I/O口的占用&#xff0c;通常將按鍵排列成矩陣形式&#xff0c;采用逐行或逐列的 “掃描”&#xff0c;就可以讀出任何位置按鍵的狀態…

免殺筆記 ----> ShellCode Loader !!!

學了那么久的前置知識&#xff0c;終于到了能上線的地方了&#xff01;&#xff01;&#xff01; 不過這里還沒到免殺的部分&#xff0c;距離bypass一眾的殺毒軟件還有很長的路要走&#xff01;&#xff01; 目錄 1.ShellCode 2.ShellCode Loader的概念 3.可讀可寫可…

字符串函數5-9題(30 天 Pandas 挑戰)

字符串函數 1. 相關知識點1.5 字符串的長度條件判斷1.6 apply映射操作1.7 python大小寫轉換1.8 正則表達式匹配2.9 包含字符串查詢 2. 題目2.5 無效的推文2.6 計算特殊獎金2.7 修復表中的名字2.8 查找擁有有效郵箱的用戶2.9 患某種疾病的患者 1. 相關知識點 1.5 字符串的長度條…