使用原生JS添加进场和退场动画详解

使用原生JS添加进场和退场动画可以通过给元素添加CSS类名来实现。下面是详细的步骤:

  1. 创建CSS动画

首先,需要先在CSS中定义好对应的进场或退场动画,例如:

.animate-in {
    opacity: 0;
    transform: translate(0, 50px);
    animation-name: fadeIn;
    animation-duration: 0.5s;
    animation-timing-function: ease-in-out;
    animation-fill-mode: forwards;
}

.animate-out {
    opacity: 1;
    transform: translate(0, 0);
    animation-name: fadeOut;
    animation-duration: 0.5s;
    animation-timing-function: ease-in-out;
    animation-fill-mode: forwards;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translate(0, 50px);
    }
    to {
        opacity: 1;
        transform: translate(0, 0);
    }
}

@keyframes fadeOut {
    from {
        opacity: 1;
        transform: translate(0, 0);
    }
    to {
        opacity: 0;
        transform: translate(0, 50px);
    }
}

其中,.animate-in类是元素进场时应用的动画,.animate-out类是元素退场时应用的动画。这里定义了两个动画:fadeInfadeOut,分别控制元素的透明度和位置变化。

  1. 添加CSS类名

接下来,在JS中使用classList属性,为元素添加或移除对应的CSS类名,从而控制元素的进场或退场动画。

例如,要实现元素在单击时进场,可以这样写:

var box = document.getElementById('box');

box.addEventListener('click', function() {
    box.classList.add('animate-in');
});

当元素被单击时,会为其添加.animate-in类,这样就可以触发进场动画了。

如果要实现元素在页面加载时进场,可以在JS中使用window.onload事件和setTimeout函数,给元素添加.animate-in类。例如:

window.onload = function() {
    var box = document.getElementById('box');
    setTimeout(function() {
        box.classList.add('animate-in');
    }, 100);
};

这里给元素添加.animate-in类的时机是在页面加载后100ms,这样就可以让进场动画有些延迟效果了。

  1. 移除CSS类名

当需要让元素退场时,只需使用classList属性移除对应的CSS类名即可。例如:

box.classList.remove('animate-in');
box.classList.add('animate-out');

这里先移除.animate-in类,再添加.animate-out类,这样就可以触发退场动画了。

示例1:

<div id="box">Click me!</div>
#box {
    background-color: #ccc;
    color: #fff;
    text-align: center;
    padding: 50px;
    cursor: pointer;
}
var box = document.getElementById('box');

box.addEventListener('click', function() {
    box.classList.add('animate-in');
});

点击div时,会触发.animate-in类,元素就会有进场效果。

示例2:

<div id="box" class="animate-in">Hello world!</div>
#box {
    background-color: #ccc;
    color: #fff;
    text-align: center;
    padding: 50px;
}

.animate-in {
    opacity: 0;
    transform: translate(0, 50px);
    animation-name: fadeIn;
    animation-duration: 0.5s;
    animation-timing-function: ease-in-out;
    animation-fill-mode: forwards;
}

.animate-out {
    opacity: 1;
    transform: translate(0, 0);
    animation-name: fadeOut;
    animation-duration: 0.5s;
    animation-timing-function: ease-in-out;
    animation-fill-mode: forwards;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translate(0, 50px);
    }
    to {
        opacity: 1;
        transform: translate(0, 0);
    }
}

@keyframes fadeOut {
    from {
        opacity: 1;
        transform: translate(0, 0);
    }
    to {
        opacity: 0;
        transform: translate(0, 50px);
    }
}
var box = document.getElementById('box');

setTimeout(function() {
    box.classList.remove('animate-in');
    box.classList.add('animate-out');
}, 2000);

页面加载后2秒钟,元素会触发.animate-out类,元素就会有退场效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用原生JS添加进场和退场动画详解 - Python技术站

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

相关文章

  • Element的el-tree控件后台数据结构的生成以及方法的抽取

    生成后台数据结构: 首先,我们需要明确el-tree控件所需要的数据格式,它要求数据使用树形结构进行展示,每一项数据包含以下属性: label:节点描述 children:子节点数据,是一个数组,也可以为空 接着,我们需要对后台的原始数据进行格式化处理,使其可以被el-tree控件所展示。常见的处理方式是使用递归的方式将原始数据转换为树形结构,具体过程如下:…

    JavaScript 2023年6月10日
    00
  • Javascript中判断对象是否具有属性的5种方法分享

    以下是Javascript中判断对象是否具有属性的5种方法: 方法1:使用in运算符 in运算符可用于判断一个对象是否拥有特定属性。语法为:propName in objectName。 示例代码: const myObj = { name: "Alice", age: 30 }; console.log("name"…

    JavaScript 2023年5月27日
    00
  • Javascript 闭包详解及实例代码

    JavaScript 闭包详解及实例代码 什么是闭包? 在 JavaScript 中,闭包是一种特殊的函数,它可以访问在它创建时外部作用域的变量和参数,即使这些变量和参数在函数调用时已经不存在了。 简单来说,闭包就是“函数和函数所能够访问的外部变量的一个共同体”。 闭包的运作原理 在 JavaScript 中,每次创建一个函数,都会同时创建一个作用域链(sc…

    JavaScript 2023年6月10日
    00
  • JScript中使用ADODB.Stream判断文件编码的代码

    请听我讲解“JScript中使用ADODB.Stream判断文件编码的代码”的完整攻略,主要包含以下几个步骤: 1. 引入ADODB.Stream对象 我们首先需要在JScript中引入ADODB.Stream对象,这个对象可以处理二进制数据。在引入之前需要确认系统中是否已经安装了Microsoft ActiveX Data Objects库,否则需要先安装…

    JavaScript 2023年5月19日
    00
  • 一个JavaScript函数把URL参数解析成Json对象

    要把URL参数解析成Json对象,可以使用JavaScript的内置方法URLSearchParams,该方法可用于解析URL查询字符串中的参数。具体步骤如下。 步骤一:获取URL参数字符串 使用window.location.search获取URL的查询字符串,然后去除开头的问号“?”,得到纯参数字符串。 const searchParams = wind…

    JavaScript 2023年5月27日
    00
  • three.js如何实现3D动态文字效果

    实现3D动态文字效果并不是一件容易的事情,但可以通过three.js来实现。下面是three.js实现3D动态文字效果的完整攻略。 1. 准备工作 首先需要在HTML的<head>标签中引入three.js <script src="https://cdn.jsdelivr.net/npm/three@0.132.2/build/…

    JavaScript 2023年6月11日
    00
  • 原生JS实现数码表特效

    原生 JS 实现数码表特效攻略 概述 该攻略是使用原生 JS 实现数码表特效的完整教程。该特效是指数字从 0 变化到目标数字,即数码表翻滚特效。 实现步骤 首先,我们需要在 HTML 中创建一个数码表的结构,包括外层容器和数字容器。HTML 结构如下: <div class="counter"> <div class=&…

    JavaScript 2023年6月11日
    00
  • 输入一个网址的时候,后台到底发生了一件件什么样的事

    当用户在浏览器中输入一个网址时,后台会经历如下过程: DNS解析 首先,浏览器需要将用户输入的网址转化为一个IP地址,这个过程称为DNS解析。浏览器将会向本地DNS服务器发出请求,本地DNS服务器可能会向上级DNS服务器继续发出请求,直到最终找到负责该域名的DNS服务器,并从中获取对应IP地址。如果本地DNS服务器中不存在对应域名的IP地址,将会继续向上级D…

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