【Java 进阶篇】JavaScript电灯开关案例:从原理到实现

news2024/11/30 20:35:40

在这里插入图片描述

JavaScript是一门强大的编程语言,它可以用来创建各种交互式网页应用。在这篇博客中,我们将通过一个简单的电灯开关案例来深入了解JavaScript的基础概念,包括HTML、CSS和JavaScript的结合使用。我们将从头开始构建这个案例,逐步引入相关概念,以帮助初学者更好地理解JavaScript的工作原理。

1. 介绍

在这个案例中,我们将创建一个网页,上面有一个电灯和一个按钮。按钮可以切换电灯的开关状态,当电灯亮起时,背景颜色将变成黄色;当电灯关闭时,背景颜色将变成灰色。这个案例将帮助您理解以下关键概念:

  • HTML结构:创建HTML元素,包括按钮和灯。
  • CSS样式:定义按钮、灯和页面的样式。
  • JavaScript交互:通过JavaScript来实现按钮与灯的交互。

2. 准备工作

在开始之前,我们需要准备一些基本的工作,包括创建HTML文件、CSS文件和JavaScript文件。您可以使用任何文本编辑器,比如VS Code、Sublime Text等,创建这些文件。

2.1 创建HTML文件

首先,创建一个HTML文件,可以命名为index.html,并使用以下内容填充:

<!DOCTYPE html>
<html>
<head>
    <title>电灯开关案例</title>
    <link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
    <h1>电灯开关案例</h1>
    <div class="light" id="light"></div>
    <button id="toggleButton">切换开关</button>
    <script src="script.js"></script>
</body>
</html>

这个HTML文件定义了网页的结构,包括一个标题、一个light<div>元素作为电灯,一个toggleButton的按钮,以及引入了外部的CSS和JavaScript文件。

2.2 创建CSS文件

接下来,创建一个CSS文件,可以命名为styles.css,并使用以下内容填充:

body {
    font-family: Arial, sans-serif;
    text-align: center;
}

.light {
    width: 100px;
    height: 100px;
    background-color: gray;
    margin: 20px auto;
    border-radius: 50%;
    transition: background-color 0.3s;
}

#toggleButton {
    background-color: #3498db;
    color: #fff;
    border: none;
    padding: 10px 20px;
    cursor: pointer;
}

#toggleButton:hover {
    background-color: #2980b9;
}

这个CSS文件定义了页面的样式,包括页面字体、按钮和灯的样式。注意,我们使用了transition属性来实现电灯背景颜色切换时的平滑过渡效果。

2.3 创建JavaScript文件

最后,创建一个JavaScript文件,可以命名为script.js,用于实现电灯开关的交互。以下是JavaScript文件的内容:

// 获取按钮和灯的元素
const toggleButton = document.getElementById('toggleButton');
const light = document.getElementById('light');

// 初始电灯状态为关闭
let isLightOn = false;

// 按钮点击事件处理程序
toggleButton.addEventListener('click', function() {
    if (isLightOn) {
        // 关闭电灯
        light.style.backgroundColor = 'gray';
        isLightOn = false;
    } else {
        // 打开电灯
        light.style.backgroundColor = 'yellow';
        isLightOn = true;
    }
});

这段JavaScript代码首先获取了按钮和电灯的DOM元素,然后定义了一个变量isLightOn,用于跟踪电灯的状态。随后,我们为按钮添加了一个点击事件处理程序,当按钮被点击时,它会检查isLightOn的状态。如果isLightOntrue,表示电灯已经亮起,那么点击按钮后会将电灯关闭,背景颜色变为灰色;如果isLightOnfalse,表示电灯已经关闭,那么点击按钮后会将电灯打开,背景颜色变为黄色。同时,我们使用了style.backgroundColor属性来更改电灯的背景颜色。

3. 运行电灯开关案例

现在,我们已经完成了HTML、CSS和JavaScript的准备工作。您可以在浏览器中打开index.html文件来查看电灯开关案例的效果。当您点击"切换开关"按钮时,电灯的状态将会切换,背景颜色也会相应地改变。

这个案例涵盖了HTML元素的创建,CSS样式的定义以及JavaScript的交互,是一个入门级别的示例,有助于初学者更好地理解这些基础概念。

