HTML+CSS+JS简易计算器

news2024/9/22 11:38:23

HTML+CSS+JS简易计算器

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="index.css">
    <script src="index.js" defer></script>
</head>

<body>
    <div class="toggle"></div>
    <div class="calculator">
        <div class="button">
            <h2 id="result"></h2>
            <span id="clear">Clear</span>
            <span>/</span>
            <span>*</span>
            <span>7</span>
            <span>8</span>
            <span>9</span>
            <span>-</span>
            <span>4</span>
            <span>5</span>
            <span>6</span>
            <span id="plus">+</span>
            <span>1</span>
            <span>2</span>
            <span>3</span>
            <span>0</span>
            <span>00</span>
            <span>.</span>
            <span id="equal">=</span>
        </div>
    </div>

</body>

</html>

index.css

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    font-family: consolas;
}

body {
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #edf1f4;
}

.calculator {
    position: relative;
    margin-top: 50px ;
    width: 340px;
    padding: 20px;
    border-radius: 20px;
    box-shadow: 15px 15px 20px rgba(0, 0, 0, 0.1), -15px -15px 20px #fffb;
}

.calculator .button {
    position: relative;
    display: grid;
}

.calculator .button #result {
    padding: 0 20px;
    position: relative;
    left: 8px;
    grid-column: span 4;
    height: 100px;
    line-height: 100px;
    border-radius: 10px;
    text-align: end;
    font-size: 2em;
    color: rgb(11, 155, 107);
    overflow: hidden;
    font-weight: 500;
    width: calc(100% - 16px);
    user-select: none;
    box-shadow: inset 5px 5px 10px rgba(0, 0, 0, 0.1),
        inset -5px -5px 20px #fff;
}

.calculator .button span {
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 10px;
    border-radius: 10px;
    margin: 10px;
    min-width: 40px;
    font-size: 1.2em;
    border: 2px solid #e2ecf3;
    box-shadow: 5px 5px 10px #a7cbe5, -5px -5px 10px #e9ecef;
    cursor: pointer;
    user-select: none;
}

.calculator .button span:active {
    color: #739fea;
    box-shadow: inset 5px 5px 10px #a7cbe5, inset -5px -5px 10px #e9ecef;
}

.calculator .button span#clear {
    grid-column: span 2;
    background-color: #f44336;
    border: 2px solid #cfe4f4;
    color: #fff;
}

.calculator .button span#plus {
    grid-row: span 2;
    background-color: #31a935;
    border: 2px solid #cfe4f4;
    color: #fff;
}

.calculator .button span#equal {
    background: #2196f3;
    border: 2px solid #cfe4f4;
    color: #fff;
}

.calculator .buttons span#clear:active,
.calculator .buttons span#plus:active,
.calculator .buttons span#equal:active {
    box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.1),
        -5px -5px 10px #fff,
        inset 5px 5px 10px rgba(0, 0, 0, 0.1);
}

.toggle {
    position: fixed;
    top: 20px;
    right: 20px;
    background-color: #4b494c;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    cursor: pointer;
    border: 2px solid #edf1f4;
    box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.1),
        -5px -5px 10px #fff;
}

.dark .toggle {
    background: #edf1f4;
    border: 2px solid #333;
    box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5),
        -5px -5px 10px rgba(255, 255, 255, 0.25);
}
.dark 
{
  background: #282c2f;
}
.dark .calculator
{
  background: #33393e;
  box-shadow: 15px 15px 20px rgba(0,0,0,0.25),
  -15px -15px 20px rgba(255,255,255,0.1);
}
.dark .calculator #value 
{
  color: #eee;
  box-shadow: inset 5px 5px 10px rgba(0,0,0,0.5),
  inset -5px -5px 20px rgba(255,255,255,0.1);
}
.dark .calculator .buttons span 
{
  color: #eee;
  border: 2px solid #333;
  box-shadow: 5px 5px 10px rgba(0,0,0,0.25),
  -5px -5px 10px rgba(255,255,255,0.1);
}
.dark .calculator .buttons span:active 
{
  box-shadow: inset 5px 5px 10px rgba(0,0,0,0.25),
  inset -5px -5px 10px rgba(255,255,255,0.1);
}
.dark .calculator .buttons span#clear,
.dark .calculator .buttons span#plus,
.dark .calculator .buttons span#equal
{
  border: 2px solid #333;;
}
.dark .calculator .buttons span#clear:active,
.dark .calculator .buttons span#plus:active,
.dark .calculator .buttons span#equal:active
{
  box-shadow: inset 5px 5px 10px rgba(0,0,0,0.1);
} 


