ember-lazy-image
v0.0.15
Published
Lazy image loading for Ember apps
Downloads
200
Readme
ember-lazy-image
ember-lazy-image
is a component that allows you to gracefully handle image loading.
Component will load images lazily, only if they appeared in the view port. This optimization brings page load time down.
Default loading placeholder is stolen from aurer and his awesome codepen.
Installation
From inside your ember-cli project, run the following:
ember install ember-lazy-image
Installation for ember-cli 0.1.5 - 0.2.2
ember install:addon ember-lazy-image
Installation without ember-cli
npm install ember-lazy-image --save
lazy-image
{{lazy-image url='http://my-valid-url.com/foo.jpg'}}
Component will wait until the image is loaded and while waiting it will show default loading placeholder (see above).
You can customize loading
placeholder by passing it as an parameter:
{{#lazy-image url='http://my-valid-url.com/foo.jpg'}}
<!-- custom template goes here, spinner, svg, etc. -->
{{/lazy-image}}
You can also define the fallback if the image failed to load. By default, component will render
Image failed to load
text.
You can customize error
text by passing it as an parameter:
{{lazy-image url='http://my-not-valid-url.com/foo.jpg' errorText='Something went wrong.'}}
width
, height
and data-*
attributes
Lazy Image supports width
, height
and data-*
attribute bindings.
{{lazy-image url='http://my-valid-url.com/foo.jpg' width=400 height=400 data-foo-bar="my-foo-bar"}}
{{lazy-image url='http://my-valid-url.com/foo.jpg' width=400 height=400 data-foo-bar=foo.bar.path}}
class
attribute
You can also pass class names for the image element.
{{lazy-image url='http://my-valid-url.com/foo.jpg' class='foo-bar baz-bar'}}
alt
attribute
You can pass the alt attribute to the component and it will be rendered on the image element
{{lazy-image url='http://my-valid-url.com/foo.jpg' alt='foo description'}}
ember-in-viewport options
Lazy Image uses ember-in-viewport for viewport detection. Due to the way listeners and requestAnimationFrame
is setup, you'll have to override the ember-in-viewport
options by creating app/components/lazy-image.js
:
// app/components/lazy-image.js
import Ember from 'ember';
import LazyImage from 'ember-lazy-image/components/lazy-image';
export default LazyImage.extend({
viewportOptionsOverride: Ember.on('didInsertElement', function() {
Ember.setProperties(this, {
viewportUseRAF : true,
viewportSpy : false,
viewportRefreshRate : 150,
viewportTolerance: {
top : 50,
bottom : 50,
left : 20,
right : 20
}
});
})
});
See Advanced usage (options) for more in detail ember-in-viewport
options.
The use of threshold
is deprecated in favor of viewportTolerance
.
Experimental lazy-background-image
This is an experimental component that will add background-image
style attribute to a component's div
. It also
sets min-height
attribute to 270px
so the image is visible. You should be able to overwrite it by using lazy-background-image
class.
Installation
git clone
this repositorynpm install
bower install
Running
ember server
- Visit your app at http://localhost:4200.
Running Tests
ember test
ember test --server
Building
ember build
For more information on using ember-cli, visit http://www.ember-cli.com/.