前端JS按钮点击事件、跳出弹窗、遮罩的实战示例

前端JS 按钮事件、弹窗、遮罩实战示例

文章目录

  • 前端JS 按钮事件、弹窗、遮罩实战示例
  • 一、开始
  • 二、功能实现
  • 三、具体代码如下
    • 1、运行结果
    • 2、具体代码如下
  • 四、功能解析
    • 1、index.html
    • 2、button.css
    • 3、server.js

一、开始

各位未来的开发者请上座,闲暇的时候发现,这一块好像能做一个简单的实战示例,遂写了写。

二、功能实现

功能描述:

  1. 两个按键,登录按键和注册按钮
  2. 初始颜色背景是浅灰色,按键是黑色。
  3. 点击后按键背景变为天蓝色,内容文字变为白色
  4. 同时中间跳出弹窗显示登录/注册成功。
  5. 等待2秒或者点击遮罩弹窗关闭

三、具体代码如下

1、运行结果

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2、具体代码如下

下面的代码可以直接运行

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>登录注册示例</title><style>.button {background-color: lightgrey; /* 初始背景颜色 */color: black; /* 初始文字颜色 */padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;transition: background-color 0.3s, color 0.3s; /* 过渡效果 */}.button.active {background-color: skyblue; /* 激活状态背景颜色 */color: white; /* 激活状态文字颜色 */}.modal {display: none; /* 默认不显示 */position: fixed;left: 50%;top: 50%;transform: translate(-50%, -50%);padding: 20px;border: 1px solid #ddd;background-color: white;z-index: 1000;}.overlay {display: none; /* 默认不显示 */position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */z-index: 999;}</style></head><body><button id="loginButton" class="button">登录</button><button id="registerButton" class="button">注册</button><div id="modal" class="modal"><p id="modalContent">登录成功</p></div><div id="overlay" class="overlay"></div><script>// 获取元素var loginButton = document.getElementById('loginButton');var registerButton = document.getElementById('registerButton');var modal = document.getElementById('modal');var overlay = document.getElementById('overlay');var modalContent = document.getElementById('modalContent');// 登录按钮点击事件loginButton.addEventListener('click', function() {modalContent.textContent = '登录成功'; // 设置弹窗内容showModal();this.classList.add('active'); // 添加激活状态的样式});// 注册按钮点击事件registerButton.addEventListener('click', function() {modalContent.textContent = '注册成功'; // 设置弹窗内容showModal();this.classList.add('active'); // 添加激活状态的样式});// 显示弹窗和遮罩层function showModal() {modal.style.display = 'block';overlay.style.display = 'block';setTimeout(function() {modal.style.display = 'none';overlay.style.display = 'none';resetButtons(); // 2秒后隐藏弹窗和遮罩层,并重置按钮}, 2000);}// 重置按钮样式function resetButtons() {loginButton.classList.remove('active');registerButton.classList.remove('active');}// 点击遮罩层也可以关闭弹窗overlay.addEventListener('click', function() {modal.style.display = 'none';overlay.style.display = 'none';resetButtons();});</script></body>
</html>

四、功能解析

为了方便大家学习,对这个简短的程序进行一下拆解
我将其拆解为三个文件,这三个文件说白了就是把最开始上面的那坨拆分前端三件套:Html,CSS,JS。

1、index.html

index的程序结构相对简洁
实现功能:

  1. 设置两个按钮登录与注册
  2. 设置一个div 包裹一个文本。文本初始内容随意(后面会改)(弹窗)
  3. 设置一个空div (遮罩)
  4. 导入button.css和server.js

注:弹窗和遮罩一开始需要设置好,然后一开始再隐藏起来
依据上述功能理念,设置代码如下

<!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="button.css"></head><body><button id="loginButton" class="button">登录</button><button id="registerButton" class="button">注册</button><div id="modal" class="modal"><p id="modalContent">登录成功</p></div><div id="overlay" class="overlay"></div><script src="server.js"></script></body>
</html>

2、button.css

.button {background-color: lightgrey; /* 初始背景颜色 */color: black; /* 初始文字颜色 */padding: 10px 20px;border: none;border-radius: 5px;cursor: pointer;transition: background-color 0.3s, color 0.3s; /* 过渡效果 */
}
.button.active {background-color: skyblue; /* 激活状态背景颜色 */color: white; /* 激活状态文字颜色 */
}
.modal {display: none; /* 默认不显示 */position: fixed;left: 50%;top: 50%;transform: translate(-50%, -50%);padding: 20px;border: 1px solid #ddd;background-color: white;z-index: 1000;
}
.overlay {display: none; /* 默认不显示 */position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.5); /* 半透明背景 */z-index: 999;
}