idnex.js


const button = document.querySelector('.button');
const btn = button.querySelectorAll('span');
const result = document.getElementById('result');
const toggle = document.querySelector('.toggle');
const body = document.querySelector('body');

for (let i = 0; i < btn.length; i++) {
  btn[i].addEventListener("click", function () {
    if (this.innerHTML == "=") {
      result.innerHTML = eval(result.innerHTML);
    } else {
     if (this.innerHTML == 'Clear') {
        result.innerHTML = " ";
      }else{
        result.innerHTML += this.innerHTML
      }
    }
  })
}
toggle.onclick = function(){
  body.classList.toggle('dark')
}


运行结果

image.png

image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1707044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测数据集 - 工地工人安全设备佩戴检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;工地工人安全设备佩戴检测数据集&#xff0c;真实场景数据生成增强后高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如楼宇建筑工地工人作业数据、道路建筑工地工人作业数据、室内工地工人作业数据、露天挖掘场景工人作业数据、工地工人自拍摆拍…

去除uni微信小程序button的边框

想要去除button的边框&#xff0c;如下未去除边框时&#xff0c;非常影响观感。 解决方法 使用伪元素::after&#xff0c;简单但是易忘&#xff0c;正常情况下,我直接是给button上加上一个类名直接设置border&#xff1a;none&#xff0c;但是这样是无效的&#xff0c;应该如下…

Windows搭建Nginx代理本地盘的文件(共享路径或本地路径)

文章目录 Windows搭建Nginx代理本地盘的文件 - 前言需求背景挂载网络共享路径检查连接状态下载Nginx编辑 Nginx 配置文件启动 Nginx检测Nginx是否成功启动使用方法远程共享路径示例本地文件示例 测试 Windows搭建Nginx代理本地盘的文件 - 前言 在开发过程中&#xff0c;确保文…

Android13 基座充电屏保

屏幕保护有两个设置可选&#xff1a;默认为插入基座充电时 通过DreamBackend启用屏保&#xff0c;并且保存选择的时机 //QSSI.13\packages\apps\Settings\src\com\android\settings\dream\WhenToDreamPicker.java Override protected boolean setDefaultKey(String key) {mBac…

数组和特殊矩阵的压缩存储

文章目录 一维数组二维数组特殊矩阵对称矩阵三角矩阵三对角矩阵稀疏矩阵三元组法十字链表法 一维数组 以一维数组A[0...n-1]为例&#xff0c;其存储结构关系式为 LOC ⁡ ( a i ) LOC ⁡ ( a 0 ) i L ( 0 ⩽ i < n ) \operatorname{LOC}\left(a_i\right)\operatorname{LO…

AI手语研究数据集;视频转视频翻译和风格化功能如黏土动画;AI检测猫咪行为;开放源码的AI驱动搜索引擎Perplexica

✨ 1: Prompt2Sign 多语言手语数据集&#xff0c;便捷高效用于手语研究。 Prompt2Sign 是一个全面的多语言手语数据集&#xff0c;旨在通过工具自动获取和处理网络上的手语视频。该数据集具有高效、轻量的特点&#xff0c;旨在减少先前手语数据集的不足之处。该数据集目前包含…

基于springboot+vue的公司资产网站(全套)

一、系统架构 前端&#xff1a;vue2 | element-ui 后端&#xff1a;springboot | mybatis 环境&#xff1a;jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. 管理后台-登录 02. 管理后台-首页 03. 管理后台-个人中心-修改密码 04. 管理后台-个人…

CentOS7 部署单机版 ElasticSearch + Logstash

一、部署ElasticSearch Elasticsearch部署参考下面文章&#xff1a; CentOS7 部署单机版 elasticsearch-CSDN博客文章浏览阅读285次&#xff0c;点赞6次&#xff0c;收藏3次。ElasticSearch&#xff0c;用于检索、聚合分析和大数据存储https://blog.csdn.net/weixin_44295677…

N1912A P 系列双通道功率计

