js制作带有遮罩弹出层实现登录注册表单特效代码分享

下面将详细讲解实现“JS制作带有遮罩弹出层实现登录注册表单特效”的完整攻略。

1.制作遮罩弹出层

要实现带有遮罩弹出层的效果,首先需要制作一个遮罩层和一个弹出层。

遮罩层

遮罩层是为了使背景页面不可操作以及页面内容有一定的透明度,使用 position: fixed 定位方式,铺满整个页面,且设置 z-index 层级高于其他层级。

遮罩层代码如下:

.overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.4);
  z-index: 9999;
}

弹出层

弹出层可以用来显示用户的登录或注册表单。使用 position: fixed 定位方式,可以在遮罩层中心位置放置一个盒子,盒子内填充登录或注册表单等内容,并使用 z-index 层级高于遮罩层以及其他内容,从而展现出弹出层的效果。

弹出层代码如下:

.popup {
  display: none;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 400px;
  height: 300px;
  background-color: #fff;
  border: 1px solid #eee;
  box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.3);
  z-index: 10000;
}

2.实现JavaScript弹出效果

当用户点击登录按钮时,需要让“遮罩层”和“弹出层”显示出来,当用户点击背景区域或关闭按钮时,则“遮罩层”和“弹出层”需要消失。

报错事件的处理需要使用JavaScript实现。具体方法是使用addEventListener 添加鼠标点击事件和关闭按钮点击事件,同时使用 classList 方法切换“遮罩层”和“弹出层”的 display 属性,从而实现弹出层效果。

示例代码如下:

// 获取登录按钮
let loginBtn = document.querySelector('#loginBtn');
// 获取关闭按钮
let closeBtn = document.querySelector('#closeBtn');
// 获取遮罩层
let overlay = document.querySelector('.overlay');
// 获取弹出层
let popup = document.querySelector('.popup');

// 监听登录按钮的点击事件
loginBtn.addEventListener('click', function () {
  // 打开遮罩层和弹出层
  overlay.classList.add('active');
  popup.classList.add('active');
});

// 监听关闭按钮的点击事件
closeBtn.addEventListener('click', function () {
  // 关闭遮罩层和弹出层
  overlay.classList.remove('active');
  popup.classList.remove('active');
});

// 监听遮罩层的点击事件
overlay.addEventListener('click', function () {
  // 关闭遮罩层和弹出层
  overlay.classList.remove('active');
  popup.classList.remove('active');
});

3.示例说明

示例1:实现一个登录表单的弹出层

HTML代码:

<button id="loginBtn">登录</button>
<div class="overlay"></div>
<div class="popup">
  <h2>登录</h2>
  <form>
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username">
    <br>
    <label for="password">密码:</label>
    <input type="password" id="password" name="password">
    <br>
    <button type="submit">提交</button>
  </form>
  <button id="closeBtn">关闭</button>
</div>

CSS代码:

.overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.4);
  z-index: 9999;
}

.popup {
  display: none;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 400px;
  height: 300px;
  background-color: #fff;
  border: 1px solid #eee;
  box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.3);
  z-index: 10000;
}

JavaScript代码:

// 获取登录按钮
let loginBtn = document.querySelector('#loginBtn');
// 获取关闭按钮
let closeBtn = document.querySelector('#closeBtn');
// 获取遮罩层
let overlay = document.querySelector('.overlay');
// 获取弹出层
let popup = document.querySelector('.popup');

// 监听登录按钮的点击事件
loginBtn.addEventListener('click', function () {
  // 打开遮罩层和弹出层
  overlay.classList.add('active');
  popup.classList.add('active');
});

// 监听关闭按钮的点击事件
closeBtn.addEventListener('click', function () {
  // 关闭遮罩层和弹出层
  overlay.classList.remove('active');
  popup.classList.remove('active');
});

// 监听遮罩层的点击事件
overlay.addEventListener('click', function () {
  // 关闭遮罩层和弹出层
  overlay.classList.remove('active');
  popup.classList.remove('active');
});

示例2:实现一个注册表单的弹出层

HTML代码:

<button id="registerBtn">注册</button>
<div class="overlay"></div>
<div class="popup">
  <h2>注册</h2>
  <form>
    <label for="username">用户名:</label>
    <input type="text" id="username" name="username">
    <br>
    <label for="password">密码:</label>
    <input type="password" id="password" name="password">
    <br>
    <label for="email">电子邮箱:</label>
    <input type="email" id="email" name="email">
    <br>
    <button type="submit">提交</button>
  </form>
  <button id="closeBtn">关闭</button>
</div>

CSS代码:

.overlay {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.4);
  z-index: 9999;
}

.popup {
  display: none;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 400px;
  height: 400px;
  background-color: #fff;
  border: 1px solid #eee;
  box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.3);
  z-index: 10000;
}

JavaScript代码:

// 获取注册按钮
let registerBtn = document.querySelector('#registerBtn');
// 获取关闭按钮
let closeBtn = document.querySelector('#closeBtn');
// 获取遮罩层
let overlay = document.querySelector('.overlay');
// 获取弹出层
let popup = document.querySelector('.popup');

