探索計算之美:HTML CSS 計算器案例

本次案例是通過HTML和CSS,我們可以為計算器賦予獨特的外觀和功能;

在這個計算器中,你將會發現:

  • 簡潔清晰的界面設計,使用戶能夠輕松輸入和查看計算結果。
  • 利用HTML構建的結構,確保頁面具有良好的可訪問性和可維護性。
  • 使用CSS進行精美的樣式設計,為計算器增添視覺上的吸引力。

組件:

  • ?加減乘除,階乘,(,),三角函數(tan、cos、sin),±,√×。

依賴包:angular.js? 這個去官網下載

官網:AngularJS — Superheroic JavaScript MVW Framework

中文官網:AngularJS下載

下載后解壓選取下圖拖動到代碼文件目錄即可

樣式:

主要代碼

HTML+JS:

<html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>計算器</title><script src="/angular.js"></script><link rel="stylesheet" href="/calc.css">
</head><body><body ng-app="zt"><div class="ys"><div ng-controller="zt-jsq"><div class="ttx"><div class="tt">計算器</div></div><div class="result"><input type="text" id="result" ng-model="result" readonly /></div><div class="keyboard-row"><button class="keyboard-button" ng-click="addToExpression('(')">(</button><button class="keyboard-button" ng-click="addToExpression(')')">)</button><button class="keyboard-button" ng-click="factorial()">n!</button><button class="keyboard-button" ng-click="clear()">C</button><button class="keyboard-button" ng-click="backspace()">←</button></div><div class="keyboard-row"><button class="keyboard-button" ng-click="appendNumber('7')">7</button><button class="keyboard-button" ng-click="appendNumber('8')">8</button><button class="keyboard-button" ng-click="appendNumber('9')">9</button><button class="keyboard-button" ng-click="appendOperator('+')">+</button><button class="keyboard-button" ng-click="appendOperator('*')">*</button></div><div class="keyboard-row"><button class="keyboard-button" ng-click="appendNumber('4')">4</button><button class="keyboard-button" ng-click="appendNumber('5')">5</button><button class="keyboard-button" ng-click="appendNumber('6')">6</button><button class="keyboard-button" ng-click="appendOperator('-')">-</button><button class="keyboard-button" ng-click="appendOperator('/')">/</button></div><div class="keyboard-row"><button class="keyboard-button" ng-click="appendNumber('1')">1</button><button class="keyboard-button" ng-click="appendNumber('2')">2</button><button class="keyboard-button" ng-click="appendNumber('3')">3</button><button class="keyboard-button" ng-click="appendNumber('0')">0</button><button class="keyboard-button1" ng-click="calculate()">=</button></div><div class="keyboard-row"><button class="keyboard-button" ng-click="zf()">±</button><button class="keyboard-button" ng-click="fz()">1/x</button><button class="keyboard-button" ng-click="pf()">x2</button><button class="keyboard-button" ng-click="gh()">√x</button></div><div class="keyboard-row"><button class="keyboard-button" ng-click="sin()">sin</button><button class="keyboard-button" ng-click="cos()">cos</button><button class="keyboard-button" ng-click="tan()">tan</button><button class="keyboard-button" ng-click="bfh()">%</button></div></div></div></body></html>
<script>// 創建模塊var app = angular.module('zt', []);// 設置 zt-jsq 控制器app.controller('zt-jsq', function ($scope) {// 計算器顯示屏 初始 數值為0$scope.result = '0';// 計算器顯示屏上的計算公式$scope.expression = '';// 輸入數值在 顯示屏上$scope.appendNumber = function (number) {// 判定 公式是否為 空if ($scope.expression === '') {// 為空 輸入數值$scope.expression = number;$scope.result = number;} else {// 非空 公式內容以字符串形式 拼接$scope.expression += number;// 計算器顯示屏 顯示 當前公式$scope.result = $scope.expression;}};// 添加 運算符$scope.appendOperator = function (operator) {// 當前 計算公式中最后一位字符var end = $scope.expression.slice(-1);// 加減乘除 符號var str = '+-/*';// 判定 計算公式 是否為空 并且 計算公式中最后一位字符 是否是 加減乘除符號if ($scope.expression === '' || str.includes(end)) {// 如果是 忽略連續的運算符return;}// 判定 計算公式是否 非空if ($scope.expression !== '') {// 非空 并 最后一位不是 加減乘除 ,添加運算符$scope.expression += operator;// 計算器顯示屏 顯示 當前公式$scope.result = $scope.expression;}};// 清除所有輸入$scope.clear = function () {$scope.result = '0';$scope.expression = '';};// 執行 運算公式$scope.zf = function () {// 將表達式轉換為數字var number = parseFloat($scope.expression);// 檢查數字是否是NaN,如果是,則將表達式設置為負號if (isNaN(number)) {$scope.expression = "-";} else {// 對數字進行取反操作$scope.expression = -number;}// 更新結果為取反后的表達式$scope.result = $scope.expression;};$scope.fz = function () {if ($scope.expression.startsWith('-')) {$scope.expression = $scope.expression.slice(1);}$scope.expression = "1/(" + $scope.expression + ")";$scope.result = $scope.expression;};$scope.pf = function () {$scope.expression = "Math.pow(" + $scope.expression + ", 2)";$scope.result = $scope.expression;};$scope.gh = function () {$scope.expression = "Math.sqrt(" + $scope.expression + ")";$scope.result = $scope.expression;};$scope.bfh = function () {$scope.expression += "*0.01";$scope.result = $scope.expression;};$scope.sin = function () {$scope.expression = "Math.sin(" + $scope.expression + " * Math.PI / 180)"; // Assuming the input is in degrees$scope.result = $scope.expression;};$scope.cos = function () {$scope.expression = "Math.cos(" + $scope.expression + " * Math.PI / 180)"; // Assuming the input is in degrees$scope.result = $scope.expression;};$scope.tan = function () {$scope.expression = "Math.tan(" + $scope.expression + " * Math.PI / 180)"; // Assuming the input is in degrees$scope.result = $scope.expression;};$scope.log = function () {$scope.expression = "Math.log(" + $scope.expression + ")";$scope.result = $scope.expression;};//階乘$scope.factorial = function () {var number = parseFloat($scope.expression);if (!isNaN(number) && number >= 0 && Math.floor(number) === number) { // 檢查輸入是否為非負整數var result = 1;for (var i = 2; i <= number; i++) {result *= i;}$scope.expression = result.toString();$scope.result = $scope.expression;} else {$scope.result = "Error";}};//()號$scope.addToExpression = function (value) {if ($scope.expression === '') {$scope.expression = value;$scope.result = value;} else {$scope.expression += value;$scope.result = $scope.expression;}};// 刪除 最后一個字符 $scope.backspace = function () {// 判定 計算公式 當前長度是否 大于 0if ($scope.expression.length > 0) {// 大于 0 ,刪除最后一位字符$scope.expression = $scope.expression.slice(0, -1);// 計算器顯示屏 顯示 當前公式 $scope.result = $scope.expression;} else if ($scope.result.length > 0) {// 計算器顯示屏顯示長度 大于0 ,當計算公式不大于0// 計算公式以運算$scope.result = '0';}};// 執行 運算公式$scope.calculate = function () {try {// 判定 計算公式 長度 是否大于 0if ($scope.expression.length > 0) {// eval -->  將 字符串 作為計算公式 進行計算// 大于0 , 執行 計算公式var calculatedResult = eval($scope.expression);// 將 計算結果 轉換為 字符串$scope.result = calculatedResult.toString();// 清空 計算公式 $scope.expression = '';} else if ($scope.result.length > 0) {// 計算器顯示屏顯示長度 大于0 ,當計算公式不大于0// 不做操作return;}}catch (e) { // 如果表達式有誤,重置結果和表達式 scope.expression = '';$scope.result = '0';$scope.expression = '';window.alert('表達式錯誤!');}};});
</script>
</body></html></html>

