angular简易计算器
说明:
用angular实现计算器效果,ui风格为暗黑
效果图:

step1: C:\Users\Administrator\WebstormProjects\untitled4\src\app\calnum\calnum.component.ts
import { Component } from '@angular/core';@Component({selector: 'app-calnum',imports: [],templateUrl: './calnum.component.html',styleUrl: './calnum.component.css'
})
export class CalnumComponent {mainDisplay = '0';subDisplay = '';currentValue = '';operator = '';firstOperand: number | null = null;handleInput(value: string): void {if (value === '.' && this.currentValue.includes('.')) return;this.currentValue = this.currentValue === '0' ? value : this.currentValue + value;this.mainDisplay = this.currentValue;}setOperator(op: string): void {if (this.currentValue === '') return;this.operator = op;this.firstOperand = parseFloat(this.currentValue);this.subDisplay = `${this.currentValue} ${op}`;this.currentValue = '';}calculate(): void {if (!this.firstOperand || !this.operator) return;const secondOperand = parseFloat(this.currentValue);let result: number;switch (this.operator) {case '+':result = this.firstOperand + secondOperand;break;case '-':result = this.firstOperand - secondOperand;break;case '×':result = this.firstOperand * secondOperand;break;case '÷':result = this.firstOperand / secondOperand;break;default:return;}this.mainDisplay = result.toString();this.subDisplay = `${this.firstOperand} ${this.operator} ${secondOperand} =`;this.currentValue = result.toString();this.firstOperand = null;this.operator = '';}clear(): void {this.mainDisplay = '0';this.subDisplay = '';this.currentValue = '';this.firstOperand = null;this.operator = '';}}
step2: C:\Users\Administrator\WebstormProjects\untitled4\src\app\calnum\calnum.component.html
<div class="calculator"><div class="display"><div class="sub-display">{{ subDisplay }}</div><div class="main-display">{{ mainDisplay }}</div></div><div class="buttons"><button (click)="clear()">AC</button><button (click)="handleInput('7')">7</button><button (click)="handleInput('8')">8</button><button (click)="handleInput('9')">9</button><button class="operator" (click)="setOperator('÷')">÷</button><button (click)="handleInput('4')">4</button><button (click)="handleInput('5')">5</button><button (click)="handleInput('6')">6</button><button class="operator" (click)="setOperator('×')">×</button><button (click)="handleInput('1')">1</button><button (click)="handleInput('2')">2</button><button (click)="handleInput('3')">3</button><button class="operator" (click)="setOperator('-')">-</button><button (click)="handleInput('0')">0</button><button (click)="handleInput('.')">.</button><button (click)="calculate()">=</button><button class="operator" (click)="setOperator('+')">+</button></div>
</div>
step3: C:\Users\Administrator\WebstormProjects\untitled4\src\app\calnum\calnum.component.css
/* calculator.component.css */
.calculator {background: #1a1a1a;border-radius: 16px;padding: 24px;width: 320px;box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3);border: 1px solid #333;margin: 20px auto;
}.display {background: #000;border-radius: 12px;padding: 20px;margin-bottom: 20px;text-align: right;border: 1px solid #333;
}.sub-display {color: #666;font-size: 14px;min-height: 20px;margin-bottom: 8px;font-family: 'Courier New', monospace;
}.main-display {color: #fff;font-size: 36px;font-weight: 300;letter-spacing: -1px;font-family: 'Segoe UI', sans-serif;
}.buttons {display: grid;grid-template-columns: repeat(4, 1fr);gap: 8px;
}button {border: none;border-radius: 8px;padding: 18px;font-size: 20px;cursor: pointer;transition: all 0.15s ease;background: #2d2d2d;color: #fff;font-weight: 500;
}button:hover {background: #3d3d3d;transform: translateY(-1px);
}button:active {transform: translateY(1px);
}button.operator {background: #ff9500;color: #fff;
}button.operator:hover {background: #ffaa33;
}button:nth-child(1) { /* AC 按钮 */background: #ff3b30;color: #fff;
}button:nth-child(1):hover {background: #ff453a;
}button:nth-child(19) { /* = 按钮 */background: #34c759;color: #fff;grid-column: span 2;
}button:nth-child(19):hover {background: #30d158;
}/* 数字按钮特殊效果 */
button:not(.operator):not(:first-child):not(:last-child) {background: #262626;
}/* 按钮文字阴影 */
button {text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}/* 输入动画 */
button {transition:background 0.2s ease,transform 0.1s cubic-bezier(0.4, 0, 0.2, 1),box-shadow 0.2s ease;
}/* 键盘聚焦效果 */
button:focus-visible {outline: 2px solid #007AFF;outline-offset: 2px;
}/* 显示区域渐变效果 */
.display {background: linear-gradient(145deg, #0a0a0a, #000);
}/* 操作符按钮激活状态 */
button.operator.active {background: #ffaa33;box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2);
}
end
相关文章:
angular简易计算器
说明: 用angular实现计算器效果,ui风格为暗黑 效果图: step1: C:\Users\Administrator\WebstormProjects\untitled4\src\app\calnum\calnum.component.ts import { Component } from angular/core;Component({selector: app-calnum,import…...
谈谈 ES 6.8 到 7.10 的功能变迁(3)- 查询方法篇
上一篇咱们了解了 ES 7.10 相较于 ES 6.8 新增的字段类型,这一篇我们继续了解新增的查询方法。 Interval 间隔查询: 功能介绍 Interval 查询,词项间距查询,可以根据匹配词项的顺序、间距和接近度对文档进行排名。主要解决的查询…...
16、Python面试题解析:python中的浅拷贝和深拷贝
在 Python 中,浅拷贝(Shallow Copy) 和 深拷贝(Deep Copy) 是处理对象复制的两种重要机制,它们的区别主要体现在对嵌套对象的处理方式上。以下是详细解析: 1. 浅拷贝(Shallow Copy&a…...
游戏引擎学习第119天
仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾和今天的议程 如果你们还记得昨天的进展,我们刚刚完成了优化工作,目标是让某个程序能够尽可能快速地运行。我觉得现在可以说它已经快速运行了。虽然可能还没有达到最快的速度,但我们…...
爬虫解析库:Beautiful Soup的详细使用
文章目录 1. 安装 Beautiful Soup2. 基本用法3. 选择元素4. 提取数据5. 遍历元素6. 修改元素7. 搜索元素8. 结合 requests 使用9. 示例:抓取并解析网页10. 注意事项 Beautiful Soup 是一个用于解析 HTML 和 XML 文档的 Python 库,它提供了简单易用的 API…...
OpenHarmony-4.基于dayu800 GPIO 实践(2)
基于dayu800 GPIO 进行开发 1.DAYU800开发板硬件接口 LicheePi 4A 板载 2x10pin 插针,其中有 16 个原生 IO,包括 6 个普通 IO,3 对串口,一个 SPI。TH1520 SOC 具有4个GPIO bank,每个bank最大有32个IO: …...
【C++设计模式】观察者模式(1/2):从基础到优化实现
1. 引言 在 C 软件与设计系列课程中,观察者模式是一个重要的设计模式。本系列课程旨在深入探讨该模式的实现与优化。在之前的课程里,我们已对观察者模式有了初步认识,本次将在前两次课程的基础上,进一步深入研究,着重…...
《机器学习数学基础》补充资料:欧几里得空间的推广
在《机器学习数学基础》第 1 章介绍了向量空间,并且说明了机器学习问题通常是在欧几里得空间。然而,随着机器学习技术的发展,特别是 AI 技术开始应用于科学研究中,必然会涉及到其他类型的空间。本文即在《机器学习数学基础》一书所…...
在配置PX4中出现的问题2
想要原教程的请看:第一次配置中出现的问题 前面一切正常(gazebo导入models那一步在刚刚解压好的文件夹里就删不掉stereo_camera等文件,ls打开也看不到,应该时我下的包里面本来就没有),到 make px4_sitl_def…...
2025-2-24-4.9 单调栈与单调队列(基础题)
文章目录 4.9 单调栈与单调队列(基础题)单调栈739. 每日温度42. 接雨水单调队列239. 滑动窗口最大值 4.9 单调栈与单调队列(基础题) 很有趣的两个数据结构。 原视频讲解链接 单调栈 739. 每日温度 题目链接 给定一个整数数组 te…...
python绘图之swarmplot分布散点图
swarmplot 是 Seaborn 提供的一种用于展示分类数据分布的散点图。它的主要作用是将数据点按照分类变量(通常是离散变量)进行分组,并在每个分类中以一种非重叠的方式展示数据点的位置。这种可视化方式可以帮助我们直观地理解数据在不同分类下的…...
数据库之MySQL——事务(一)
1、MySQL之事务的四大特性(ACID)? 原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操…...
Linux学习笔记之文件
1.文件 1.1文件属性 当我们创建文件时,文件就有了对应的属性,可以用mkdir创建目录,touch创建普通文件。用ls -al查看文件属性。 从上图可以看出目录或者文件的所有者,所属组,其他人权限,创建时间等信息。由…...
LLM学习
1、基础概念篇 大模型训练三部曲Pretraining SFT RLHF...
Classic Control Theory | 13 Complex Poles or Zeros (第13课笔记-中文版)
笔记链接:https://m.tb.cn/h.TtdexbP?tkeFAlejKBSzQhttps://m.tb.cn/h.TtdexbP?tkeFAlejKBSzQ...
给小米/红米手机root(工具基本为官方工具)——KernelSU篇
目录 前言准备工作下载刷机包xiaomirom下载刷机包【适用于MIUI和hyperOS】“hyper更新”微信小程序【只适用于hyperOS】 下载KernelSU刷机所需程序和驱动文件 开始刷机设置手机第一种刷机方式【KMI】推荐提取boot或init_boot分区 第二种刷机方式【GKI】不推荐 结语 前言 刷机需…...
【MySQL】表的增删查改(CRUD)(上)
个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 CRUD:Create(新增数据)、Retrieve(查询数据)、Update(修改数据)、Delete(修改数据…...
测试用例的Story是什么?
测试用例的 Story(用户故事)是指描述某个功能或场景的具体用户需求,它通常以简短的业务背景用户操作期望结果的方式呈现,使测试人员能够理解测试的目标和价值。用户故事能够帮助团队更好地设计测试用例,确保功能满足用…...
15.4 FAISS 向量数据库实战:构建毫秒级响应的智能销售问答系统
FAISS 向量数据库实战:构建毫秒级响应的智能销售问答系统 关键词:FAISS 向量数据库、销售知识库构建、相似度检索优化、大规模问答匹配、量化索引技术 1. 销售问答场景的向量化挑战与解决方案 1.1 传统检索方案痛点分析 #mermaid-svg-AeVgih79asJb7lb8 {font-family:"…...
Golang笔记——Interface类型
大家好,这里是,关注 公主号:Goodnote,专栏文章私信限时Free。本文详细介绍Golang的interface数据结构类型,包括基本实现和使用等。 文章目录 Go 语言中的 interface 详解接口定义实现接口空接口 interface{} 示例&…...
实战避坑:在TensorFlow/PyTorch里高效实现Depthwise Separable Conv,别再让模型训练慢如蜗牛
深度可分离卷积实战指南:如何在TensorFlow/PyTorch中实现高效计算 当你在移动端或边缘设备上部署轻量级模型时,Depthwise Separable Convolution(深度可分离卷积)无疑是减少计算量和参数量的利器。但很多工程师在实际应用中会发现…...
SSD异常掉电后,你的数据真的丢了吗?聊聊FTL映射表恢复的‘快照’魔法
SSD异常掉电后,你的数据真的丢了吗?聊聊FTL映射表恢复的‘快照’魔法 电脑突然蓝屏、插座意外断电、笔记本电池耗尽...这些突如其来的"断电惊魂"时刻,总让人心头一紧:刚刚没保存的文件是不是彻底消失了?SSD号…...
Chaplin:基于唇语识别的实时无声语音输入实战指南
Chaplin:基于唇语识别的实时无声语音输入实战指南 【免费下载链接】chaplin A real-time silent speech recognition tool. 项目地址: https://gitcode.com/gh_mirrors/chapl/chaplin 在嘈杂的会议室中无法进行语音输入?在图书馆需要安静地记录想…...
Windows 11经典游戏兼容性终极指南:5分钟快速修复方案
Windows 11经典游戏兼容性终极指南:5分钟快速修复方案 【免费下载链接】dxwrapper Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into ga…...
3步完成VRChat模型优化:Cats Blender插件完全指南
3步完成VRChat模型优化:Cats Blender插件完全指南 【免费下载链接】cats-blender-plugin :smiley_cat: A tool designed to shorten steps needed to import and optimize models into VRChat. Compatible models are: MMD, XNALara, Mixamo, DAZ/Poser, Blender Ri…...
3个步骤让你在电脑上畅玩Switch游戏:Ryujinx模拟器完全指南
3个步骤让你在电脑上畅玩Switch游戏:Ryujinx模拟器完全指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 你是否曾经想过,如果能在自己的电脑上体验《塞尔达传…...
intv_ai_mk11开源模型部署:支持国产化环境的Llama中文适配版
intv_ai_mk11开源模型部署:支持国产化环境的Llama中文适配版 1. 模型概述 intv_ai_mk11是基于Llama架构开发的中文文本生成模型,专为国产化环境优化设计。这个中等规模的模型特别适合处理通用问答、文本改写、解释说明和简短创作等任务。 与原始Llama…...
ANSYS分析问题:发现至少一个几何体在至少2个方向上只有1个单元,并且集成度降低。这种情况可能导致结果无效或是求解器主元错误。
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…...
从Java全栈到前端框架:一位工程师的面试实录
从Java全栈到前端框架:一位工程师的面试实录 今天,我作为一位拥有5年经验的Java全栈开发工程师,迎来了在一家知名互联网大厂的面试。这次面试由一位资深技术面试官主持,他以专业严谨的态度引导我逐步展示自己的技能和项目经验。 …...
Windows 11 LTSC微软商店安装终极指南:3步恢复完整应用生态
Windows 11 LTSC微软商店安装终极指南:3步恢复完整应用生态 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否在使用Windows 11 LTSC系…...
