原生JS实现随着鼠标滚动到元素位置触发对应css3动画,简单易用

2023-11-20

废话不多说,直接上代码,附用法,纯博主手写,看完后,觉得好左上角请点个赞,觉得不好的请留下您的建议,谢谢(此代码改版很方便,大家可以任意发挥)

(注意:如果不想自己写动画的,可以引入Animate.css  相信这个动画库大家都不陌生)

body{overflow-x: hidden;}
div{width: 100px;height: 100px;margin: 100px auto 0;background: red;}
<body>
    <div class="dream" data-animate="bounceInUp,1s,linear"></div>
    <div class="dream" data-animate="flash,2s,linear"></div>
    <div class="dream" data-animate="pulse,1s,linear"></div>
    <div class="dream" data-animate="rubberBand,1s,linear"></div>
    <div class="dream" data-animate="shake,1s,linear"></div>
    <div class="dream" data-animate="swing,1s,linear"></div>
    <div class="dream" data-animate="tade,1s,linear"></div>
    <div class="dream" data-animate="wobble,1s,linear"></div>
    <div class="dream" data-animate="jello,1s,linear"></div>
    <div class="dream" data-animate="bounceIn,1s,linear"></div>
    <div class="dream" data-animate="bounceInDown,1s,linear"></div>
    <div class="dream" data-animate="bounceInLeft,1s,linear"></div>
    <div class="dream" data-animate="bounceInRight,1s,linear"></div>
    <div class="dream" data-animate="bounceInUp,1s,linear"></div>
    <div class="dream" data-animate="bounceOut,1s,linear"></div>
    <div class="dream" data-animate="bounceOutDown,1s,linear"></div>
    <div class="dream" data-animate="bounceOutLeft,1s,linear"></div>
    <div class="dream" data-animate="bounceOutRight,1s,linear"></div>
    <div class="dream" data-animate="bounceOutUp,1s,linear"></div>
    <div class="dream" data-animate="fadeIn,1s,linear"></div>
    <div class="dream" data-animate="fadeInDown,1s,linear"></div>
    <div class="dream" data-animate="fadeInLeft,1s,linear"></div>
    <div class="dream" data-animate="fadeInRight,1s,linear"></div>
    <div class="dream" data-animate="fadeInUp,1s,linear"></div>
    <div class="dream" data-animate="fadeInDownBig,1s,linear"></div>
    <div class="dream" data-animate="fadeInLeftBig,1s,linear"></div>
    <div class="dream" data-animate="fadeInRightBig,1s,linear"></div>
    <div class="dream" data-animate="fadeInUpBig,1s,linear"></div>
    <div class="dream" data-animate="flip,1s,linear"></div>
    <div class="dream" data-animate="hinge,1s,linear"></div>
</body>
<script>
        // 获取浏览器可见区域高度
        var window_height = document.documentElement.clientHeight;
        // 用户手动修改浏览器可见区域高度时修改变量
        window.onresize = function () {
            window_height = document.documentElement.clientHeight;
        };
        // 获取所需效果元素
        var My_dream = document.getElementsByClassName('dream');
        // 鼠标滚轮滚动执行方法
        window.onscroll = function () {
            my_animation()
        };
        // 用于第一屏没有滚动滚动条时触发一下
        my_animation();

        // 判断元素父集是否有已定位元素
        function getOffsetTop(ele) {
            var rtn = ele.offsetTop;
            var o = ele.offsetParent;
            while (o != null) {
                rtn += o.offsetTop;
                o = o.offsetParent;
            }
            return rtn;
        }

        // 滚动条等于0时执行第一屏效果
        function my_animation() {
            var _scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
            // 效果方法
            for (var k = 0; k < My_dream.length; k++) {
                if (_scrollTop >= getOffsetTop(My_dream[k]) - window_height && _scrollTop <= getOffsetTop(My_dream[k])) {
                    My_dream[k].style.animationName = My_dream[k].dataset.animate.split(',')[0];
                    My_dream[k].style.animationDuration = My_dream[k].dataset.animate.split(',')[1];
                    My_dream[k].style.animationTimingFunction = My_dream[k].dataset.animate.split(',')[2];
                }
            }
        }
</script>

用法很简单:

1)注意:没有自己写动画效果时,记得引入animate.css动画库