CSS樣式:

.keyboard-button {width: 60px;  /* 調整為更大的尺寸 */height: 50px;font-size: 15px;background-color: #ffffff;border: 2px solid #ccc;cursor: pointer;border-radius: 5px;margin: 1px;  /* 增加按鈕間隔 */justify-content: center;align-items: center;margin-top: 3px;box-shadow: 0px 1px 3px rgba(0, 0, 0, 0.1);  /* 添加輕微陰影 */
}.keyboard-button:hover {background-color: #e0e0e0;
}.keyboard-button:active {background-color: #d0d0d0;
}.keyboard-button1 {width: 60px;  /* 保持與其他按鈕一致 */height: 50px;font-size: 15px;background-color: #1d6978;border: 1px solid #ccc;cursor: pointer;color: #fff;margin-left: 1px;border-radius: 5px;
}.keyboard-button1:hover {background-color: #337785;
}.keyboard-button1:active {background-color:#1d6978;
}.result {width: auto;height: 40px;/* text-align: ; */border: 1px solid #ccc;border-radius: 5px;#result {width: 100%;height: 100%;border-radius: 5px;color: #000000;font-size: 25px;}
}
.ys {background-color: rgb(250, 248, 255);width: 100%;  max-width: 350px;  height: auto;display: flex;margin: 20px auto;  /* 增加上下邊距以便更好的居中 */justify-content: center;border-radius: 10px;box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);  /* 給整體容器添加陰影 */
}
.ttx{width: 38%;background-color:  #54cbe3;border-radius: 5px;justify-content: center;
}
.tt{width: 100%;font-size: 25px;font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;color: #000000;text-align: center;display: auto;margin-bottom: 2px;
}

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

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