4. 总结

在这篇博客中,我们通过一个电灯开关案例详细介绍了HTML、CSS和JavaScript的结合使用。我们创建了一个包含按钮和电灯的网页,通过JavaScript来实现了电灯的开关功能。这个案例涵盖了HTML元素的创建、CSS样式的定义以及JavaScript的交互,有助于初学者更好地理解这些基础概念。

希望这个案例对您学习前端开发有所帮助,同时也为您提供了一个入门级别的项目来练习和掌握这些技能。如果您想要深入学习前端开发,还有很多更复杂和有趣的项目等待着您,继续努力学习吧!

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

Megatron-LM GPT 源码分析(一) Tensor Parallel分析

引用 本文基于开源代码 https://github.com/NVIDIA/Megatron-LM &#xff0c;通过GPT的模型运行示例&#xff0c;从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。 Tensor Parallel源码分析

LabVIEW生产者消费者架构

LabVIEW生产者消费者架构 生产者/消费者模式可以轻松地同时处理多个进程&#xff0c;同时还能以不同速率迭代。 缓冲通信 当多个进程以不同速度运行时&#xff0c;就适合采用进程间缓冲通信。有了足够大的缓冲区后&#xff0c;生产者循环可以以快于消费者循环的速度运行&…

Java实现一个Redis可视化工具

https://github.com/tanhuang2016/RedisDesktopManagerFX https://gitee.com/hod_th/RedisDesktopManagerFX 老铁们,上面两个地址帮我点个star呢,谢谢 基本功能后面慢慢完善,有想法可以提需求哦 基本操作 string类型操作 list hash set zset类型操作

C++继承探究

文章目录 一、继承相关概念1、 基本概念2、继承方式3、如何构造基类4、基类和派生类对象赋值转换5、继承中的作用域 二、菱形继承的问题及解决方案三、虚继承的原理四、继承 VS 组合 一、继承相关概念 1、 基本概念 代码复用是编程语言设计的核心&#xff0c;对于一个函数&…

数学之-曼德勃罗

参考: 分形系统介绍以及代码实现 - 知乎 Java实现高分辨率曼德伯罗特集 - 知乎 Mandelbrot集的最新变化形态一览——MandelBox&#xff0c;Mandelbulb&#xff0c;Burning Ship&#xff0c;NebulaBrot-CSDN博客

VL53L5CX驱动开发(5)----运动阈值检测

VL53L5CX驱动开发----5.运动阈值检测 概述视频教学样品申请源码下载生成STM32CUBEMX选择MCU串口配置IIC配置 INT设置配置使能与复位X-CUBE-TOF1串口重定向代码配置检测流程TOF代码配置主程序演示结果 概述 本章目的是展示如何充分利用VL53L5CX传感器的高级特性&#xff0c;通过…

【LLM微调范式1】Prefix-Tuning: Optimizing Continuous Prompts for Generation

论文标题&#xff1a;Prefix-Tuning: Optimizing Continuous Prompts for Generation 论文作者&#xff1a;Xiang Lisa Li, Percy Liang 论文原文&#xff1a;https://arxiv.org/abs/2101.00190 论文出处&#xff1a;ACL 2021 论文被引&#xff1a;1588&#xff08;2023/10/14&…

C# 图解教程 第5版 —— 第6章 方法

文章目录 6.1 方法的结构6.2 方法体内部的代码执行6.3 局部变量6.3.1 类型推断和 var 关键字6.3.2 嵌套块中的局部变量 6.4 局部常量6.5 控制流6.6 方法调用&#xff08;*&#xff09;6.7 返回值&#xff08;*&#xff09;6.8 返回语句和 void 方法6.9 局部函数6.10 参数&#…

关于数据链路层(初步)

以太网帧格式&#xff1a; 源地址和目的地址是指网卡的硬件地址&#xff08;也叫MAC地址&#xff09;&#xff0c;长度是48位&#xff0c;是在网卡出厂时固 化的&#xff1b; 帧协议类型字段有三种值&#xff0c;分别对应载荷的形式&#xff0c;有IP、ARP、RARP&#xff1b; …

Go-Python-Java-C-LeetCode高分解法-第十周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接&#xff1a;LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏&#xff0c;每日一题&#xff0c;和博主一起进步 LeetCode专栏 我搜集到了50道精选题&#xff0c;适合速成概览大部分常用算法 突…