下面简单讲一下这些样式的各项功能设置的作用,不需要的同学跳过即可

按键 button样式解析

background-color: lightgrey;:设置按钮的背景颜色为浅灰色(lightgrey)。

color: black;:设置按钮文字的颜色为黑色。

padding: 10px 20px;:设置按钮内容与按钮边框之间的内边距,上下为10像素,左右为20像素。

border: none;:设置按钮没有边框。

border-radius: 5px;:设置按钮的边框圆角半径为5像素,使按钮的边角变得圆润。

cursor: pointer;:设置鼠标悬停在按钮上时的光标样式为手型,表示该区域可以点击。

transition: background-color 0.3s, color
0.3s;:这一行定义了按钮背景颜色和文字颜色的过渡效果。当按钮的背景颜色或文字颜色发生变化时,变化会在0.3秒内平滑地过渡,而不是突然改变,给用户带来更流畅的视觉体验。

样式解析汇总:这些样式属性一起定义了一个简洁而有吸引力的按钮样式,使按钮看起来更加现代化和易于与用户交互。

.button.active样式解析:激活样式就简单改一下背景和字体颜色

弹窗样式 .modal样式解析

display: none;:设置元素不显示,即在页面上不可见。这通常用于隐藏元素,可以通过 JavaScript 或其他方式来控制显示。

position: fixed;:设置元素的定位方式为固定定位,元素相对于浏览器窗口固定位置,不随页面滚动而移动。

left: 50%;:将元素左边缘定位在距离父元素左边缘50%的位置,即居中水平定位。

top: 50%;:将元素上边缘定位在距离父元素顶部50%的位置,即居中垂直定位。

transform: translate(-50%, -50%);:使用 transform 属性的 translate
函数将元素向左和向上移动自身宽度和高度的50%,以便实现水平和垂直居中定位。

padding: 20px;:设置元素内容与元素边框之间的内边距为20像素。

border: 1px solid #ddd;:设置元素的边框为1像素宽的实线边框,颜色为淡灰色(#ddd)。

background-color: white;:设置元素的背景颜色为白色。

z-index: 1000;:设置元素在层叠顺序中的位置为1000,使其位于具有较低 z-index 值的元素之上。

样式解析汇总:这段代码描述了一个在页面中居中显示、具有白色背景、灰色边框和一定内边距的固定定位元素,且在层叠顺序中处于较高的位置。

遮罩 .overlay 样式解析: 基本属性上面都讲过了,参考理解即可就不赘述了。

3、server.js

下面是JS部分

  1. 获取登录,注册按键的对象。获取弹窗,弹窗内容,遮罩的对象,方便操作设计函数:getElementById()
  2. 登录/注册按键添加点击事件:(1)修改弹窗内容为登录/注册成功、(2)显示弹窗、(3)登录按键添加激活样式
  3. 添加遮罩点击事件:弹窗、遮罩隐藏,去除登录,注册上面的激活样式

注:隐藏方法:设置样式style.display = ‘none’,显示方法:设置style.display = ‘block’;
然后就没啥难点,就按部就班写完脚本即可

// 显示弹窗和遮罩层function showModal() {modal.style.display = 'block';overlay.style.display = 'block';setTimeout(function() {modal.style.display = 'none';overlay.style.display = 'none';resetButtons(); // 2秒后隐藏弹窗和遮罩层,并重置按钮}, 2000);}// 重置按钮样式function resetButtons() {loginButton.classList.remove('active');registerButton.classList.remove('active');}// 获取元素var loginButton = document.getElementById('loginButton');var registerButton = document.getElementById('registerButton');var modal = document.getElementById('modal');var overlay = document.getElementById('overlay');var modalContent = document.getElementById('modalContent');// 登录按钮点击事件loginButton.addEventListener('click', function() {modalContent.textContent = '登录成功'; // 设置弹窗内容showModal();this.classList.add('active'); // 添加激活状态的样式});// 注册按钮点击事件registerButton.addEventListener('click', function() {modalContent.textContent = '注册成功'; // 设置弹窗内容showModal();this.classList.add('active'); // 添加激活状态的样式});// 点击遮罩层也可以关闭弹窗overlay.addEventListener('click', function() {modal.style.display = 'none';overlay.style.display = 'none';resetButtons();});

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ViT: transformer在图像领域的应用

文章目录 1. 概要2. 方法3. 实验3.1 Compare with SOTA3.2 PRE-TRAINING DATA REQUIREMENTS3.3 SCALING STUDY3.4 自监督学习 4. 总结参考 论文&#xff1a; An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale 代码&#xff1a;https://github.com…

读十堂极简人工智能课笔记05_无监督学习

1. 自我改善 1.1. 只有学会了如何学习和改变的人&#xff0c;才称得上是受过教育的人 1.1.1. 卡尔罗杰斯 1.2. 人工智能如果只是学习纯理论的游戏&#xff08;从国际象棋和围棋到电脑游戏&#xff09;&#xff0c;其结果已然可以令人惊叹 1.3. 让大多数机器人玩叠叠乐游戏&…

Python算法题集_将有序数组转换为二叉搜索树

Python算法题集_将有序数组转换为二叉搜索树 题108&#xff1a;将有序数组转换为二叉搜索树1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【极简代码递归】2) 改进版一【多行代码递归】3) 改进版二【极简代码递归传递下标】 4. 最优算法 本文为…

【类与对象 -2】学习类的6个默认成员函数中的构造函数与析构函数

目录 1.类的6个默认成员函数 2.构造函数 2.1概念 2.2特性 3.析构函数 3.1析构函数的概念 3.2特性 1.类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;…

解锁Spring Boot中的设计模式—05.策略模式:探索【策略模式】的奥秘与应用实践!

1.策略者工厂模式&#xff08;Map版本&#xff09; 1.需求背景 假设有一个销售系统&#xff0c;需要根据不同的促销活动对商品进行打折或者其他形式的优惠。这些促销活动可以是针对不同商品类别的&#xff0c;比如男装、女装等。 2.需求实现 活动策略接口&#xff1a;定义了…

后端学习:Maven模型与Springboot框架

Maven 初识Maven Maven:是Apache旗下的一个开源项目&#xff0c;是一款用于管理和构建java项目的工具。 Maven的作用1.依赖管理2.统一项目结构3.项目构建依赖管理&#xff1a;方便快捷的管理项目依赖的资源(jar包)&#xff0c;避免版本冲突问题   当使用maven进行项目依赖…

【教学类-19-10】20240214《ABAB式-规律黏贴18格-手工纸15*15CM-一页3种图案,AB一组样板,纵向、有边框》(中班)

背景需求 利用15*15CM手工纸制作AB色块手环&#xff08;手工纸自带色彩&#xff09;&#xff0c;一页3个图案&#xff0c;2条为一组&#xff0c;画图案&#xff0c;黏贴成一个手环。 素材准备 代码展示 # # 作者&#xff1a;阿夏 # 时间&#xff1a;2024年2月14日 # 名称&…

19-k8s的附加组件-coreDNS组件

一、概念 coreDNS组件&#xff1a;就是将svc资源的名称解析成ClusterIP&#xff1b; kubeadm部署的k8s集群自带coreDNS组件&#xff0c;二进制部署需要自己手动部署&#xff1b; [rootk8s231 ~]# kubectl get pods -o wide -A k8s系统中安装了coreDNS组件后&#xff0c;会有一个…

BuildAdmin - 免费开源可商用!基于 ThinkPHP8 和 Vue3 等流行技术栈打造的商业级后台管理系统

一款包含 PHP 服务端和 Vue 前端代码的 admin 管理系统&#xff0c;实用性很强&#xff0c;推荐给大家。 BuildAdmin 是一个成熟的后台管理系统&#xff0c;后端服务采用 ThinkPHP8 &#xff0c;数据库使用 Mysql&#xff0c;前端部分则使用当前流行的 Vue3 / TypeScript / Vi…

K8s进阶之路-安装部署K8s

参考&#xff1a;&#xff08;部署过程参考的下面红色字体文档链接就可以&#xff0c;步骤很详细&#xff0c;重点部分在下面做了标注&#xff09; 安装部署K8S集群文档&#xff1a; 使用kubeadm方式搭建K8S集群 GitBook 本机&#xff1a; master&#xff1a;10.0.0.13 maste…

Vulnhub靶场 DC-6

目录 一、环境搭建 二、主机发现 三、漏洞复现 1、wpscan工具 2、后台识别 dirsearch 3、爆破密码 4、rce漏洞利用 activity monitor 5、rce写shell 6、新线索 账户 7、提权 8、拿取flag 四、总结 一、环境搭建 Vulnhub靶机下载&#xff1a; 官网地址&#xff1a…

stable diffusion webui学习总结(2):技巧汇总

一、脸部修复&#xff1a;解决在低分辨率下&#xff0c;脸部生成异常的问题 勾选ADetailer&#xff0c;会在生成图片后&#xff0c;用更高的分辨率&#xff0c;对于脸部重新生成一遍 二、高清放大&#xff1a;低分辨率照片提升到高分辨率&#xff0c;并丰富内容细节 1、先通过…