相關文章

【全開源】JAVA上門家政服務系統源碼微信小程序+微信公眾號+APP+H5

功能介紹 用戶端&#xff1a;精準分類、支持家政、維修、萬能服務、一口價、報價、線上、各類家政服務、優惠專區、師傅入駐、商家入駐、我的需求、補費明細、我的投訴 師傅端&#xff1a;接單池、消息通知、接單管理、今日訂單、師傅入駐、我的錢包、實名認證 商家端&#…

HTTPS 原理和 TLS 握手機制

HTTPS的概述與重要性 在當今數字化時代&#xff0c;網絡安全問題日益凸顯&#xff0c;數據在傳輸過程中的安全性備受關注。HTTPS 作為一種重要的網絡通信協議&#xff0c;為數據的傳輸提供了強有力的安全保障。它是在 HTTP 的基礎上發展而來&#xff0c;通過引入數據加密機制&a…

流量分析(一)

數據庫類流量分析 MySQL流量 常規操作&#xff0c;查找flag ctfhub{} 注意要選擇字符集 Redis流量 查找ctfhub結果沒找到 嘗試把其變成十六進制繼續進行查找 看到了前半段flag 接著往下看 找到了后半段的flag MongoDB流量 還是一樣查找ctfhub 字符串沒找到 轉成十六進制也沒…

c 在線教育系統論文,在線教育需要在哪些渠道做付費推廣呢?

隨著在網上學習的人越來越多&#xff0c;很多在線教育公司都開發了屬于自己的平臺。如果只做開發&#xff0c;不去做運營推廣的話&#xff0c;這個在線平臺就等于是白做了。那么在線教育需要在哪些渠道做付費推廣呢? 1、官網廣告推薦位 Banner作為一款展示型頁面橫幅廣告&…

Spring狀態機的實現原理和業務場景

Spring Statemachine 是 Spring Framework 的一部分&#xff0c;它提供了一種實現狀態機的方式&#xff0c;允許開發者定義狀態機的狀態、事件、行為和轉換。狀態機是一種計算模型&#xff0c;它可以根據一系列規則從一個狀態轉移到另一個狀態。以下 V 哥將從Spring狀態機的基本…

OpenVoiceV2本地部署教程,蘋果MacOs部署流程,聲音響度統一,文字轉語音,TTS

最近OpenVoice項目更新了V2版本&#xff0c;新的模型對于中文推理更加友好&#xff0c;音色也得到了一定的提升&#xff0c;本次分享一下如何在蘋果的MacOs系統中本地部署OpenVoice的V2版本。 首先下載OpenVoiceV2的壓縮包&#xff1a; OpenVoiceV2-for-mac代碼和模型 https:…

Kitti數據集再識(官網閱讀)

KITTI數據集中真值與標定參數 0. 前言 為了再研KITTI數據集及方便下載文件,特地買了梯子,心疼人民幣QWQ~555 1. KITTI-home Welcome to the KITTI Vision Benchmark Suite! 我們利用我們的自動駕駛平臺開發新穎的具有挑戰性的真實世界計算機視覺基準。我們感興趣的任務是…

interview_bak

flink內存管理 JVM 存在的幾個問題: Java 對象存儲密度低。一個只包含 boolean 屬性的對象占用了16個字節內存:對象頭占了8個,boolean 屬性占了1個,對齊填充占了7個。而實際上只需要一個bit(1/8字節)就夠了。Full GC 會極大地影響性能,尤其是為了處理更大數據而開了很大…

安裝openssh-server,提供遠程ssh

安裝openssh-server&#xff0c;提供遠程ssh 1.檢查自己是否安裝了openssh-server dpkg -l | grep ssh如果輸出內容有openssh-server&#xff0c;說明已經安裝過了&#xff0c;可以跳過下一步 2.安裝openssh-server 由于ubuntu自帶ssh客戶端&#xff0c;只需要安裝openssh-se…

mysql -- CRUD

