JS实现点击登录弹出窗口同时背景色渐变动画效果

yizhihongxing

JS实现点击登录弹出窗口同时背景色渐变动画效果可以分为以下几个步骤:

  1. HTML结构的修改:需要在HTML中添加一个按钮和一个弹窗,同时要添加一个全屏蒙层,作为背景色渐变的动画效果。
<button id="loginBtn">登录</button>
<div id="loginModal">
  <form>
    ...
  </form>
</div>
<div id="mask"></div>
  1. CSS样式的设置:定义按钮和弹窗的样式,同时设置全屏蒙层的样式,使其覆盖整个屏幕,并且初始颜色为透明。
#loginBtn {
  padding: 10px 20px;
  background-color: #337ab7;
  color: #fff;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

#loginModal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 20px;
  background-color: #fff;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
  z-index: 100;
}

#mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0);
  z-index: 99;
}
  1. JS事件的绑定:需要给按钮添加一个点击事件,当点击按钮时,弹窗和蒙层同时出现。同时需要设置背景颜色渐变的动画效果。
// 获取按钮和弹窗元素
var loginBtn = document.getElementById('loginBtn');
var loginModal = document.getElementById('loginModal');
var mask = document.getElementById('mask');

// 给按钮添加点击事件
loginBtn.addEventListener('click', function() {
  // 显示弹窗和蒙层
  loginModal.style.display = 'block';
  mask.style.display = 'block';

  // 设置背景颜色渐变动画效果
  var opacity = 0;
  var animationId = setInterval(function() {
    opacity += 0.05;
    mask.style.backgroundColor = 'rgba(0, 0, 0, ' + opacity + ')';

    if (opacity >= 0.7) {
      clearInterval(animationId);
    }
  }, 16);
});
  1. JS事件的解绑:需要给弹窗和蒙层添加点击事件,当点击弹窗或蒙层时,弹窗和蒙层同时消失。同时需要取消背景颜色渐变的动画效果。
// 给弹窗和蒙层添加点击事件
loginModal.addEventListener('click', closeLoginModal);
mask.addEventListener('click', closeLoginModal);

// 关闭弹窗和蒙层的函数
function closeLoginModal() {
  // 取消背景颜色渐变动画效果
  clearInterval(animationId);

  // 隐藏弹窗和蒙层
  loginModal.style.display = 'none';
  mask.style.display = 'none';
}

示例1:

<button id="loginBtn">登录</button>
<div id="loginModal">
  <form>
    <label for="username">用户名</label>
    <input type="text" id="username">
    <br>
    <label for="password">密码</label>
    <input type="password" id="password">
    <br>
    <button type="submit">提交</button>
  </form>
</div>
<div id="mask"></div>

<script>
var loginBtn = document.getElementById('loginBtn');
var loginModal = document.getElementById('loginModal');
var mask = document.getElementById('mask');

loginBtn.addEventListener('click', function() {
  loginModal.style.display = 'block';
  mask.style.display = 'block';

  var opacity = 0;
  var animationId = setInterval(function() {
    opacity += 0.05;
    mask.style.backgroundColor = 'rgba(0, 0, 0, ' + opacity + ')';

    if (opacity >= 0.7) {
      clearInterval(animationId);
    }
  }, 16);
});

loginModal.addEventListener('click', closeLoginModal);
mask.addEventListener('click', closeLoginModal);

function closeLoginModal() {
  clearInterval(animationId);

  loginModal.style.display = 'none';
  mask.style.display = 'none';
}
</script>

示例2:

<button id="loginBtn">登录</button>
<div id="loginModal">
  <form>
    <label for="email">邮箱</label>
    <input type="email" id="email">
    <br>
    <label for="password">密码</label>
    <input type="password" id="password">
    <br>
    <button type="submit">提交</button>
  </form>
</div>
<div id="mask"></div>

<style>
#loginBtn {
  padding: 10px 20px;
  background-color: #4CAF50;
  color: #fff;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

#loginModal {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 20px;
  background-color: #fff;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
  z-index: 100;
}

#mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0);
  z-index: 99;
}
</style>

<script>
var loginBtn = document.getElementById('loginBtn');
var loginModal = document.getElementById('loginModal');
var mask = document.getElementById('mask');

