javascript - 滚动到页面的特定部分后启动 CSS 动画

标签 javascript jquery html css

我正在尝试在网页上使用 CSS 为图像制作动画。动画工作正常,但我只想在用户到达页面的特定部分时才启动动画。这是我的代码:

<div class="sec1-right">
   <img class="sec1-dmush1" src ="sec1-dmush1.png">
</div>

CSS

.sec1-right{
    position: relative;
    width: 50%;
    float: right;
    box-sizing: border-box;
    min-height: 600px;
    margin-top: 86px;
}

/* first section animation */
.sec1-dmush1 {
    animation: fadeAndScale .9s cubic-bezier(.45,-0.22,.34,1.69);
    transform-origin:center bottom;
    max-width: 150px;
    width: 100%;
    position: absolute;
    left: 180px;
    top: 300px;
    z-index: 0;
}

动画

@keyframes fadeAndScale{
    from{
        opacity:0;
        transform: scale3d(0,0,1);
    }
    to{
        opacity: 1;
        transform: scale3d(1,1,1);
    }
}

我怎样才能实现

最佳答案

您需要在 javascript 中编写 scroll 事件。元素 offsetTop 减去 window 高度。因此,一旦元素进入视口(viewport),事件就会开始。

Javascript:

var scrollpos = window.scrollY; // window scroll position
var wh = window.innerHeight-50; // as soon as element touches bottom with offset event starts
var element = document.querySelector(".sec1-dmush1"); //element

window.addEventListener('scroll', function(){ 
    if(scrollpos > (element.offsetTop - wh)){
        element.classList.add("onScroll");
    }
});

JsFiddle

jQuery:

$(window).scroll(function(){
  var wh = $(window).height()-50;
    if($(window).scrollTop() > $('.sec1-dmush1').offset().top-wh){
    $('.sec1-dmush1').addClass('onScroll');
  }
});

jsFiddle

如果您有多个元素需要设置动画。您可以使用 waypoint js 减少一些努力。

var wh = $(window).height();
var waypoints = $('.sec1-dmush1').waypoint(function(direction) {
    $(this.element).addClass('onScroll');
  console.log(11);
}, {
    offset: wh-50
});

jsFiddle

关于javascript - 滚动到页面的特定部分后启动 CSS 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49228608/

相关文章:

javascript - iFrame 元素未在容器内调整大小的问题

javascript - 以编程方式显示 Firefox 扩展弹出窗口

javascript - less 没有在 head 中定义

javascript - 如何使用 jquery 根据请求的 URL 在 slider 中显示特定幻灯片

javascript - 获取表javascript的行索引

javascript - jQuery.timer如何获取php中的当前值?

javascript - Angular 2 路由已弃用 : How to detect CanActivate?

javascript - 为什么我不能使用引导类表单控件在我的元素中添加另一个类?如果我添加但它不起作用

html - 在 "hero"节后添加内容

javascript - 哪些浏览器内部操作会阻止 requestAnimationFrame 被调用?