首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在父容器Avada的悬停时触发Lottie动画

基础概念

Lottie 是一个由 Airbnb 开发的库,它允许设计师使用 Adobe After Effects (AE) 创建动画,并通过插件 Bodymovin 导出为 JSON 格式,然后在 Web 和移动应用中以轻量级的方式呈现这些动画。

相关优势

  1. 轻量级:Lottie 动画文件通常比 GIF 或视频文件小得多,加载速度快。
  2. 灵活性:设计师可以在 AE 中自由创作动画,然后导出为 Lottie 格式。
  3. 跨平台:Lottie 支持 iOS、Android、Web 等多个平台。

类型

Lottie 动画主要分为以下几种类型:

  1. 矢量动画:基于 SVG 的动画,放大或缩小不会失真。
  2. 位图动画:基于 PNG 或 JPEG 的动画,放大或缩小可能会失真。
  3. 形状动画:基于 AE 中的形状图层创建的动画。

应用场景

Lottie 动画广泛应用于各种场景,如:

  • 网页和应用的开屏动画
  • 按钮点击反馈动画
  • 页面加载动画
  • 引导页动画

实现父容器悬停时触发 Lottie 动画

假设我们有一个父容器 Avada,当鼠标悬停在这个容器上时,触发一个 Lottie 动画。我们可以使用 HTML、CSS 和 JavaScript 来实现这个效果。

HTML

代码语言:txt
复制
<div class="avada">
  Hover me!
  <div class="lottie-container"></div>
</div>

CSS

