Rumah >hujung hadapan web >tutorial css >Bagaimana Mencetuskan Animasi CSS3 Hanya Apabila Elemen Ditatal ke Paparan?

Bagaimana Mencetuskan Animasi CSS3 Hanya Apabila Elemen Ditatal ke Paparan?

Barbara Streisand
Barbara Streisandasal
2024-11-30 20:08:18516semak imbas

How to Trigger CSS3 Animation Only When an Element is Scrolled into View?

Mencetuskan Animasi CSS3 pada Tatal

Masalah:

Carta bar animasi dimuatkan sebelum kandungan ditatal ke paparan, menghasilkan terlepas animasi.

Penyelesaian:

Untuk mengaktifkan animasi CSS3 semasa tatal ke paparan:

1. Tangkap Acara Tatal

Laksanakan pendengar acara JavaScript atau jQuery yang memantau acara tatal.

2. Semak Keterlihatan Elemen

Untuk setiap acara tatal, semak sama ada elemen (carta bar) boleh dilihat dalam port pandangan pengguna.

3. Mulakan Animasi

Setelah elemen kelihatan (cth., apabila isElementInViewport()) kembali benar), mulakan animasi dengan menggunakan kelas CSS yang sesuai (cth., "start") .

Contoh Kod:

<!-- 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) {
    // Calculate element and viewport positions
    // ...

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

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

    // Prevent redundant animation start
    if ($elem.hasClass('start')) return;

    if (isElementInViewport($elem)) {
        // Start the animation
        $elem.addClass('start');
    }
}

$(window).scroll(function(){
    checkAnimation();
});

Atas ialah kandungan terperinci Bagaimana Mencetuskan Animasi CSS3 Hanya Apabila Elemen Ditatal ke Paparan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn