View on GitHub

viewport

A library for get a callback when any element becomes visible in a viewport (window or custom viewport)

viewport

A library for get a callback when any element becomes visible in a viewport (window or custom viewport)

Dependencies

Introduction

// image lazy load
$(function() {
  var viewport = new Viewport(window, {
    delay: 150,
    threshold: 0,
    skipHidden: true,
    thresholdBorderReaching: 0,
    target: 'img[data-src]'
  });

  viewport.on('viewchange', function(e) {
    $.each(e.target, function(i, image) {
      image = $(image);

      var src = image.attr('data-src');

      if (!src) return;

      image.removeAttr('data-src');
      image.addClass('ui-loading');

      $('<img />')
        .on('load error', { image: image, src: src }, function(event) {
          var image = event.data.image;
          var src = event.data.src;

          image
            .hide()
            .removeClass('ui-loading')
            .attr('src', src)
            .fadeIn('fast');
        })
        .attr('src', src);
    });
  });
});

API

Viewport(viewport[, options])

viewport - HTMLElement|window

The viewport element

options

Method

on

Add a event listener

off

Remove a event listener

emit(event[, data])

Trigger a event

refresh([options])

Refresh viewport

destroy()

Destroy viewport

Event

viewchange

When viewport on scroll and resize, it will emit viewchange event

Event Data

Demo

Viewport scroll spy and viewport image lazyload