2)在想要添加动画的元素上添加class类名 dream

3)然后添加自定义属性 ( data-animate="动画名称,动画时间,动画速率" ),注意中间有 ","号隔开

4)加上后查看效果即可,使用前可以先复制博主代码查看下效果

(您的评价是对博主最大的鼓励,欢迎评价,觉得好左上角请点个赞,觉得不好的请留下您的建议,谢谢 (* ̄︶ ̄)  )

入行没多久时写的 有点low 来优化一下代码重复

如果资金充裕,可以请我喝杯咖啡,谢谢 Thanks♪(・ω・)ノ

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

原生JS实现随着鼠标滚动到元素位置触发对应css3动画,简单易用 的相关文章

  • WCF 服务主机配置 - 请尝试将 HTTP 端口更改为 8732

    我的 PC 上运行着一个复杂的基于 WCF 服务的解决方案 但由于安装 Windows 8 1 时出现问题 我不得不 刷新 我的 PC 现在我已经重新安装了 Visual Studio 2012 我的项目不再正常运行 当我调试单元测试时 w
  • 使用 Ruby aws-sdk 跟踪文件到 S3 的上传进度

    首先 我知道SO中有很多与此类似的问题 在过去的一周里 我读了大部分 如果不是全部 但我仍然无法让这项工作为我工作 我正在开发一个 Ruby on Rails 应用程序 允许用户将 mp3 文件上传到 Amazon S3 上传本身工作正常
  • 如何在连接到 Heroku PostgreSQL 的 Flask 应用程序上处理更多并发用户?

    Heroku 上的 Flask API 有许多端点 它们在将 json 化结果返回给客户端之前在我的 Heroku PostgreSQL 数据库上运行查询 我当前的计划是 Hobby Basic 层 因此数据库最多只能处理 20 个连接 如
  • Matplotlib loglog 的错误刻度/标签(双轴)

    我正在使用 matplotlib 创建对数图 如下图所示 默认刻度选择得很糟糕 充其量是这样 右边的 y 轴甚至根本没有 在线性等效中确实如此 而两个 x 轴都只有一个 有没有办法获得合理数量的带有标签的刻度 without为每个情节手动指
  • Jquery 以编程方式更改

    文本

    编辑 解决方案是将其添加到个人资料页面而不是性别页面 profile live pageinit function event p pTest text localStorage getItem gender 我在列表视图中有一个带有一些文
  • 将客户端库添加到 Razor 类库

    我正在学习 Blazor 我注意到创建 Razor 类库是一个很好的做法 您将在其中定义大部分组件 这样您就可以在客户端或服务器中使用它们 而不会出现太多问题 在不同的框架中 我习惯于以 SASS 形式包含库作为引导程序 这样我就可以在我的
  • $ 在 JQuery 中意味着什么

    在下面的 var obj one 1 two 2 three 3 four 4 five 5 each obj function i val console log val 这里是什么意思 是对象吗 是一个别名jQuery对象 函数 它充当
  • 如何将 SQLite 数据库捆绑到 Go 二进制文件中?

    我尝试使用 go bindata 和 packr 但这些包没有显示如何将 SQLite 数据库文件打包到二进制文件中 我不需要以任何方式更新数据库 我只想在启动时从中读取数据 如何将 SQLite 数据库文件嵌入到 Go 二进制文件中 SQ
  • 在DialogFragment中,onCreate应该做什么?

    我目前正在摆弄 DialogFragment 以学习使用它 我假设相比onCreateView onCreate 可以这样做 public void onCreate Bundle savedInstanceState super onCr
  • 如何通过点击复制 folium 地图上的标记位置?

    I am able to print the location of a given marker on the map using folium plugins MousePosition class GeoMap def update
  • 使用溢出支持定位粘性填充材料[重复]

    这个问题在这里已经有答案了 我在用position sticky在我的应用程序中 在使用overflow属性来显示滚动条 我已经寻找了一个确实支持这种情况的polyfill 但到目前为止没有任何运气 有谁知道这样的polyfill shim
  • 如何禁用 solr 管理页面

    对于生产来说 拥有一个甚至不要求登录凭据的 solr 管理员感觉不安全 如何禁用默认的 solr 管理页面 我只是希望我的 web 应用程序使用 Solr 进行搜索词索引 我强烈建议保留管理页面用于调试目的 它在很多情况下拯救了我 有多种方
  • 在成为FirstResponder或resignFirstResponder的情况下将对象保持在键盘顶部?

    我目前在键盘顶部有一个 UITextField 当您点击它时 它应该粘在键盘顶部并平滑地向上移动 我不知道键盘的具体时长和动画类型 所以确实很坎坷 这是我所拥有的 theTextView resignFirstResponder UIVie
  • 水平和垂直居中 div 位于页面中间,页眉和页脚粘在页面顶部和底部

    我正在尝试制作一个具有固定高度页眉和页脚的页面 页眉位于屏幕顶部 100 宽度 页脚位于底部 100 宽度 我想将一个具有可变高度内容的 div 居中放置在页眉和页脚之间的空间中 在下面的 jsfiddle 中 如果内容比空格短 它会起作用
  • java中void的作用是什么?

    返回类型 方法返回值的数据类型 如果方法不返回值 则返回 void http download oracle com javase tutorial java javaOO methods html http download oracle
  • 是否可以使用 Dapper 流式传输大型 SQL Server 数据库结果集?

    我需要从数据库返回大约 500K 行 请不要问为什么 然后 我需要将这些结果保存为 XML 更紧急 并将该文件通过 ftp 传输到某个神奇的地方 我还需要转换结果集中的每一行 现在 这就是我正在做的事情 TOP 100结果 使用 Dappe
  • 描述符“join”需要“unicode”对象,但收到“str”

    代码改编自here http wiki geany org howtos convert camelcase from foo bar to Foo Bar def lower case underscore to camel case s
  • 使用 paramiko 运行 Sudo 命令

    我正在尝试执行sudo使用 python paramiko 在远程计算机上运行命令 我尝试了这段代码 import paramiko ssh paramiko SSHClient ssh set missing host key polic
  • 为什么 try catch 块没有捕获 Promise 异常?

    我对承诺的错误处理感到困惑 答案可能很明显 但我不明白 我有以下示例代码 var test async function throw new Error Just another error try test then catch err
  • HTML 表格 - 固定列宽和多个可变列宽

    我必须建立一个有 5 列的表 表格宽度是可变的 内容宽度的 50 有些列包含固定大小的按钮 因此这些列应该有一个固定大小 例如 100px 有些列中有文本 所以我希望这些列具有可变的列宽 例如 Column1 tablewidth sum