LuaJit交叉编译移植到ARM Linux

简述 Lua与LuaJit的主要区别在于LuaJIT是基于JIT&#xff08;Just-In-Time&#xff09;技术开发的&#xff0c;可以实现动态编译和执行代码&#xff0c;从而提高了程序的运行效率。而Lua是基于解释器技术开发的&#xff0c;不能像LuaJIT那样进行代码的即时编译和执行。因此&…

手摸手Redis7配置哨兵模式(一主二从三哨兵)

安装redis #安装gcc yum -y install gcc gcc-c #安装net-tools yum -y install net-tools #官网https://redis.io/ cd /opt/ wget http://download.redis.io/releases/redis-7.0.4.tar.gz 解压至/opt/目录下 tar -zxvf redis-7.0.4.tar.gz -C /opt/ #编译安装 make make ins…

解决“本地计算机上的 mysql 服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止”

电脑在服务中启动mysql报 如果你之前没有修改过数据库相关文件那么执行以下步骤 1.在数据库的根目录删除data文件&#xff08;删除前最好先备份一下&#xff09; 2&#xff0c;然后重新创建一个data文件夹 3.点击进入bin目录&#xff0c;点击上面的路径 4.点击后上面路径变蓝…

MATLAB——BP神经网络信号拟合程序

欢迎关注公众号“电击小子程高兴的MATLAB小屋” %% 学习目标&#xff1a;BP神经网络 %% 函数逼近 数据压缩 模式识别 %% 考虑要素&#xff1a;网络层数 输入层的节点数 输出层的节点数 隐含层的节点数 %% 传输函数 训练方法 %% 对信号曲线进行拟合 clear all; cle…

04_led灯闪烁

创建新的项目&#xff0c;步骤和教程2一样&#xff0c;项目结构和创建后的代码如下所示 具体代码如下所示&#xff1a;使用16进制加延迟的方式控制led的亮灭0表示亮1表示灭 #include <REGX52.H> #include <INTRINS.H> void Delay500ms() //11.0592MHz {unsigne…

网页在线打开PDF_网站中在线查看PDF之pdf.js

一、pdf.js简介 PDF.js 是一个使用 HTML5 构建的便携式文档格式查看器。 pdf.js 是社区驱动的&#xff0c;并由 Mozilla 支持。我们的目标是为解析和呈现 PDF 创建一个通用的、基于 Web 标准的平台。 pdf.js 将 PDF 文档转换为 HTML5 Canvas 元素&#xff0c;并使用 JavaScr…

ASAN地址消毒+GCOV覆盖率分析

安全之安全(security)博客目录导读 覆盖率分析汇总 目录 一、代码示例 二、代码编译及运行 三、ASAN地址消毒&#xff08;找到溢出&泄露点&#xff09; 四、GCOV覆盖率分析 ASAN相关详见ASAN(AddressSanitizer)地址消毒动态代码分析 GCOV相关详见GCOV覆盖率分析 现…

Doris入门了解

微信公众号&#xff1a;大数据高性能计算 大数据存储与分析入门学习文档&#xff1a;深入了解 Doris 大数据技术已成为现代数据处理的核心组成部分&#xff0c;为企业提供了更多洞察和决策支持。Doris&#xff08;以前称为Palo&#xff09;是一种用于大规模数据存储和分析的开…

【LeetCode刷题(数据结构与算法)】:完全二叉树的节点个数

完全二叉树 的定义如下&#xff1a;在完全二叉树中&#xff0c;除了最底层节点可能没填满外&#xff0c;其余每层节点数都达到最大值&#xff0c;并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层&#xff0c;则该层包含 1~ 2h 个节点 输入&#xff1a;r…

Megatron-LM GPT 源码分析(二) Sequence Parallel分析

引用 本文基于开源代码 https://github.com/NVIDIA/Megatron-LM &#xff0c;延续上一篇Megatron-LM GPT 源码分析&#xff08;一&#xff09; Tensor Parallel分析 通过对GPT的模型运行示例&#xff0c;从三个维度 - 模型结构、代码运行、代码逻辑说明 对其源码做深入的分析。…