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