N1912A 双通道功率计 产品综述 <<<P 系列双通道功率计>>> Keysight N1912A P 系列双通道功率计可以提供峰值功率、峰均比、平均功率、上升时间、下降时间 NS 脉冲宽度测量。 “ 功能特点 30 MHz 视频带宽 能够以高达 100 MSa/s 的采样率执行单次实时捕…

从华为云OBS到AWS云上S3:迁移及相关事项

随着云计算的快速发展&#xff0c;企业越来越倾向于将数据存储和管理移到云端。华为云的对象存储服务&#xff08;OBS&#xff09;和亚马逊云服务&#xff08;AWS&#xff09;上的简单存储服务&#xff08;S3&#xff09;是两个备受欢迎的选择。对于那些考虑从华为云OBS迁移到A…

OrangePi AIpro 变身 Android 打包机

主板基本信息介绍 OrangePi AIpro&#xff0c;是香橙派联合华为精心打造&#xff0c;建设人工智能新生态而设计的一款开发板&#xff0c;这次为大家分享下我上手的这款 OrangePi AIpro 8GB&#xff08;算力达8TOPS&#xff09; 的一些小小的经验。 基本参数如下&#xff1a; …

【亲测有效】发现了适用于Mac用户的ChatGPT客户端登陆方法

项目场景&#xff1a; Mac用户的ChatGPT客户端登陆 问题描述 无法使用 解决方案&#xff1a; 1.下载登陆ChatGPT客户端 https://persistent.oaistatic.com/sidekick/public/C...https://persistent.oaistatic.com/sidekick/public/ChatGPT_Desktop_public_latest.dmg 2.登陆…

设计模式 21 备忘录模式 Memento Pattern

设计模式 21 备忘录模式 Memento Pattern 1.定义 备忘录模式是一种行为型设计模式&#xff0c;它允许你将一个对象的状态保存到一个独立的“备忘录”对象中&#xff0c;并在之后恢复到该状态。 2.内涵 主要用于以下场景&#xff1a; 需要保存对象状态以备恢复&#xff1a; 当…

Kubernetes集群调度

一.List-Watch 1.调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 P…

【OCPP】ocpp1.6协议第3.13章节SmartCharging介绍及翻译

目录 3.13 SmartCharging智能充电-概述 智能充电的目标 关键功能 消息类型 负载管理 动态电量配置 总结 3.13 SmartCharging智能充电-译文 3.13.1 Charging Profile Purpose充电配置的目的 3.13.2 Stacking charging profile堆叠充电配置 3.13.3 Combining charging profile pu…

如何在线转换图片的格式?一键修改图片格式的方法

图片是日常生活和工作中的一种常用的内容展示类型&#xff0c;在使用图片的时候不同用途需要使用的图片格式也是不同的&#xff0c;比如我们手中有一张jpg格式图片&#xff0c;但是平台上传要求格式是png&#xff0c;那么怎样才能将jpg转png格式呢&#xff1f;下面将教大家图片…

前端面试:项目细节重难点问题分享

面试官提问&#xff1a;我现在给你出一个项目实际遇到的问题&#xff1a;由于后端比较忙&#xff0c;所以我们这边的列表数据排序需要前端最近实现&#xff0c;那你会怎么实现排序呢&#xff1f; 答&#xff1a;我的回答&#xff1a;确实&#xff0c;数据都是由后端实现的&…

2024年上半年软件设计师试题及答案(回忆版)--选择题

基础知识选择题 基础知识选择题 1,2,3][4,5,6][1,2,3,4,5,6] &#xff08;总&#xff1a;1分&#xff09; &#xff08;注意&#xff1a;括号内的是截止当前题目总分&#xff09; vlan不能隔绝内外网 &#xff08;2分&#xff09; 链路层使用交换机&#xff0c;…

关于已配好java环境但双击无法打开jar包的解决方案

如果你已经装好了 java 环境直接跳到最后看解决方法即可 先说一下你安装的 java 环境&#xff0c;如果完全是默认选项安装&#xff0c;则会安装 jdk 和 jre&#xff0c;并且在安装 jre 时还需要安装目录下为空&#xff0c;其实 jre 的安装是多余的&#xff0c;因为安装的 jdk 里…

Integer包装类

面试题&#xff1a; 自动装箱:把基本数据类型会自动的变成其对应的包装类 自动拆箱:把包装类自动的变成其对象的基本数据类型 package Integer;public class Demo {public static void main(String[] args) {Integer i 10;String binaryString Integer.toBinaryString(i);Str…