@@ -24,6 +24,7 @@ class AnimatedBlur {
24
24
this . initialized = false ;
25
25
element . classList . add ( 'animated-blur' ) ;
26
26
}
27
+
27
28
static get BLUR_MODE ( ) {
28
29
return {
29
30
BLUR : 1 ,
@@ -87,6 +88,25 @@ class AnimatedBlur {
87
88
document . getElementsByTagName ( 'head' ) [ 0 ] . appendChild ( s ) ;
88
89
}
89
90
}
91
+
92
+ calculateMargin ( ) {
93
+ this . marginTop =
94
+ parseInt ( window . getComputedStyle ( this . element ) . marginTop ) ;
95
+ this . marginLeft =
96
+ parseInt ( window . getComputedStyle ( this . element ) . marginLeft ) ;
97
+ if ( this . marginTop == 0 ) {
98
+ var header = 'p, pre, h1, h2, h3, h4, h5, h6' ;
99
+ var descendants = this . element . querySelectorAll ( header ) ;
100
+ for ( var i = 0 ; i < descendants . length ; ++ i ) {
101
+ if ( window . getComputedStyle ( descendants [ i ] ) . marginTop != '0px' ) {
102
+ this . marginTop =
103
+ parseInt ( window . getComputedStyle ( descendants [ i ] ) . marginTop ) ;
104
+ break ;
105
+ }
106
+ }
107
+ }
108
+ }
109
+
90
110
// Create template for shadow dom. It includes the element to be animated
91
111
// and its style.
92
112
createTemplate ( ) {
@@ -126,24 +146,8 @@ class AnimatedBlur {
126
146
var height = this . element . clientHeight ;
127
147
var container = document . createElement ( 'div' ) ;
128
148
container . id = this . name + '-clonedElement' ;
129
- // The following margin* logic should be optimized.
130
- var marginTop =
131
- parseInt ( window . getComputedStyle ( this . element ) . marginTop ) ;
132
- var marginLeft =
133
- parseInt ( window . getComputedStyle ( this . element ) . marginLeft ) ;
134
- if ( marginTop == 0 ) {
135
- var header = 'p, pre, h1, h2, h3, h4, h5, h6' ;
136
- var descendants = this . element . querySelectorAll ( header ) ;
137
- for ( var i = 0 ; i < descendants . length ; ++ i ) {
138
- if ( window . getComputedStyle ( descendants [ i ] ) . marginTop != '0px' ) {
139
- marginTop =
140
- parseInt ( window . getComputedStyle ( descendants [ i ] ) . marginTop ) ;
141
- break ;
142
- }
143
- }
144
- }
145
- container . style . top = this . element . offsetTop - marginTop + 'px' ;
146
- container . style . left = this . element . offsetLeft - marginLeft + 'px' ;
149
+ container . style . top = this . element . offsetTop - this . marginTop + 'px' ;
150
+ container . style . left = this . element . offsetLeft - this . marginLeft + 'px' ;
147
151
container . style . width = width + 'px' ;
148
152
container . style . height = height + 'px' ;
149
153
container . classList . add ( 'composited' ) ;
@@ -186,6 +190,7 @@ class AnimatedBlur {
186
190
if ( this . initialized )
187
191
return ;
188
192
document . body . classList . add ( 'bodyStyle' ) ;
193
+ this . calculateMargin ( ) ;
189
194
this . setupKeyFrames ( ) ;
190
195
this . createTemplate ( ) ;
191
196
this . cloneElements ( ) ;
@@ -229,8 +234,13 @@ class AnimatedBlur {
229
234
}
230
235
231
236
resize ( ) {
232
- var elements = document . body . querySelectorAll ( '.clonedElement' ) ;
237
+ var blur = 'div[id^="' + this . name + '"][id$="clonedElement"]' ;
238
+ var elements = document . body . querySelectorAll ( blur ) ;
233
239
for ( var i = 0 ; i < elements . length ; ++ i ) {
240
+ elements [ i ] . style . top = this . element . offsetTop
241
+ - this . marginTop + 'px' ;
242
+ elements [ i ] . style . left = this . element . offsetLeft
243
+ - this . marginLeft + 'px' ;
234
244
elements [ i ] . style . width = this . element . clientWidth + 'px' ;
235
245
elements [ i ] . style . height = this . element . clientHeight + 'px' ;
236
246
}
0 commit comments