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日

相关文章

  • 前端面试之对安全防御的理解分析

    前言 在前端开发领域中,安全防御一直是非常重要的一个方面。因为web应用程序是非常容易受到攻击的,如果没有恰当的安全措施,可能会导致各种问题,如身份盗窃、数据泄露、远程执行代码等。 在进行前端面试时,关于安全防御的理解和分析,是一个非常常见的问题。因此,在本篇攻略中,我将从多个角度对前端安全防御进行分析和讲解,帮助大家更好地理解前端安全防御的重要性和实现方式…

    JavaScript 2023年6月10日
    00
  • 纯JS实现根据CSS的class选择DOM

    实现根据CSS的class选择DOM,可以使用document.getElementsByClassName()方法来完成。这个方法会返回所有符合指定class name的元素的一个类数组对象。但是需要注意的是,该方法在低版本的IE浏览器中不支持,所以最好搭配使用checkBrowser()函数,来进行浏览器兼容性的处理。 以下是完成该功能的具体步骤: 步骤…

    JavaScript 2023年6月10日
    00
  • vs2003 js文件编码问题的解决方法

    我来为您详细讲解如何解决Vs2003 JS文件编码问题。 问题描述 Vs2003在处理JS文件时,可能会出现编码不一致的问题。具体表现为,在编辑JS文件时,中文字符会出现乱码或者被替换成其他字符,导致代码意思无法理解。 解决方法 要解决这个问题,我们需要采取如下两个步骤: 步骤一:设置Vs2003默认编码格式 首先,我们需要在Vs2003中设置默认编码格式。…

    JavaScript 2023年5月20日
    00
  • js 格式化时间日期函数小结

    JS 格式化时间日期函数小结 在编写 web 应用程序或者其他应用程序时,日期和时间往往是非常重要的元素。而 JS 提供了许多内置的函数和方法来操作日期和时间,这里提供一些受欢迎的方法,同时会介绍如何使用它们来格式化日期和时间。 定义日期对象 在使用 JS 处理日期和时间时,通常使用内置的 Date 对象。我们可通过以下方式创建一个日期对象: const c…

    JavaScript 2023年5月27日
    00
  • js for循环倒序输出数组元素的实例

    当我们需要倒序输出数组元素时,可以使用 for 循环以及数组的 length 属性来实现: ## js for循环倒序输出数组元素的实例 ### 示例1: let arr = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’];for(let i=arr.length-1; i>=0; i–){ console.log(arr[i]);} 以上代码中…

    JavaScript 2023年5月27日
    00
  • 在JavaScript中访问字符串的子串

    访问字符串的子串是JavaScript中常见的操作之一,在本文中我们将详细讲解如何用JavaScript来访问字符串的子串。 查找子串的位置 JavaScript中的indexOf方法可以帮助我们查找子串在原字符串中的位置。它的基本语法如下: str.indexOf(searchValue[, fromIndex]) 其中 searchValue 表示要查找…

    JavaScript 2023年5月28日
    00
  • js创建对象的方法汇总

    JS创建对象的方法汇总 1. 工厂模式 function createPerson(name, age, gender) { var obj = new Object(); obj.name = name; obj.age = age; obj.gender = gender; obj.sayName = function() { console.log(t…

    JavaScript 2023年5月27日
    00
  • 微信页面倒计时代码(解决safari不兼容date的问题)

    接下来我将为您详细讲解如何在微信页面中使用倒计时代码,并解决 Safari 不兼容 Date 的问题。 标准的倒计时代码 首先,我们先来看一下在常规网页中使用的倒计时代码: function countDown(second, callback) { let timer = setInterval(() => { callback(second–) …

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