nic*_*yyc 1 javascript jquery viewport scrollview jquery-events
我正在尝试获得类似于/sf/answers/3176493491/(预览:https : //codepen.io/jbanegas/pen/LjpXom)的绘图动画效果,以便在用户滚动到该部分时加载页。它旨在在用户导航页面时添加多个这些绘图框。
我意识到 jQuery 现在有点过时了,但这是在一个已经使用这个框架的 WordPress 网站上。
jQuery
<script type='text/javascript'>
$(document).ready(function(){
$('.thisisatest').addClass('draw');
});
</script>
Run Code Online (Sandbox Code Playgroud)
HTML
<div class="thisisatest"></div>
Run Code Online (Sandbox Code Playgroud)
我试过替换为.ready():
onload- https://www.w3schools.com/jsref/event_onload.asp
.scroll()- https://api.jquery.com/scroll/
任何帮助将不胜感激。
你缺少基础知识。除了添加滚动事件外,您还需要明确元素是否在视口中。
这是香草JS解决方案......
它将适用于所有具有内容和.thisisatest类的div 。
参考阅读有关该isInViewport函数如何工作的链接。
var isInViewport = function(elem) {
var distance = elem.getBoundingClientRect();
return (
distance.top >= 0 &&
distance.left >= 0 &&
distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
distance.right <= (window.innerWidth || document.documentElement.clientWidth)
);
};
// read the link on how above code works
var findMe = document.querySelectorAll('.thisisatest');
window.addEventListener('scroll', function(event) {
// add event on scroll
findMe.forEach(element => {
//for each .thisisatest
if (isInViewport(element)) {
//if in Viewport
element.classList.add("draw");
}
});
}, false);
Run Code Online (Sandbox Code Playgroud)
示例: jsfiddle