我有一个条形图,动画与CSS3和动画目前激活的网页加载。
我遇到的问题是,给定的条形图被放置在屏幕之外,因为它之前有很多内容,所以当用户向下滚动到它时,动画已经完成了。
我一直在寻找通过CSS3或jQuery的方法,以便仅在查看者看到条形图时才激活条形图上的CSS3动画。
<div>lots of content here, it fills the height of the screen and then some</div>
<div>animating bar chat here</div>
如果你在页面加载后快速向下滚动,你可以看到它的动画效果。
这是我的一段jsfiddle代码,另外,我不知道这是否重要,但是我在页面上有几个这个条形图的示例。
我曾经遇到过一个名为waypoint的jQuery插件,但我完全没有运气让它工作。
6条答案
按热度按时间0yg35tkg1#
捕获滚动事件
这需要使用JavaScript或jQuery来捕获滚动事件,并在每次触发滚动事件时检查元素是否在视图中。
一旦元素进入视图,就开始动画。在下面的代码中,这是通过向元素添加一个“start”类来完成的,该类触发动画。
Updated demo
超文本标记语言
中央支助组
jQuery软件
bpzcxfmw2#
有时候你需要动画总是在元素在视口中的时候出现。如果你是这种情况,我稍微修改了Mattjsfiddle代码来反映这一点。
jQuery语言
ldxq2e6h3#
为了激活一个CSS动画,当元素可见时需要添加一个类,正如其他答案所指出的,JS是必需的,Waypoints是可以使用的JS脚本。
航点是在滚动到元素时触发功能的最简单方法。
在Waypoints版本2之前,这是一个相对简单的jquery插件。在版本3和更高版本(本指南版本3.1.1)中,引入了几个特性。为了实现上述功能,可以使用脚本的'inview shortcut':
1.从this link或Github下载并添加脚本文件(版本3是not yet available到CDNJS,尽管RawGit也始终是一个选项)。
1.像往常一样将脚本添加到HTML中。
1.添加以下JS代码,将
#myelement
替换为相应的HTML元素jQuery选择器:我们使用
$(window).load()
的原因已在here中说明。更新了马特的小提琴here。
xsuvu9jc4#
您不再需要捕获滚动事件
自2020年以来,每个浏览器都能够通知元素是否在视口中可见。
与交叉口观察员。
我在这里张贴代码:https://stackoverflow.com/a/62536793/5390321
ercv8c1e5#
除了这些答案外,请考虑以下几点:
1-检查视图中的图元有许多注意事项:
How to tell if a DOM element is visible in the current viewport?
2-如果有人想对动画有更多的控制(例如设置“* 动画类型 ”和“ 开始延迟 *”),这里有一篇关于它的好文章:
http://blog.webbb.be/trigger-css-animation-scroll/
3-而且,没有延迟地调用addClass(使用setTimeout)似乎也没有效果。
oknwwptz6#
触发器的CSS: