使用原生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日

相关文章

  • web项目开发之JS函数防抖与节流示例代码

    下面来详细讲解“web项目开发之JS函数防抖与节流示例代码”的完整攻略。 什么是函数防抖和节流 在理解函数防抖和节流之前,先来看一下JS中的函数执行机制。当你在页面中注册了一个事件处理函数后,当相应事件被触发时会不断地调用该函数。然而,有时候你可能会希望函数的执行可以控制到你期望的频率或时间间隔以内,这时就需要用到函数防抖和函数节流。 函数防抖的目的是为了避…

    JavaScript 2023年6月11日
    00
  • Web设计师如何制作Retina显屏设备的图片

    下面是Web设计师制作Retina屏幕设备图片的攻略: 1. 理解Retina屏幕设备的特点和需求 首先,我们需要理解Retina屏幕设备的特点和需求。 Retina屏幕设备比传统屏幕设备拥有更高的分辨率和像素密度,例如iPhone的Retina屏幕设备像素密度达到每英寸326个像素。这种高像素密度使得普通图片在Retina屏幕设备上显示效果模糊不清,因此需…

    JavaScript 2023年6月11日
    00
  • 有关js的变量作用域和this指针的讨论

    标题:有关JS的变量作用域和this指针的讨论 1. 变量作用域 1.1 作用域是什么 在JS中,作用域可以理解为变量的有效范围。JS支持两种作用域:全局作用域和函数作用域。 全局作用域是指整个JS文件,其内定义的变量可以被文件中任何一个函数所使用。 函数作用域是指只在函数体内部(包括函数体内嵌套的函数中)定义的变量。这些变量只在函数体内及其内部的函数中有效…

    JavaScript 2023年5月27日
    00
  • Cookies 和 Session的详解及区别

    我来详细讲解一下“Cookies 和 Session的详解及区别”。 Cookies 和 Session的概述 Cookies:保存在客户端,并且数据较为小巧,可以通过浏览器修改; Session:保存在服务端,因此不太容易被攻击,并且能够存储较为敏感的用户信息。 Cookies和Session的使用 Cookies的使用 Cookies的使用主要有以下几个…

    JavaScript 2023年6月11日
    00
  • javascript 语法基础 想学习js的朋友可以看看

    下面是详细的讲解。 1. 前言 JavaScript是一种弱类型的解释性脚本语言,广泛应用于Web前端开发。它具有灵活的语法和强大的能力,可以实现网页的交互效果和数据处理等操作。想要深入学习JavaScript,首先需要了解JavaScript的基础语法,包括变量、运算符、控制流语句、函数、对象、数组等内容。 2. 变量与数据类型 JavaScript中的变…

    JavaScript 2023年5月18日
    00
  • Java实现Promise.all()的示例代码

    Java实现Promise.all()的示例代码,是指在Java语言中实现Promise.all()方法的示例代码。Promise.all()方法是JavaScript语言中的一个API,可以并行地处理多个Promise对象,并将它们的结果一起返回。在Java语言中,我们可以使用CompletableFuture类来实现一个类似Promise.all()的方…

    JavaScript 2023年5月28日
    00
  • JavaScript生成.xls文件的代码

    生成Excel文件是前端开发中常见的需求之一,可以通过JS库来实现。目前比较流行的库有两个:SheetJS和Handsontable,本文将以SheetJS为例来讲解如何使用JS生成Excel文件的完整攻略。 SheetJS库介绍 SheetJS是一组用于处理Excel文件的JS库,可读取、修改和写入Excel文件,支持XLS、XLSX等多种格式。同时She…

    JavaScript 2023年5月19日
    00
  • javascript 使用sleep函数的常见方法详解

    让我来详细讲解一下 “javascript 使用sleep函数的常见方法详解” 的完整攻略。 什么是sleep函数? 在JavaScript中,本质上并没有自带的sleep函数。它是一种同步执行的函数,能够在程序执行到该函数时阻塞线程一段时间,然后再继续执行。 常见的sleep实现方法 在JavaScript中实现sleep函数的方法有很多,这里介绍两个常见…

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