代码语言:txt
复制
.avada {
  width: 200px;
  height: 200px;
  background-color: #f0f0f0;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}

.lottie-container {
  width: 100px;
  height: 100px;
  background-color: #fff;
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
  opacity: 0;
  transition: opacity 0.3s ease-in-out;
}

JavaScript

代码语言:txt
复制
document.querySelector('.avada').addEventListener('mouseenter', function() {
  const lottieContainer = document.querySelector('.lottie-container');
  lottieContainer.style.opacity = 1;
  lottie.loadAnimation({
    container: lottieContainer,
    renderer: 'svg',
    loop: true,
    autoplay: true,
    path: 'path/to/your/animation.json'
  });
});

document.querySelector('.avada').addEventListener('mouseleave', function() {
  const lottieContainer = document.querySelector('.lottie-container');
  lottieContainer.style.opacity = 0;
  lottieContainer.innerHTML = ''; // 清除动画
});

可能遇到的问题及解决方法

  1. 动画加载慢
    • 原因:动画文件过大。
    • 解决方法:优化动画文件,减少不必要的复杂度,或者使用更高效的编码格式。
  • 动画不显示
    • 原因:路径错误或 Lottie 库未正确引入。
    • 解决方法:检查动画文件路径是否正确,确保 Lottie 库已正确引入。
  • 动画闪烁
    • 原因:动画容器大小变化频繁。
    • 解决方法:固定动画容器的大小,或者在动画加载完成后再调整容器大小。

参考链接

通过以上步骤,你可以实现父容器 Avada 在悬停时触发 Lottie 动画的效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

音视频开发之旅(63) -Lottie 源码分析之动画与绘制

目录 动画和绘制的流程 LayerView树 ShapeLayer的分析 Lottie优劣以及rLottie、PAG的介绍 资料 收获 上一篇我们学习分析了Lottie的json解析部分....buildCompositionLayer(); //触发notifyUpdate,进而触发个Layer的progress的重新计算以及draw的回调(当然此时进度为0,各种判断之后也不会触发...三、ShapeLayer 的分析 之所以把ShapeLayer单独拎出来说,是因为他在lottie动画中很重要,通过 ShapeLayer是一个通过矢量图形而不是bitmap来绘制的图层子类。...Lottie存在mask、matters 时,需要先saveLayer,再调用drawLayer返回。...六、资料 Lottie实现思路和源码分析 Lottie 动画原理剖析 揭秘Lottie动画的优劣及原理 lottie-android 框架使用及源码解析 Lottie动画库 Android 端源码浅析

91820
  • Lottie-页面动画100%硬核还原

    它就是今天的主角:Lottie Lottie简介 Lottie 是Airbnb开源的一个 面向iOS、Android、React Native 的动画库,能分析 AE 导出的动画(需要用bodymovin...下面是Lottie提供的官方效果图。类似下面这种一段动画的播放,非常适合使用Lottie来做。 Lottie流程 我们先来看下整个流程简图。...设计师用AE把动画效果做出来,再用Bodymovin导出相应的json文件给到前端,前端使用Lottie库就可以实现动画效果。功能简单且强大。...) data_ready(所有动画数据加载完成) DOMLoaded(元素已添加到DOM节点) destroy 可使用addEventListener监听事件 // 动画播放完成触发 anm.addEventListener...('complete', anmLoaded); // 当前循环播放完成触发 anm.addEventListener('loopComplete', anmComplete); // 播放一帧动画的时候触发

    1.1K40

    lottie系列文章(二):lottie最佳实践

    在unmount的时候,需要调用该方法 lottie-web常用的事件 我们在lottie-web中可能也需要监听一些事件,比如加载完动画json文件时的data_ready事件。...: * complete: 播放完成(循环播放下不会触发) * loopComplete: 当前循环下播放(循环播放/非循环播放)结束时触发 * enterFrame: 每进入一帧就会触发,播放时每一帧都会触发一次...* data_ready: 动画json文件加载完毕触发 * DOMLoaded: 动画相关的dom已经被添加到html后触发 * destroy: 将在动画删除时触发 lottie-web部分高阶用法...在制作AE动画时,将图层命名为#svgId格式,前端加载该动画后,相应的图层的id会被设置为svgId,可以通过dom方法获取该元素并做相应的操作; 在制作AE动画时,将图层命名为.svgClass格式...,前端加载该动画后,相应的图层的class会被设置为svgClass,可以通过dom方法获取这些元素并做相应的操作; 动画json文件制作及导出规范 使用该方案制作动画时,有些动画效果lottie-web

    5.5K31

    一个 Vue 页面的内存泄露分析

    同时在事件的执行过程的合适时机自动把事件给解绑了,上面是判断如果所有的图片都展示出来了那么就没必要监听scroll事件了直接解绑了。这样就能解决内存泄露的问题了,能够触发自动垃圾回收。...这里我是第2种方式的场景,检测单页面应用的某个路由页面是否存在内存泄露。先打开首页,点到另一个页面,再点后退,接着点一下垃圾回收的按钮: ? 触发垃圾回收,避免一些不必要的干扰。...通过className等信息可以知道它就是那个要检查的页面的DOM节点,在下面的Object的窗口里面依次展开它的父结点,可以看到它最外面的父结点是一个VueComponent实例: ?...它是一个用来放lottie动画的DOM容器,lottie对象里面仍有引用它: ?...这个是一个用lottie做的loading动画,当loading结束的时候,我会手动调一下它的stop api停止动画,并且把.animte-container给remove掉,但是为什么lottie还不肯放过它呢

    4K30

    说lottie谁是lottie?

    现代JavaScript高级小册 深入浅出Dart 现代TypeScript高级小册 theme: v-green 背景 在项目中,loading 常用的动画方案是 Gif 动画。...lottie实现的动画效果: jcode lottie-web lottie-web 支持多种特性,提供复杂的动画控制和监听功能。...在 unmount 的时候,需要调用该方法 监听事件: 名称 描述 data_ready 加载完 json 动画 complete 播放完成(循环播放下不会触发) loopComplete 当前循环下播放...(循环播放/非循环播放)结束时触发 enterFrame 每进入一帧就会触发,播放时每一帧都会触发一次,stop 方法也会触发 segmentStart 每进入一帧就会触发,播放时每一帧都会触发一次,stop...方法也会触发 DOMLoaded 动画相关的 dom 已经被添加到 html 后触发 destroy 将在动画删除时触发 Lottie 动画性能 对比 Lottie 和 Gif 动画,数据显示

    40320

    使用强大的 AirBnb Lottie 让你的 React APP 炫酷起来

    当我们准备好使用它时,我们可以通过选择Lottie JSON下载动画的JSON文件: 不管你是如何创建React项目的,你都可以把它放在任何你喜欢的文件夹里。...一旦安装了lottie-web,我们就可以将动画放置在任何JSX元素中,方法是给出一个指示,表明我们希望它驻留在某个选择器中。 最好的方法是使用id属性,因为它应该只在应用程序的元素中使用一次。...loadAnimation来运行我们的动画,通过给它传递一个对象。在这个对象上,我们需要提供的第一件事是容器,也就是我们想要在其中运行动画的DOM节点。...动画的自动播放设置默认为true,这意味着动画会在加载时自动播放。如果你想有条件地运行动画,你可以通过使用一个状态变量将它设置为true或false(如果你想只在动画可见时播放动画)。.../lottie_light"; 希望这篇文章能够帮助您启动并运行Lottie,当您在web应用程序中寻找一些特别的东西时,可以将Lottie作为一个特性添加到您的React项目中。

    2K20

    React: Lottie 动画初体验和优化策略

    简单来讲就是 UI 设计师用 AE 解析出 JSON 动画,前端工程师使用 JSON 文件在 lottie-web 等框架下进行 svg (canvas/html) 渲染 2、看几个简单的 DEMO...3、为什么选择 LOTTIE 动画,比较同样类型和选择 同样类型的复杂动画实现的方案现在有如下几个 png 序列帧: 优点:兼容性好,工程师可控,操作性强 缺点:它需要大量图片素材支持,动画播放时占用的内存较多...AnimationItem的容器,把我们的节点element和 animationData json数据进行初始化 2、 setData,setParams 给 animationData 设置基础值...,完全禁止动画 7、实践 1、2 可以在大部分场景实现,这里只讨论上诉 3,4,5 的可行性 7.3、虚拟 dom 借助了 react 虚拟 dom 的特性,在 swiper 上实现了;具体的原理可以看这篇文章...Observer API 会注册一个回调函数,每当被监视的元素进入或者退出另外一个元素时(或者 viewport ),或者两个元素的相交部分大小发生变化时,该回调方法会被触发执行。

    4K40

    CSS中鼠标滑过图片放大效果

    刚刚看了下感觉还不错,纯CSS实现,虽然在开发主题时CSS3用的比较少。...其中包括: 包含多个.item元素的.container父元素容器 每个.item元素都包含一个包装在锚标记中的图像 将.container转换为一个flex容器,该容器将行中的项对齐 设置.item类的...CSS3中鼠标滑过图片突出放大效果 悬停时展开项目 我们的下一步是让项目在悬停时展开。...因为我们设置了一个项目在悬停时可以放大150%,所以转换应该设置为25%。这是悬停项所占用的额外空间的一半。...由于通用的同级组合器仅适用于位于给定选择器之后的同级(没有“向后”),因此我们需要另一种方法。 一种方法是在父容器本身上添加其他悬停规则。这是计划: 悬停父容器时,请将该容器内的所有项目向左移动。

    8.4K10

    lottie系列文章(一):lottie介绍

    作为一款K12青少年教育产品软件,动画对于吸引其用户注意力和提高用户体验有着重要的作用。特别是在目前开放了小学教育内容之后,动画能力的丰富和完善更是迫在眉睫。...在web侧,lottie-web库可以解析导出的动画json文件,并将其以svg或者canvas的方式将动画绘制到我们页面中。 ? 下面是lottie提供的官方效果图。...,lottie-web也提供了一系列的事件,例如: onComplete: 动画播放完成触发 onLoopComplete: 当前循环播放完成触发 onEnterFrame: 播放一帧动画的时候触发 onSegmentStart...: 开始播放一个动画片段的时候触发 总体而言,lottie-web目前提供了丰富的方法和事件,基本可以满足对动画进行控制的需求。...lottie原理简介 在Adobe After Effects中,动画是由一个一个的图层组成的,在相应的图层上面添加一些变换(例如:缩放、移动等),这变成为了动画。下面是一个AE图层截图: ?

    4.6K32

    Android Lottie 中秋月饼变明月动画特效

    和尚在 Android 端进行动画处理时主要用的是 Android 自带的三种动画形式,今天和尚简单尝试通过 Airbnb Lottie 展示一个中秋月饼变明月的小动画; Lottie Lottie...集成依赖 在 build.gradle 中集成最新版本的 Lottie 依赖并同步; api 'com.airbnb.android:lottie:4.1.0' 2....循环播放 & 动画监听 前两步设置完 setAnimation() 之后,播放完成就停止动画,若需要重复播放,可以通过 loop(true) 方式进行循环播放,但该方法在新的 API 中不建议使用...,可以通过 setRepeatCount() 设置播放次数,或通过动画监听在动画结束时再次播放等; mView2.loop(true); mView1.setRepeatCount(5);...;其中的 layers 也为图层信息;layers 中的 ks 为动画的主要信息; 和尚理解 Lottie 整体是利用属性动画控制进度,通过进度变更更改 layers 中触发 LottieAnimationView

    1.2K10

    Lottie : 让动画如此简单

    现在使用各平台的 native 代码实现一套复杂的动画是一件很困难并且耗时的事,我们需要为不同尺寸的屏幕加载不同的素材资源,还需要写大量难维护的代码,而Lottie可以做到同一个动画文件在不同平台上实现相同的效果...在布局文件中直接添加Lottie的LottieAnimationView控件,即可在界面显示React logo动画效果 lottie.LottieAnimationView.../* * Lottie内部有两个缓存map(强引用缓存,弱引用缓存),在动画文件加载完成后会根据设置的缓存策略缓存动画,方便下次使用。...bitmap在动画加载到window时被创建,被window删除时回收。所以不宜在RecyclerView中使用包涵mattes或者mask的动画,否则会引起bitmap抖动。...,内存和性能不够好;相对于属性动画,在展示大动画时,帧率较低 2.优势 (1)开发效率高—代码实现简单,更换动画方便,易于调试和维护。

    29.3K136

    复杂帧动画之移动端video采坑实现

    在企鹅辅导品牌页中,我们需要实现一个动画如下: 页面滚动到动画区域,播放动画, 对应动画部分如下: 帧动画当前的实现有以下几种方式: GIF 动画 大家比较熟悉的图片格式 lottie(http:...//airbnb.io/lottie/) Airbnb 开源项目,通过解析 AE 动画为 json 数据,支持跨平台的动画效果解决方案;lottie 在辅导中已经有实际应用,使用过的同学都表示对其实现效果和开发速度表示称赞和推荐...将动画导出 json 给到我们前端开发,在使用这段 json 数据中,我们引入了 lottie-web 脚本来解析这段 json 数据渲染成为SVG / canvas 动画,效果如下图, 左图为用 lottie...实现,右图为我我们的目标实现效果 可以看到实现还是存在着差异,颜色、数字倾斜度、虚线的透视都没有达到预期,于是放弃lottie 的使用,但这并不否定 lottie 在实现其它动画的优秀效果 APNG...video 的自动播放,考虑一些浏览器限制必须通过用户交互才能使用,如果视屏是在第一屏则有点难度,还是需要用户通过点击才能播放,如果不是第一屏则可通过 touch 事件来触发,毕竟用户下拉滚动还是会触发

    2.3K10

    从设计师和开发的角度使用 lottie

    可以在 iOS、Android 和 React Native 实时渲染 After Effects 动画,就像使用静态图片一样容易。上图即为 lottie 的 logo。...如下图: image.png 官网宣传了3个特性: 灵活使用AE的特性 随心所欲控制你的动画 很小的文件体积 个人认为 lottie 最大的优势就是可以将设计师设计的动图原原本本的在页面上展现出来,完美还原了动画的精细度...本文主要从设计师视角和开发者视角讲述 lottie-web 的原理和使用以及 lottie 在 weex/rax 中的使用。...只有在必要时才使用路径关键帧动画。...api 支持没有 airbnb 官方完整,投入生产环境时还需要严格测试一下 vue-weex demo 使用@ali/rax-lottie 的 rax demo 如下 小结 在我看来,追求更精细完美的动画体验一直是设计师和前端开发的使命

    3.3K21

    【源码分析】Lottie 实现炫酷动画背后的原理

    Render After Effects animations natively on Android and iOS Lottie 是 airbnb 发布的库,它可以将 AE 制作的动画 在 Android...Lottie 的适配原理 在开始使用 Lottie 的时候,我们团队设计动画走的跟设计图片一样的路子,想设计2x,3x 多份资源进行适配。...但是,通过阅读源码发现其实 Lottie本身在 Android 平台已经做了适配工作,而且适配原理很简单,解析 时,从 读取宽高之后 会再乘以手机的密度。...", compWidth, compHeight, screenWidth, screenHeight)); } 这里值得一提的是,设计师在设计动画时要注意,需要设计的是1X...,可以看到,setProgress 的最后触发了每个 layer 的 invalidateSelf,这都会让 lottieDrawable 重新绘制,然后重走一遍绘制流程,这样随着 animator 动画的进行

    2K11

    动画菜鸡的自我救赎之企鹅辅导品牌页开发总结

    一般来说,品牌介绍页都是少不了各种动画的。这里我列出了辅导品牌页的三个主要的动画,后面我会讲我的实现 隧道动画: ? 页面滑动到隧道位置的时候,会触发隧道动画的自动播放。...当页面滑动到AI教学模块时候触发AI模块动画的自动播放。可以看到有四部分的动画:上面数字的变化,下面的小男孩动画、轴动画以及文字的动画。其中小男孩动画、轴动画已经文字的动画需要保持一致。 2....但实际上,导出视频的大小会比导出动图的大小要小很多,后面在实现小男孩动画时候我会讲到。...具体表现为,在一些复杂的动画下,会丢失一些倾斜度、渐变或者色彩不正确。 3. 品牌页动画实现 隧道动画: ?...右边的tab是跟着隧道一起运动的,lottie可以监听进入每一帧的事件,在每一帧里,可以根据隧道当前播放的位置,确定右边tab的位置。 教研团队代表动画 ?

    1.8K41

    HarmonyOS 开发实践 —— 基于lottie的动画资源加载

    简介lottie是一个适用于HarmonyOS的动画库,它可以解析json格式的动画,并在移动设备上进行本地渲染。下载安裝:ohpm install @ohos/lottie。...path路径加载只支持文件夹下的相对路径,不能使用./或者../的相对路径,会导致动画加载不出来正确格式:path: 'common/lottie/grunt.json'。错误格式:path: '....3.在shareLibrary跟目录里导出目标组件。4.在希望使用组件的模块的oh-package.json5文件中添加依赖,还可以指定组件的别名。...5.在希望使用的组件页面通过自定义的别名导入目标组件。注意事项:json文件路径不能使用 ./ 或者 ../ 等相对路径,相对路径获取不到动画源数据,会导致动画加载不出来。...传递给loadAnimation方法的路径是相对于pages父文件夹为基准的,而index页面内引入的相对路径的动画是以index.ets文件为基准的,两者基准不一致。

    23520

    uniapp实现小程序页面自由拖拽组件

    根据组件定义,可以想到它的使用场景大概是在页面局部区域内对一些元素拖拽缩放,这个与我们想要的在整个页面进行自由拖拽的需求不符。...我们要拖拽的是一个canvas元素,用到了lottie动画库,点击时会播放动画。 如果你要实现页面拖拽的只是一个简单的按钮,那代码量会少很多。...', HudunAnimation) 页面中使用: wxml: // 进入页面时初始化动画...它的存在是由于在组件当中,正常情况下我们可以直接在data中定义一个属性存放动画实例,但是经过踩坑发现如果直接这么写 this.ins = lottie.loadAnimation({}) 控制台会报一个错误...为了解决此报错,改为在组件全局定义一个insList存放动画实例集合,通过传入的tag拿到对应的页面实例,然后调用对应的实例play方法。

    1.2K20
    领券