Thursday, August 2, 2012

Lakukan Sesuatu Jika Elemen Mencapai Area Terlihat

JavaScript/jQuery, do something if the element reaches the visible area on the window.

Kode ini digunakan untuk mengeksekusi suatu perintah jika elemen telah mencapai area terlihat pada layar. Semacam prinsip yang biasanya digunakan pada plugin-plugin lazyLoader gambar dan infiniteScroll:

function isScrolledIntoView(elem) {
    var $window = $(window),
        docViewTop = $window.scrollTop(),
        docViewBottom = docViewTop + $window.height(),
        elemTop = $(elem).offset().top,
        elemBottom = elemTop + $(elem).outerHeight();
    return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
}

Sampel Penggunaan

Umumnya digunakan dalam peraturan kondisi seperti ini:

if (isScrolledIntoView('#element')) {
    $('#element').addClass('here-it-is');
}

Penggunaan pada Elemen Banyak

$('div').each(function() {
    if (isScrolledIntoView(this)) {
        $(this).addClass('here-it-is');
    } else {
        $(this).removeClass('here-it-is');
    }
});

Lihat Demo


Contoh Lain: Image Lazy Loader

HTML

<img src="" alt="Loading..." data-src="images/image-1.jpg">
<img src="" alt="Loading..." data-src="images/image-2.jpg">
<img src="" alt="Loading..." data-src="images/image-3.jpg">
<img src="" alt="Loading..." data-src="images/image-4.jpg">

jQuery

$(window).on("scroll", function() {
    $('img').each(function() {
        if (isScrolledIntoView(this)) {
            $(this).attr('src', $(this).data('src')).removeAttr('data-src');
        }
    });
});

Lihat Demo


Sumber: Lupa! :p

Labels: , , ,

7 Comments:

At Thursday, August 2, 2012 at 6:42:00 PM GMT+7, Blogger Surga Kenari said...

Luar biasa, pengen buat kreasi apa ya dengan yg satu ini.. hmmm..

 
At Thursday, August 2, 2012 at 11:41:00 PM GMT+7, Blogger Unknown said...

Itu bisa untuk semua-nya ngak bang..??

 
At Friday, August 3, 2012 at 11:04:00 AM GMT+7, Blogger Bayu Handono said...

owh baru keliatan pada saat di scroll.
PR 3 nih :D

 
At Friday, August 3, 2012 at 5:28:00 PM GMT+7, Blogger Putra said...

gunanya selain buat lazyload img apa mas? :D

 
At Friday, August 3, 2012 at 5:45:00 PM GMT+7, Blogger Taufik Nurrohman said...

Bisa, asalkan elemennya melintang.

 
At Friday, August 3, 2012 at 5:59:00 PM GMT+7, Blogger Taufik Nurrohman said...

Bikin JQuery WayPoint pakai ini! :-bd
http://imakewebthings.com/jquery-waypoints/

 
At Monday, June 17, 2013 at 8:10:00 AM GMT+7, Blogger Zaenal Abidin said...

waypoint untuk apa bung?

oiya, ada cara lain untuk menampakkan teks loading selain di tag "alt" tidak?
misal dimasukkan di javascriptnya dan tag "alt"nya penjelasan gambar seperti biasanya..

tolong buat kan donk mas kalau bisa.. :D

 

Post a Comment

<< Home