首頁 > web前端 > css教學 > 如何僅在元素滾動到視圖中時觸發 CSS3 動畫?

如何僅在元素滾動到視圖中時觸發 CSS3 動畫?

Mary-Kate Olsen
發布: 2024-12-09 00:54:11
原創
755 人瀏覽過

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;
}
登入後複製

CSS:

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();
});
登入後複製
CSS:CSS:CSS:CSS:CSS:CSS:jQuery:

以上是如何僅在元素滾動到視圖中時觸發 CSS3 動畫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板