// 监听注册按钮的点击事件
registerBtn.addEventListener('click', function () {
  // 打开遮罩层和弹出层
  overlay.classList.add('active');
  popup.classList.add('active');
});

// 监听关闭按钮的点击事件
closeBtn.addEventListener('click', function () {
  // 关闭遮罩层和弹出层
  overlay.classList.remove('active');
  popup.classList.remove('active');
});

// 监听遮罩层的点击事件
overlay.addEventListener('click', function () {
  // 关闭遮罩层和弹出层
  overlay.classList.remove('active');
  popup.classList.remove('active');
});

以上是“JS制作带有遮罩弹出层实现登录注册表单特效”的完整攻略。通过以上攻略,我们可以轻易地制作出类似弹出层的效果,从而提高网站的用户体验。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js制作带有遮罩弹出层实现登录注册表单特效代码分享 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js内存泄漏场景、如何监控及分析详解

    JS内存泄漏场景、如何监控及分析详解 什么是JS内存泄漏? JS内存泄漏是指在代码中,一些不再需要的对象仍然存在于内存中,却没有被正确地释放,最终导致内存不足、程序崩溃等问题。常见的内存泄漏场景有如下几个: 全局变量:在全局环境中定义的变量、函数、对象等,没有被垃圾回收机制清除,会一直存在于内存中。 定时器:使用setInterval和setTimeout定…

    JavaScript 2023年6月10日
    00
  • js style.display=block显示布局错乱问题的解决方法

    当使用JavaScript来动态修改HTML元素的可见性时,经常会出现布局错乱的问题,尤其是当将元素从display:none切换到display:block时。以下是解决这个问题的四种方法: 1. 使用visibility属性 使用visibility属性可以隐藏元素但不会改变布局,而且在显示元素时也不会导致布局发生变化。通常有两种设置visibility…

    JavaScript 2023年6月11日
    00
  • JavaScript调试常见报错及原因分析

    JavaScript调试常见报错及原因分析 在JavaScript开发过程中,经常会遇到一些常见的报错,这些报错会影响到程序的运行。本文将介绍JavaScript调试常见报错及其原因分析的攻略。 报错类型 SyntaxError SyntaxError会在代码无法解析的情况下被抛出,例如: let a = 5 if (a == 5) { console.lo…

    JavaScript 2023年6月11日
    00
  • JS使用eval()动态创建变量的方法

    JS使用eval()动态创建变量的方法是通过将字符串转换为可执行代码来实现的。下面是具体步骤: 使用eval()函数将字符串转为可执行的代码。 在代码中定义变量,这些变量名需要作为字符串传递给eval()函数。 在定义变量时,可以根据需要赋初始值或在后续代码中修改变量的值。 下面是两个示例说明: 示例一: // 动态创建两个变量 var var1 = &qu…

    JavaScript 2023年5月28日
    00
  • JavaScript中的数组操作介绍

    当谈到JavaScript时,数组(Array)通常是最常用的数据结构之一。尤其在现代Web开发中,数组操作非常重要。下面我们将详细介绍JavaScript中的数组操作,内容包括以下几点: 声明和初始化数组 常用的数组操作方法 数组迭代器 示例 1. 声明和初始化数组 在JavaScript中声明和初始化数组有多种方式。最常见的方式是使用Array构造函数来…

    JavaScript 2023年5月18日
    00
  • 通俗易懂地解释JS中的闭包

    下面重点来解释一下“JS中的闭包”的相关知识点。 什么是闭包 闭包(Closure)是一种内部函数可以访问外部函数作用域中变量的特殊函数形式。一种理解是,闭包就是能够读取其他函数内部变量的函数。在js中,要理解闭包,就必须要理解作用域链。 当js代码执行时,每个函数都会创建自己的作用域,而在函数内部创建的作用域可以访问外部变量,在外部创建的作用域无法访问内部…

    JavaScript 2023年6月10日
    00
  • C#的WEBBROWSER与JS交互小结

    下面我将详细讲解“C#的WEBBROWSER与JS交互小结”的完整攻略。 简介 WEBBROWSER是Windows Forms中提供的一个控件,可以直接将Web页面嵌入到WinFrom应用程序中。WEBBROWSER中内置了一个解析HTML的引擎,可以渲染和展示Web页面。由于WEBBROWSER可以作为WinFrom应用程序的一部分,它可以与其他组件一起…

    JavaScript 2023年6月10日
    00
  • JavaScript 继承的实现

    JavaScript 继承的实现攻略 JavaScript 是一种基于原型的语言,这使得继承变得更为简单。通过原型继承,对象可以继承另一个对象的属性和方法。继承的实现方式有多种,包括原型链继承、构造函数继承、组合继承、寄生继承、原型式继承和类继承等。下面将依次介绍这些继承的实现方式。 1. 原型链继承 原型链继承利用 JavaScript 的原型链机制,把子…

    JavaScript 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部