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{} 示例&…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
并发编程 - go版
1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...
02.运算符
目录 什么是运算符 算术运算符 1.基本四则运算符 2.增量运算符 3.自增/自减运算符 关系运算符 逻辑运算符 &&:逻辑与 ||:逻辑或 !:逻辑非 短路求值 位运算符 按位与&: 按位或 | 按位取反~ …...
