|
81 | 81 | }
|
82 | 82 | }
|
83 | 83 |
|
| 84 | + /** |
| 85 | + * Apply CSS styles to element. |
| 86 | + * |
| 87 | + * @param {HTMLElement} element |
| 88 | + * @param {Object} style |
| 89 | + */ |
| 90 | + function setStyle(element, style) { |
| 91 | + Object.keys(style).forEach(function(key) { |
| 92 | + element.style[key] = style[key]; |
| 93 | + }); |
| 94 | + } |
| 95 | + |
84 | 96 | /**
|
85 | 97 | * Class for dimension change detection.
|
86 | 98 | *
|
|
138 | 150 | element.resizeSensor = document.createElement('div');
|
139 | 151 | element.resizeSensor.dir = 'ltr';
|
140 | 152 | element.resizeSensor.className = 'resize-sensor';
|
141 |
| - var style = 'pointer-events: none; position: absolute; left: 0px; top: 0px; right: 0; bottom: 0; ' + |
142 |
| - 'overflow: hidden; z-index: -1; visibility: hidden; max-width: 100%;'; |
143 |
| - var styleChild = 'position: absolute; left: 0; top: 0; transition: 0s;'; |
144 |
| - |
145 |
| - element.resizeSensor.style.cssText = style; |
146 |
| - element.resizeSensor.innerHTML = |
147 |
| - '<div class="resize-sensor-expand" style="' + style + '">' + |
148 |
| - '<div style="' + styleChild + '"></div>' + |
149 |
| - '</div>' + |
150 |
| - '<div class="resize-sensor-shrink" style="' + style + '">' + |
151 |
| - '<div style="' + styleChild + ' width: 200%; height: 200%"></div>' + |
152 |
| - '</div>'; |
| 153 | + |
| 154 | + var style = { |
| 155 | + pointerEvents: 'none', |
| 156 | + position: 'absolute', |
| 157 | + left: '0px', |
| 158 | + top: '0px', |
| 159 | + right: '0px', |
| 160 | + bottom: '0px', |
| 161 | + overflow: 'hidden', |
| 162 | + zIndex: '-1', |
| 163 | + visibility: 'hidden', |
| 164 | + maxWidth: '100%' |
| 165 | + }; |
| 166 | + var styleChild = { |
| 167 | + position: 'absolute', |
| 168 | + left: '0px', |
| 169 | + top: '0px', |
| 170 | + transition: '0s', |
| 171 | + }; |
| 172 | + |
| 173 | + setStyle(element.resizeSensor, style); |
| 174 | + |
| 175 | + var expand = document.createElement('div'); |
| 176 | + expand.className = 'resize-sensor-expand'; |
| 177 | + setStyle(expand, style); |
| 178 | + |
| 179 | + var expandChild = document.createElement('div'); |
| 180 | + setStyle(expandChild, styleChild); |
| 181 | + expand.appendChild(expandChild); |
| 182 | + |
| 183 | + var shrink = document.createElement('div'); |
| 184 | + shrink.className = 'resize-sensor-shrink'; |
| 185 | + setStyle(shrink, style); |
| 186 | + |
| 187 | + var shrinkChild = document.createElement('div'); |
| 188 | + setStyle(shrinkChild, styleChild); |
| 189 | + setStyle(shrinkChild, { width: '200%', height: '200%' }); |
| 190 | + shrink.appendChild(shrinkChild); |
| 191 | + |
| 192 | + element.resizeSensor.appendChild(expand); |
| 193 | + element.resizeSensor.appendChild(shrink); |
153 | 194 | element.appendChild(element.resizeSensor);
|
154 | 195 |
|
155 | 196 | var computedStyle = window.getComputedStyle(element);
|
|
158 | 199 | element.style.position = 'relative';
|
159 | 200 | }
|
160 | 201 |
|
161 |
| - var expand = element.resizeSensor.childNodes[0]; |
162 |
| - var expandChild = expand.childNodes[0]; |
163 |
| - var shrink = element.resizeSensor.childNodes[1]; |
164 | 202 | var dirty, rafId;
|
165 | 203 | var size = getElementSize(element);
|
166 | 204 | var lastWidth = size.width;
|
|
0 commit comments