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

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日

相关文章

  • js笔试题-接收get请求参数

    要接收URL中的GET请求参数,在JavaScript中,我们可以使用以下几个步骤: 步骤一:解析URL 首先,我们需要解析当前页面上的URL。可以通过window.location.search属性获取查询字符串。查询字符串是指URL中所有从“?”开始的部分,包括问号。例如,对于http://www.example.com/myapp?id=100&amp…

    JavaScript 2023年6月10日
    00
  • JS中类或对象的定义说明

    JS中类或对象的定义说明是面向对象编程最基本的操作之一。在JS中,我们可以使用class关键字来定义一个类,也可以使用对象字面量的方式定义一个对象。 类的定义 使用class关键字来定义一个类,包括类名、属性和方法的定义。下面是一个简单的示例代码: class Person { constructor(name, age) { this.name = nam…

    JavaScript 2023年5月27日
    00
  • js实现的在线调色板功能完整实例

    下面是“JS实现的在线调色板功能完整实例”的完整攻略: 1. 调色板功能介绍 调色板是一种图形界面控件,常用于用户界面设计中。它提供了一组可供选择的颜色,用户可以通过调整滑块或者输入数值等方式选择颜色。而JavaScript可以通过一些特定的API来实现这样的调色板功能。 2. HTML结构与CSS样式 为了实现调色板功能,首先需要构建一个HTML页面,然后…

    JavaScript 2023年6月10日
    00
  • JavaScript中undefined和is not defined的区别与异常处理

    JavaScript中undefined与is not defined的区别与异常处理攻略 在JavaScript编程中,我们可能会遇到两种情况:一个是使用undefined变量,一个是使用未定义的变量(is not defined)。虽然在表象上看起来很相似,但实际上它们是不同的,并且需要不同的处理方法。在这篇攻略中,我将向您展示它们的区别,以及如何在代码…

    JavaScript 2023年5月18日
    00
  • JS简单判断字符在另一个字符串中出现次数的2种常用方法

    让我来介绍一下JS简单判断字符串在另一个字符串中出现次数的2种常用方法。下面将结合代码给出具体的示例: 1. 方法一:for循环遍历字符串 // 定义待匹配字符和被匹配字符 const targetStr = "hello"; const sourceStr = "hello world, hello everyone&quot…

    JavaScript 2023年5月28日
    00
  • 简易的JS计算器实现代码

    下面是关于“简易的JS计算器实现代码”的完整攻略: 一、准备工作 要实现一个简易的JS计算器,首先需要在HTML文件中创建计算器的界面,其中需要包括如下组件: 计算器界面:使用HTML的div元素模拟。 显示框:显示计算结果。 操作按钮:包括加、减、乘、除等常见计算操作,使用HTML的button元素模拟。 在创建好计算器的界面后,需要在JS文件中获取各个操…

    JavaScript 2023年5月27日
    00
  • JS实现选定指定HTML元素对象中指定文本内容功能示例

    实现选定指定HTML元素对象中指定文本内容功能,可以通过JS中的DOM操作实现。具体步骤如下: 获取指定HTML元素对象 通过JS的document.getElementById()或document.querySelector()方法获取到要操作的HTML元素对象。例如,如果我们要获取ID为”myDiv”的div元素对象,可以使用以下代码: var myD…

    JavaScript 2023年6月10日
    00
  • js实现字符串的16进制编码不加密

    下面是详细讲解“js实现字符串的16进制编码不加密”的完整攻略。 1. 背景介绍 在前端开发中,有时候需要将字符串进行编码,以便在传输、存储、展示的过程中保证数据的正确性和减少潜在相关问题可能性。而我们日常中接触最多的编码格式有两种:URL编码和Base64编码,其中URL编码是将每个字符转化为%xy的形式,而Base64编码则是将每3个字符编码为4个字符。…

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