Skip to content

Commit 9565bac

Browse files
committed
🔔 #1109 add <source> support for lazyLoad
1 parent 97dd3d0 commit 9565bac

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

‎js/lazyload.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
const lazyAttr = 'data-flickity-lazyload';
2121
const lazySrcAttr = `${lazyAttr}-src`;
2222
const lazySrcsetAttr = `${lazyAttr}-srcset`;
23-
const imgSelector = `img[${lazyAttr}], img[${lazySrcAttr}], img[${lazySrcsetAttr}]`;
23+
const imgSelector = `img[${lazyAttr}], img[${lazySrcAttr}], ` +
24+
`img[${lazySrcsetAttr}], source[${lazySrcsetAttr}]`;
2425

2526
Flickity.create.lazyLoad = function() {
2627
this.on( 'select', this.lazyLoad );
@@ -31,7 +32,7 @@ Flickity.create.lazyLoad = function() {
3132
let proto = Flickity.prototype;
3233

3334
proto.lazyLoad = function() {
34-
let lazyLoad = this.options.lazyLoad;
35+
let { lazyLoad } = this.options;
3536
if ( !lazyLoad ) return;
3637

3738
// get adjacent cells, use lazyLoad option for adjacent count
@@ -108,7 +109,8 @@ LazyLoader.prototype.complete = function( event, className ) {
108109
// unbind events
109110
this.img.removeEventListener( 'load', this );
110111
this.img.removeEventListener( 'error', this );
111-
this.img.classList.add( className );
112+
let mediaElem = this.img.parentNode.matches('picture') ? this.img.parentNode : this.img;
113+
mediaElem.classList.add( className );
112114

113115
this.onComplete( this.img, event );
114116
};

‎sandbox/lazyload.html

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,8 @@
3838
background: #DDD;
3939
}
4040

41-
.carousel__cell__image {
41+
.carousel__cell__image,
42+
.carousel__cell__image img {
4243
display: block;
4344
max-width: 100%;
4445
max-height: 400px;
@@ -202,6 +203,32 @@ <h2>srcset</h2>
202203
</div>
203204
</div>
204205

206+
<h2>&lt;picture&gt;</h2>
207+
208+
<div class="carousel" data-flickity='{ "lazyLoad": true }'>
209+
<div class="carousel__cell">
210+
<picture class="carousel__cell__image">
211+
<source data-flickity-lazyload-srcset="https://picsum.photos/id/1036/1200/900" media="(min-width: 1200px)">
212+
<source data-flickity-lazyload-srcset="https://picsum.photos/id/1036/800/600" media="(min-width: 800px)">
213+
<img data-flickity-lazyload-src="https://picsum.photos/id/1036/400/300">
214+
</picture>
215+
</div>
216+
<div class="carousel__cell">
217+
<picture class="carousel__cell__image">
218+
<source data-flickity-lazyload-srcset="https://picsum.photos/id/103/1200/900" media="(min-width: 1200px)">
219+
<source data-flickity-lazyload-srcset="https://picsum.photos/id/103/800/600" media="(min-width: 800px)">
220+
<img data-flickity-lazyload-src="https://picsum.photos/id/103/400/300">
221+
</picture>
222+
</div>
223+
<div class="carousel__cell">
224+
<picture class="carousel__cell__image">
225+
<source data-flickity-lazyload-srcset="https://picsum.photos/id/1080/900/1200" media="(min-width: 1200px)">
226+
<source data-flickity-lazyload-srcset="https://picsum.photos/id/1080/600/800" media="(min-width: 800px)">
227+
<img data-flickity-lazyload-src="https://picsum.photos/id/1080/300/400">
228+
</picture>
229+
</div>
230+
</div>
231+
205232
<!-- jQuery -->
206233
<script src="../node_modules/jquery/dist/jquery.js"></script>
207234
<script src="../node_modules/jquery-bridget/jquery-bridget.js"></script>

0 commit comments

Comments
 (0)