首页 > web前端 > css教程 > 如何仅在元素滚动到视图中时触发 CSS3 动画?

如何仅在元素滚动到视图中时触发 CSS3 动画?

Mary-Kate Olsen
发布: 2024-12-09 00:54:11
原创
731 人浏览过

How Can I Trigger CSS3 Animations Only When an Element Scrolls into View?

当内容滚动到视图中时激活 CSS3 动画

当元素的位置超出视口时,它会从视图中隐藏。为了优化性能,只有当元素出现在视口中时才能启动 CSS3 动画。这对于放置在页面下方且上方有大量内容的元素特别有用。

为了实现这一点,我们利用 JavaScript 或 jQuery 来捕获滚动事件。一旦触发滚动事件,代码就会检查目标元素是否已滚动到视口中。如果是这样,则向元素添加一个指示类,提示动画开始。

代码实现:

HTML:

<div class="bar">
    <div class="level eighty">80%</div>
</div>
登录后复制

CSS:

.eighty.start {
    width: 0px;
    background: #aae0aa;
    -webkit-animation: eighty 2s ease-out forwards;
       -moz-animation: eighty 2s ease-out forwards;
        -ms-animation: eighty 2s ease-out forwards;
         -o-animation: eighty 2s ease-out forwards;
            animation: eighty 2s ease-out forwards;
}
登录后复制

jQuery:

function isElementInViewport(elem) {
    var $elem = $(elem);

    // Scroll position
    var viewportTop = $(window).scrollTop();
    var viewportBottom = viewportTop + $(window).height();

    // Element position
    var elemTop = $elem.offset().top;
    var elemBottom = elemTop + $elem.height();

    return (elemTop < viewportBottom) && (elemBottom > viewportTop);
}

function checkAnimation() {
    var $elem = $('.bar .level');

    if ($elem.hasClass('start')) return;
    
    if (isElementInViewport($elem)) {
        $elem.addClass('start');
    }
}

$(window).scroll(function(){
    checkAnimation();
});
登录后复制

以上是如何仅在元素滚动到视图中时触发 CSS3 动画?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板