CRUD MySQL是一個廣泛使用的開源關系數據庫管理系統&#xff08;RDBMS&#xff09;&#xff0c;它支持通過SQL&#xff08;Structured Query Language&#xff09;語言進行數據的管理。在MySQL中&#xff0c;CRUD是一個常見的術語&#xff0c;代表了數據管理的四個基本操作&am…

圖片轉圖標(ICO)的工具軟件

目前常用的ICO轉換方式大多都是網頁在線轉換&#xff0c;沒網就無法使用了。自己編寫了一款小軟件&#xff0c;可以將各種格式圖片轉為ICO圖標。 目前支持PNG,BMP,JPG,JPEG,GIF等格式的圖片轉換成ICO&#xff0c;支持的尺寸有常用的16*16&#xff0c;24*24&#xff0c;32*32&am…

Linux 進程間通信 System V系列: 共享內存,信號量,簡單介紹消息隊列

進程間通信 System V系列: 共享內存,初識信號量 一.共享內存1.引入2.原理3.系統調用接口1.shmget2.shmat和shmdt3.shmctl 4.邊寫代碼邊了解共享內存的特性1.ftok形成key,shmget創建與獲取共享內存2.shm相關指令3.shmat和shmdt掛接和取消掛接4.shmctl獲取共享內存信息,釋放共享內…

政務網離線安裝python3及其依賴手冊

文章目錄 python安裝及環境配置gcc安裝make安裝python3安裝pip安裝 測試測試python3報錯:ModuleNotFoundError: No module named _ctypes’測試pip3報錯“pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.” 依賴庫…

springboot 日志詳解

系統用戶操作日志(記錄用戶操作并定時保存到表中) 客戶需求: 要對幾個關鍵的業務功能進行操作日志記錄&#xff0c;即什么人在什么時間操作了哪個功能&#xff0c;操作前的數據報文是什么、操作后的數據報文是什么&#xff0c;必要的時候可以一鍵回退。 設計思路: ruoyi中使用S…

共享旅游革命:千益暢行卡的優勢揭秘

在共享經濟的快速發展中&#xff0c;共享旅游創業已成為許多創新者和投資者關注的重點。特別是千益暢行&#xff0c;作為共享旅游行業的新秀&#xff0c;其商業模型和經營策略引起了市場的高度討論。然而&#xff0c;對于這個公司是否僅僅是新一輪的市場“收割者”&#xff0c;…

Kylin Server V10下FTP服務器安全加固

一、查看操作系統信息 [root@localhost ~]# cat /etc/.kyinfo [dist] name=Kylin milestone=Server-V10-GFB-Release-ZF9_01-2204-Build03 arch=arm64 beta=False time=2023-01-09 11:04:36 dist_id=Kylin-Server-V10-GFB-Release-ZF9_01-2204-Build03-arm64-2023-01-09 11:04…

大模型prompt實例:知識庫信息質量校驗模塊

大模型相關目錄 大模型&#xff0c;包括部署微調prompt/Agent應用開發、知識庫增強、數據庫增強、知識圖譜增強、自然語言處理、多模態等大模型應用開發內容 從0起步&#xff0c;揚帆起航。 大模型應用向開發路徑&#xff1a;AI代理工作流大模型應用開發實用開源項目匯總大模…

基于FPGA的數字信號處理(11)--定點數的舍入模式(2)向最臨近值取整nearest

前言 在之前的文章介紹了定點數為什么需要舍入和幾種常見的舍入模式。今天我們再來看看另外一種舍入模式&#xff1a;向最臨近值取整nearest。 10進制數的nearest nearest&#xff1a; 向最臨近值方向取整。它的舍入方式和四舍五入非常類似&#xff0c;都是舍入到最近的整數…

【Unity AR開發系列】介紹如何使用這個支持熱更的AR開發插件,快速地開發AR應用

預告 Unity開發AR系列 本專欄將介紹如何使用這個支持熱更的AR開發插件&#xff0c;快速地開發AR應用。 更新 二、使用插件一鍵安裝HybridCLR和ARCore 三、配置帶HybridCLR的ARCore開發環境

計算機視覺與深度學習實戰之以Python為工具:基于主成分分析的人臉二維碼識別

注意:本文的下載教程,與以下文章的思路有相同點,也有不同點,最終目標只是讓讀者從多維度去熟練掌握本知識點。 下載教程:計算機視覺與深度學習實戰-以MATLAB和Python為工具_基于主成分分析的人臉二維碼識別_項目開發案例教程.pdf 一、引言 隨著科技的快速發展,計算機視覺…