Skip to content

Commit eb3295e

Browse files
committed
feature(style): get computed transition for nondestructive styles [closes #197]
1 parent 7719d37 commit eb3295e

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

scrollreveal.js

+23-15
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
/ ___/______________ / / / __ \___ _ _____ ____ _/ /
44
\__ \/ ___/ ___/ __ \/ / / /_/ / _ \ | / / _ \/ __ `/ /
55
___/ / /__/ / / /_/ / / / _, _/ __/ |/ / __/ /_/ / /
6-
/____/\___/_/ \____/_/_/_/ |_|\___/|___/\___/\__,_/_/ v3.0.0
6+
/____/\___/_/ \____/_/_/_/ |_|\___/|___/\___/\__,_/_/ v3.0.2
77
88
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
99
Copyright 2014–2016 Julian Lloyd (@jlmakes) Open source under MIT license
@@ -127,32 +127,40 @@ ______________________________________________________________________________*/
127127
};
128128

129129
ScrollReveal.prototype.style = function( elem ) {
130-
var config = elem.config;
130+
var config = elem.config;
131+
var computed = window.getComputedStyle( elem.domEl );
131132

132133
if ( !elem.styles ) {
133134
elem.styles = {
134135
transition : {},
135-
transform : {}
136+
transform : {},
137+
computed : {}
136138
};
137-
elem.styles.inline = elem.domEl.getAttribute('style') || '';
138-
elem.styles.inline += '; visibility: visible; ';
139-
elem.styles.opacity = window.getComputedStyle( elem.domEl ).opacity;
139+
elem.styles.inline = elem.domEl.getAttribute('style') || '';
140+
elem.styles.inline += '; visibility: visible; ';
141+
elem.styles.computed.opacity = computed.opacity;
142+
143+
if ( !computed.transition || computed.transition == 'all 0s ease 0s' ) {
144+
elem.styles.computed.transition = '';
145+
} else {
146+
elem.styles.computed.transition = computed.transition + ', ';
147+
}
140148
}
141149

142-
elem.styles.transition.instant = 'transition: transform ' + config.duration / 1000 + 's ' + config.easing + ' 0s, opacity ' + config.duration / 1000 + 's ' + config.easing + ' 0s; ' +
143-
'-webkit-transition: -webkit-transform ' + config.duration / 1000 + 's ' + config.easing + ' 0s, opacity ' + config.duration / 1000 + 's ' + config.easing + ' 0s; ';
150+
elem.styles.transition.instant = '-webkit-transition: ' + elem.styles.computed.transition + '-webkit-transform ' + config.duration / 1000 + 's ' + config.easing + ' 0s, opacity ' + config.duration / 1000 + 's ' + config.easing + ' 0s; ' +
151+
'transition: ' + elem.styles.computed.transition + 'transform ' + config.duration / 1000 + 's ' + config.easing + ' 0s, opacity ' + config.duration / 1000 + 's ' + config.easing + ' 0s; ';
144152

145-
elem.styles.transition.delayed = 'transition: transform ' + config.duration / 1000 + 's ' + config.easing + ' ' + config.delay / 1000 + 's, opacity ' + config.duration / 1000 + 's ' + config.easing + ' ' + config.delay / 1000 + 's; ' +
146-
'-webkit-transition: -webkit-transform ' + config.duration / 1000 + 's ' + config.easing + ' ' + config.delay / 1000 + 's, opacity ' + config.duration / 1000 + 's ' + config.easing + ' ' + config.delay / 1000 + 's; ';
147-
148-
elem.styles.transform.initial = 'transform:';
149-
elem.styles.transform.target = 'transform:';
150-
generateTransform( elem.styles.transform );
153+
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; ' +
154+
'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; ';
151155

152156
elem.styles.transform.initial += ' -webkit-transform:';
153157
elem.styles.transform.target += ' -webkit-transform:';
154158
generateTransform( elem.styles.transform );
155159

160+
elem.styles.transform.initial = 'transform:';
161+
elem.styles.transform.target = 'transform:';
162+
generateTransform( elem.styles.transform );
163+
156164
function generateTransform( transform ) {
157165
if ( parseInt( config.distance ) ) {
158166
transform.initial += ' translate' + config.axis + '(' + config.distance + ')';
@@ -175,7 +183,7 @@ ______________________________________________________________________________*/
175183
transform.target += ' rotateZ(0)';
176184
}
177185
transform.initial += '; opacity: ' + config.opacity + ';';
178-
transform.target += '; opacity: ' + elem.styles.opacity + ';';
186+
transform.target += '; opacity: ' + elem.styles.computed.opacity + ';';
179187
}
180188
};
181189

0 commit comments

Comments
 (0)