loginBtn.addEventListener('click', function() {
  loginModal.style.display = 'block';
  mask.style.display = 'block';

  var opacity = 0;
  var animationId = setInterval(function() {
    opacity += 0.05;
    mask.style.backgroundColor = 'rgba(0, 0, 0, ' + opacity + ')';

    if (opacity >= 0.7) {
      clearInterval(animationId);
    }
  }, 16);
});

loginModal.addEventListener('click', closeLoginModal);
mask.addEventListener('click', closeLoginModal);

function closeLoginModal() {
  clearInterval(animationId);

  loginModal.style.display = 'none';
  mask.style.display = 'none';
}
</script>

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS实现点击登录弹出窗口同时背景色渐变动画效果 - Python技术站

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

相关文章

  • 实例详解Python装饰器与闭包

    实例详解Python装饰器与闭包 概述 Python装饰器与闭包是Python高级编程中非常重要的概念,掌握它们可以使我们写出更加优美、高效且具有可读性的代码。本文将详细讲解Python装饰器和闭包的使用方法和原理,并提供两个示例来说明其用法。 装饰器 什么是装饰器 装饰器是一种用于修改或扩展函数功能的Python语法结构。它可以通过注解函数来实现,不需要修…

    JavaScript 2023年6月10日
    00
  • 给html超链接设置事件不使用href来完成跳

    要给HTML超链接设置事件,不使用href来完成跳转,可以使用JavaScript中的event.preventDefault()方法来阻止默认行为,然后使用window.location方法来完成跳转。 具体实现步骤如下: 在HTML中设置一个<a>标签,没有href属性,但需要在标签中添加一个唯一标识符,如id属性,以便于在JavaScrip…

    JavaScript 2023年6月10日
    00
  • js中取得变量绝对值的方法

    当我们需要在 JavaScript 中获取一个变量的绝对值时,可以使用 Math 对象的 abs() 方法。下面是详细的攻略: 使用 Math.abs() 方法获取变量的绝对值 Math 对象是 JavaScript 提供的一个内置对象,通过该对象提供的 abs() 方法,即可获取任意数字类型的变量的绝对值。 let num1 = -5, num2 = 10…

    JavaScript 2023年5月28日
    00
  • js实现带有介绍的Select列表菜单实例

    实现带有介绍的Select列表菜单需要用到HTML、CSS和JavaScript技术。 HTML结构 首先,在HTML文件中创建一个Select元素以及对应的option选项,如下所示: <label for="menu">请选择菜单:</label> <select id="menu"&…

    JavaScript 2023年6月11日
    00
  • JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析

    JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析 什么是函数式编程? 函数式编程(Functional Programming)是一种代码的组织方式,它强调将代码从数据处理过程中分离,提取出可复用的功能模块,以此提高程序的抽象能力、简洁性和可维护性。函数式编程的核心理念是将代码视…

    JavaScript 2023年5月27日
    00
  • JS中数组常用的循环遍历你会几种

    JS中数组常用的循环遍历方法主要有五种:for循环、forEach、map、filter和reduce。这些方法可以遍历数组,访问每一个元素,并对它们进行操作。 for循环 for循环是一种基本的JS循环结构,它可以循环遍历数组中的所有元素,并对它们进行操作。 示例: let arr = [1, 2, 3, 4, 5]; for (let i = 0; i …

    JavaScript 2023年5月27日
    00
  • JavaScript的代码编写格式规范指南

    JavaScript的代码编写格式规范指南是为了提高代码的可读性和维护性而制定的一些规则。以下是完整的攻略,包括命名规范、缩进、代码结构、注释、使用ES6等方面。 1. 命名规范 一个良好的命名规范可以使代码更加易读易懂。以下是一些常用的命名规范: 1.1 变量名 小驼峰命名法(camelCase):第一个单词小写,后面每个单词的首字母大写,如:userNa…

    JavaScript 2023年5月18日
    00
  • Javascript Date setUTCMinutes() 方法

    以下是关于JavaScript Date对象的setUTCMinutes()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setUTCMinutes()方法 JavaScript的setUTCMinutes()方法设置对象UTC分钟部分。该方法接受一个整数,表示要设置的UTC分钟。如果该参数超出了JavaScript所能表示的范围,…

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