14
14
/ ___/______________ / / / __ \___ _ _____ ____ _/ /
15
15
\__ \/ ___/ ___/ __ \/ / / /_/ / _ \ | / / _ \/ __ `/ /
16
16
___/ / /__/ / / /_/ / / / _, _/ __/ |/ / __/ /_/ / /
17
- /____/\___/_/ \____/_/_/_/ |_|\___/|___/\___/\__,_/_/ v3.0.3
17
+ /____/\___/_/ \____/_/_/_/ |_|\___/|___/\___/\__,_/_/ v3.0.4
18
18
19
19
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
20
20
Copyright 2014–2016 Julian Lloyd (@jlmakes) Open source under MIT license
@@ -57,8 +57,8 @@ ______________________________________________________________________________*/
57
57
58
58
if ( sr . tools . isMobile ( ) && ! sr . defaults . mobile ) {
59
59
return false ;
60
- } else if ( ! sr . tools . browserSupports ( 'transform' ) ) {
61
- return console . warn ( 'Your browser does not support CSS transform .' ) ;
60
+ } else if ( ! sr . tools . isSupported ( 'transform' ) || ! sr . tools . isSupported ( 'transition ') ) {
61
+ return console . warn ( 'ScrollReveal is not supported in this browser .' ) ;
62
62
}
63
63
64
64
sr . store = {
@@ -72,7 +72,7 @@ ______________________________________________________________________________*/
72
72
return sr ;
73
73
}
74
74
75
- ScrollReveal . prototype . reveal = function ( selector , config , sync ) {
75
+ ScrollReveal . prototype . reveal = function ( selector , config , sync ) {
76
76
var elements , container , elem , elemId ;
77
77
78
78
if ( config && config . container ) {
@@ -83,7 +83,7 @@ ______________________________________________________________________________*/
83
83
84
84
elements = Array . prototype . slice . call ( container . querySelectorAll ( selector ) ) ;
85
85
if ( ! elements . length ) {
86
- console . warn ( 'reveal(\'' + selector + '\') failed: no elements found.' ) ;
86
+ console . warn ( 'reveal(\'' + selector + '\') failed: no elements found.' ) ;
87
87
return sr ;
88
88
}
89
89
for ( var i = 0 ; i < elements . length ; i ++ ) {
@@ -115,8 +115,8 @@ ______________________________________________________________________________*/
115
115
}
116
116
if ( ! sync ) {
117
117
sr . record ( selector , config ) ;
118
+ sr . init ( ) ;
118
119
}
119
- sr . init ( ) ;
120
120
return sr ;
121
121
} ;
122
122
@@ -165,12 +165,12 @@ ______________________________________________________________________________*/
165
165
elem . styles . transition . delayed = '-webkit-transition: ' + elem . styles . computed . transition + '-webkit-transform ' + config . duration / 1000 + 's ' + config . easing + ' ' + config . delay / 1000 + 's, opacity ' + config . duration / 1000 + 's ' + config . easing + ' ' + config . delay / 1000 + 's; ' +
166
166
'transition: ' + elem . styles . computed . transition + 'transform ' + config . duration / 1000 + 's ' + config . easing + ' ' + config . delay / 1000 + 's, opacity ' + config . duration / 1000 + 's ' + config . easing + ' ' + config . delay / 1000 + 's; ' ;
167
167
168
- elem . styles . transform . initial + = ' -webkit-transform:' ;
169
- elem . styles . transform . target + = ' -webkit-transform:' ;
168
+ elem . styles . transform . initial = ' -webkit-transform:' ;
169
+ elem . styles . transform . target = ' -webkit-transform:' ;
170
170
generateTransform ( elem . styles . transform ) ;
171
171
172
- elem . styles . transform . initial = 'transform:' ;
173
- elem . styles . transform . target = 'transform:' ;
172
+ elem . styles . transform . initial + = 'transform:' ;
173
+ elem . styles . transform . target + = 'transform:' ;
174
174
generateTransform ( elem . styles . transform ) ;
175
175
176
176
function generateTransform ( transform ) {
@@ -221,7 +221,7 @@ ______________________________________________________________________________*/
221
221
sr . store . containers [ i ] . addEventListener ( 'scroll' , sr . handler ) ;
222
222
sr . store . containers [ i ] . addEventListener ( 'resize' , sr . handler ) ;
223
223
}
224
- if ( ! sr . initialized ) {
224
+ if ( ! sr . initialized ) {
225
225
window . addEventListener ( 'scroll' , sr . handler ) ;
226
226
window . addEventListener ( 'resize' , sr . handler ) ;
227
227
sr . initialized = true ;
@@ -262,7 +262,7 @@ ______________________________________________________________________________*/
262
262
elem . seen = true ;
263
263
queueCallback ( 'reveal' , elem ) ;
264
264
265
- } else if ( ! visible && elem . config . reset && elem . revealed ) {
265
+ } else if ( ! visible && elem . config . reset && elem . revealed ) {
266
266
elem . domEl . setAttribute ( 'style' ,
267
267
elem . styles . inline
268
268
+ elem . styles . transform . initial
@@ -305,19 +305,19 @@ ______________________________________________________________________________*/
305
305
}
306
306
} ;
307
307
308
- ScrollReveal . prototype . getContainerSize = function ( container ) {
308
+ ScrollReveal . prototype . getContainer = function ( container ) {
309
309
if ( ! container ) {
310
310
container = window . document . documentElement ;
311
311
}
312
- var w = container [ ' clientWidth' ] || 0 ;
313
- var h = container [ ' clientHeight' ] || 0 ;
312
+ var w = container . clientWidth ;
313
+ var h = container . clientHeight ;
314
314
return {
315
315
width : w ,
316
316
height : h
317
317
} ;
318
318
} ;
319
319
320
- ScrollReveal . prototype . getScrolled = function ( container ) {
320
+ ScrollReveal . prototype . getScrolled = function ( container ) {
321
321
if ( ! container ) {
322
322
return {
323
323
x : window . pageXOffset ,
@@ -333,8 +333,10 @@ ______________________________________________________________________________*/
333
333
} ;
334
334
335
335
ScrollReveal . prototype . getOffset = function ( domEl ) {
336
- var offsetTop = 0 ;
337
- var offsetLeft = 0 ;
336
+ var offsetTop = 0 ;
337
+ var offsetLeft = 0 ;
338
+ var offsetHeight = domEl . offsetHeight ;
339
+ var offsetWidth = domEl . offsetWidth ;
338
340
339
341
do {
340
342
if ( ! isNaN ( domEl . offsetTop ) ) {
@@ -346,46 +348,46 @@ ______________________________________________________________________________*/
346
348
} while ( domEl = domEl . offsetParent ) ;
347
349
348
350
return {
349
- top : offsetTop ,
350
- left : offsetLeft
351
+ top : offsetTop ,
352
+ left : offsetLeft ,
353
+ height : offsetHeight ,
354
+ width : offsetWidth
351
355
} ;
352
356
} ;
353
357
354
- ScrollReveal . prototype . isElemVisible = function ( elem ) {
355
-
358
+ ScrollReveal . prototype . isElemVisible = function ( elem ) {
356
359
var offset = sr . getOffset ( elem . domEl ) ;
357
- var container = sr . getContainerSize ( elem . config . container ) ;
360
+ var container = sr . getContainer ( elem . config . container ) ;
358
361
var scrolled = sr . getScrolled ( elem . config . container ) ;
359
362
var vF = elem . config . viewFactor ;
360
363
361
- var elemHeight = elem . domEl . offsetHeight ;
362
- var elemWidth = elem . domEl . offsetWidth ;
364
+ var elemHeight = offset . height ;
365
+ var elemWidth = offset . width ;
363
366
var elemTop = offset . top ;
364
- var elemBottom = elemTop + elemHeight ;
365
367
var elemLeft = offset . left ;
368
+ var elemBottom = elemTop + elemHeight ;
366
369
var elemRight = elemLeft + elemWidth ;
367
370
368
371
return ( confirmBounds ( ) || isPositionFixed ( ) ) ;
369
372
370
- function confirmBounds ( ) {
371
-
373
+ function confirmBounds ( ) {
372
374
var top = elemTop + elemHeight * vF ;
373
- var bottom = elemBottom - elemHeight * vF ;
374
375
var left = elemLeft + elemWidth * vF ;
376
+ var bottom = elemBottom - elemHeight * vF ;
375
377
var right = elemRight - elemWidth * vF ;
376
378
377
379
var viewTop = scrolled . y + elem . config . viewOffset . top ;
378
- var viewBottom = scrolled . y - elem . config . viewOffset . bottom + container . height ;
379
380
var viewLeft = scrolled . x + elem . config . viewOffset . left ;
380
- var viewRight = scrolled . x - elem . config . viewOffset . right + container . width ;
381
+ var viewBottom = scrolled . y - elem . config . viewOffset . bottom + container . height ;
382
+ var viewRight = scrolled . x - elem . config . viewOffset . right + container . width ;
381
383
382
384
return ( top < viewBottom )
383
385
&& ( bottom > viewTop )
384
386
&& ( left > viewLeft )
385
387
&& ( right < viewRight ) ;
386
388
}
387
389
388
- function isPositionFixed ( ) {
390
+ function isPositionFixed ( ) {
389
391
return ( window . getComputedStyle ( elem . domEl ) . position === 'fixed' ) ;
390
392
}
391
393
} ;
@@ -396,6 +398,7 @@ ______________________________________________________________________________*/
396
398
var record = sr . history [ i ] ;
397
399
sr . reveal ( record . selector , record . config , true ) ;
398
400
} ;
401
+ sr . init ( ) ;
399
402
} else {
400
403
console . warn ( 'sync() failed: no reveals found.' ) ;
401
404
}
@@ -413,8 +416,8 @@ ______________________________________________________________________________*/
413
416
} ;
414
417
415
418
Tools . prototype . forOwn = function ( object , callback ) {
416
- if ( ! this . isObject ( object ) ) {
417
- throw new TypeError ( 'Expected \'object\', but received \'' + typeof object + '\'.' ) ;
419
+ if ( ! this . isObject ( object ) ) {
420
+ throw new TypeError ( 'Expected \'object\', but received \'' + typeof object + '\'.' ) ;
418
421
} else {
419
422
for ( var property in object ) {
420
423
if ( object . hasOwnProperty ( property ) ) {
@@ -446,27 +449,27 @@ ______________________________________________________________________________*/
446
449
return / A n d r o i d | w e b O S | i P h o n e | i P a d | i P o d | B l a c k B e r r y | I E M o b i l e | O p e r a M i n i / i. test ( navigator . userAgent ) ;
447
450
} ;
448
451
449
- Tools . prototype . browserSupports = function ( feature ) {
452
+ Tools . prototype . isSupported = function ( feature ) {
450
453
var sensor = document . createElement ( 'sensor' ) ;
451
454
var cssPrefix = 'Webkit,Moz,O,' . split ( ',' ) ;
452
455
var tests = ( feature + cssPrefix . join ( feature + ',' ) ) . split ( ',' ) ;
453
456
454
- for ( var i = 0 ; i < tests . length ; i ++ ) {
457
+ for ( var i = 0 ; i < tests . length ; i ++ ) {
455
458
if ( ! sensor . style [ tests [ i ] ] === '' ) {
456
459
return false ;
457
460
}
458
461
}
459
462
return true ;
460
463
} ;
461
464
462
- function Tools ( ) { } ;
465
+ function Tools ( ) { } ;
463
466
return Tools ;
464
467
465
468
} ) ( ) ;
466
469
467
- var _requestAnimationFrame = this . requestAnimationFrame ||
468
- this . webkitRequestAnimationFrame ||
469
- this . mozRequestAnimationFrame ;
470
+ var _requestAnimationFrame = window . requestAnimationFrame ||
471
+ window . webkitRequestAnimationFrame ||
472
+ window . mozRequestAnimationFrame ;
470
473
471
474
} ) . call ( this ) ;
472
475
0 commit comments