随机推荐

  • 【Java基础知识 15】java反射机制原理详解

    Java学习路线 搬砖工逆袭Java架构师 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞 收藏 留言 目录 一 类的加载与ClassLoader的理解
  • 干货分享

    对于数据分析师 建模工程师来说 将处理好的数据放在可视化的面板上进行呈现将更加有助于同事 领导来理解结果 今天小编就给大家来介绍一下如何用Python来制作一个数据可视化面板 使用的是Streamlit库 对于开发人员来说 只需几分钟就可以
  • Linux系统下如何修改主机名

    Linux系统安装好后 都会有默认的主机名 这里是用CentOS系统为例 默认的主机名是localhost localdomain 为了便于使用 我们常常需要修改主机名 下面演示是永久修改主机名的方法 第一步 更改 etc sysconfi
  • 利用docker搭漏洞环境并复现案例(crlf、目录穿越)

    准备 1 安装docker 2 导入漏洞环境文 3 配置漏洞文件 CRLF 原理 复现 目录穿越漏洞 准备 1 安装docker 1 更新系统软件包 sudo yum update 2 安装 Docker 的依赖软件包 sudo yum i
  • 腾讯云CVM云服务器实例族是什么?区别选择攻略

    腾讯云服务器CVM有多种实例族 如标准型S6 标准型S5 SA3实例 高IO型 内存 计算型及GPU型实例等 如何选择云服务器CVM实例规格呢 腾讯云服务器网建议根据实际使用场景选择云服务器CVM规格 例如Web网站应用可以选择标准型S5或
  • UML总结4---UML九种图关系说明

    UML中包括九种图 用例图 类图 对象图 状态图 时序图 协作图 活动图 组件图 配置图 用例图 Use Case Diagram 它是UML中最简单也是最复杂的一种图 说它简单是因为它采用了面向对象的思想 又是基于用户视角的 绘制非常容易
  • gRPC C++开发环境搭建

    特别需要强调 grpc需要6 3以上的gcc g 版本 如果低于此版本的需要参考文档进行升级 cmake gcc的版本 ubuntu16 04默认的版本不支持 1 安装必要的依赖工具 安装必要的依赖工具 sudo apt get insta
  • OneNote 深度评测:使用资源、插件、模版

    评测 OneNote 是生产力办公套件 Office 微软所提供 大厂背景 不用担心微软跑路 免费 主要是指使用免费 由于 OneNote 默认是存储至 OneDrive 之上 如果你要存一些比较大的文件 那边需要你付费购买 OneDriv
  • JVM的类加载机制

    1 概述 JVM是Java语言实现跨平台的关键 Java语言的运行过程 java通过编译器编译为 class 通用字节码文件并不能直接被操作系统所识别 针对不同的操作系统可安装对应的JVM JVM将字节码解释为当前平台所能识别的机器码实现
  • Failed to bind properties under ‘spring.datasource.type‘ to java.lang.Class<javax.sql.DataSource>

    Description Failed to bind properties under spring datasource type to java lang Class
  • 准备三个月,终拿快手offer!薪资28k*16

    昨天有VIP小伙伴给小孟说 拿到了快手的offer 聊了半个小时 待遇还不错 准备去了 28k 16薪 快手的k3c职级可对标阿里的P7 前面我说过 能去大厂就去大厂 有机会就去争取 年纪轻轻的 多努力就完事了 找工作运气占很大的成分 甚至
  • 关于Robomaster机甲大师比赛的Yaw轴电机齿轮比不为1:1的解决方法

    Yaw轴电机齿轮比不为1 1的解决方法 问题 解决办法 弊端 问题 在Robomaster比赛中我们的英雄机器人的机械结构没做好 整体做得稍微有点大 云台也是很有质量 于是采用了6020电机带动齿轮1 1 5转动 但这样带来的结果就是有时候
  • 大数据技术之Zookeeper

    大数据技术之Zookeeper 一 zookeeper特点 二 zookeeper单机模式 三 zookeeper 常用命令 四 查看zookeeper 状态的几种方式 一 zookeeper特点 Zookeeper 文件系统 通知机制 1
  • 从零玩转人脸识别之RGB人脸活体检测

    从零玩转RGB人脸活体检测 前言 作者个人博客 点击前往 本期教程人脸识别第三方平台为虹软科技 本文章讲解的是人脸识别RGB活体追踪技术 免费的功能很多可以自行搭配 希望在你看完本章课程有所收获 ArcFace 离线SDK 包含人脸检测 性
  • short定义的两个数相加最后越界问题

    Java 程序语言提供了一些可以作用在整数值上的操作数 比较运算子 得到 boolean 型别的值 数值比较运算子 lt gt gt 和 gt 15 20 1 数值相等运算子 和 15 21 1 数值运算子 得到 int 或 long 型别
  • java pakage、import关键字

    package介绍 常用的包 import 案例
  • C语言结构体初始化的四种方法

    定义 struct InitMember int first double second char third float four 方法一 定义时赋值 struct InitMember test 10 3 141590 method o
  • 静态功耗具体指什么

    之前我的理解一直为静态功耗等同于关机功耗 今天专门搜索了解了下 百度百科给出的定义是指漏电流功耗 是电路状态稳定时的功耗 其数量级很小 其实这个定义很模糊 怎样的状态是电路稳定状态 我自己的理解是静态功耗为两种 一 等同于关机功耗 即器件全
  • ssh连接很慢GSS failure解决办法

    什么导致了 scp 和 ssh 的登陆提示速度下降 就我自身所遇到的情况来看 这些延迟绝大部分是 GSSAPI 的认证功能导致的 你可以用 v 选项确认你的情况 例如 下面是 ssh 的详细登陆过程 cherry cherry ssh v
  • 原生JS实现随着鼠标滚动到元素位置触发对应css3动画,简单易用

    废话不多说 直接上代码 附用法 纯博主手写 看完后 觉得好左上角请点个赞 觉得不好的请留下您的建议 谢谢 此代码改版很方便 大家可以任意发挥 注意 如果不想自己写动画的 可以引入Animate css 相信这个动画库大家都不陌生 body