OLD | NEW |
---|---|
1 <!DOCTYPE> | 1 <!DOCTYPE> |
2 <html> | 2 <html> |
3 <style> | 3 <style> |
4 #element-container-vw { | 4 #element-container-vw { |
5 background:green; | 5 background:green; |
6 height:30vw; | 6 height:30vw; |
7 width:30vw; | 7 width:30vw; |
8 font-size:3vw; | 8 font-size:3vw; |
9 line-height:4vw; | 9 line-height:4vw; |
10 text-indent:2vw; | 10 text-indent:2vw; |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
142 <script src="../../resources/js-test.js"></script> | 142 <script src="../../resources/js-test.js"></script> |
143 <script> | 143 <script> |
144 if (window.testRunner) | 144 if (window.testRunner) |
145 testRunner.dumpAsText(); | 145 testRunner.dumpAsText(); |
146 | 146 |
147 description("Test for Bug: 27160/91440 - Implement vw/vh/vmin/vmax (viewport siz es) from CSS 3 Values and Units"); | 147 description("Test for Bug: 27160/91440 - Implement vw/vh/vmin/vmax (viewport siz es) from CSS 3 Values and Units"); |
148 | 148 |
149 // These have to be global for the test helpers to see them. | 149 // These have to be global for the test helpers to see them. |
150 var element, style; | 150 var element, style; |
151 | 151 |
152 function vw(x) { | |
153 return "'" + (x * window.innerWidth / 100) + "px'"; | |
154 } | |
155 | |
156 function vh(x) { | |
157 return "'" + (x * window.innerHeight / 100) + "px'"; | |
158 } | |
159 | |
160 function vmin(x) { | |
161 return "'" + (x * Math.min(window.innerWidth, window.innerHeight) / 100) + " px'"; | |
162 } | |
163 | |
164 function vmax(x) { | |
165 return "'" + (x * Math.max(window.innerWidth, window.innerHeight) / 100) + " px'"; | |
166 } | |
167 | |
152 function getTheStyle() { | 168 function getTheStyle() { |
153 debug("Test for vw") | 169 debug("Test for vw") |
154 element = document.getElementById("element-container-vw"); | 170 element = document.getElementById("element-container-vw"); |
155 style = window.getComputedStyle(element,null); | 171 style = window.getComputedStyle(element,null); |
156 var viewportWidth = window.innerWidth; | 172 shouldBe('style.getPropertyValue("height")', vw(30)); |
esprehn
2013/12/04 06:02:28
Clever. :)
| |
157 shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportW idth / 100) + "px'"); | 173 shouldBe('style.getPropertyValue("width")', vw(30)); |
158 shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportWi dth / 100) + "px'"); | 174 shouldBe('style.getPropertyValue("font-size")', vw(3)); |
159 shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewpor tWidth / 100) + "px'"); | 175 shouldBe('style.getPropertyValue("line-height")', vw(4)); |
160 shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewp ortWidth / 100) + "px'"); | 176 shouldBe('style.getPropertyValue("text-indent")', vw(2)); |
161 shouldBe('style.getPropertyValue("text-indent")', "'2vw'"); | 177 shouldBe('style.getPropertyValue("margin-left")', vw(2)); |
162 shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewp ortWidth / 100) + "px'"); | 178 shouldBe('style.getPropertyValue("margin-right")', vw(2)); |
163 shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * view portWidth / 100) + "px'"); | 179 shouldBe('style.getPropertyValue("margin-top")', vw(2)); |
164 shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewpo rtWidth / 100) + "px'"); | 180 shouldBe('style.getPropertyValue("margin-bottom")', vw(2)); |
165 shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * vie wportWidth / 100) + "px'"); | 181 shouldBe('style.getPropertyValue("border-top-left-radius")', vw(1)); |
166 shouldBe('style.getPropertyValue("border-top-left-radius")', "'1vw'"); | 182 shouldBe('style.getPropertyValue("border-top-right-radius")', vw(1)); |
167 shouldBe('style.getPropertyValue("border-top-right-radius")', "'1vw'"); | 183 shouldBe('style.getPropertyValue("border-bottom-left-radius")', vw(1)); |
168 shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'1vw'"); | 184 shouldBe('style.getPropertyValue("border-bottom-right-radius")', vw(1)); |
169 shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'1vw'"); | 185 shouldBe('style.getPropertyValue("min-height")', vw(10)); |
170 shouldBe('style.getPropertyValue("min-height")', "'10vw'"); | 186 shouldBe('style.getPropertyValue("min-width")', vw(10)); |
171 shouldBe('style.getPropertyValue("min-width")', "'10vw'"); | 187 shouldBe('style.getPropertyValue("max-height")', vw(60)); |
172 shouldBe('style.getPropertyValue("max-height")', "'60vw'"); | 188 shouldBe('style.getPropertyValue("max-width")', vw(60)); |
173 shouldBe('style.getPropertyValue("max-width")', "'60vw'"); | |
174 element.id = "element-container-absolute-vw"; | 189 element.id = "element-container-absolute-vw"; |
175 shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportWidt h / 100) + "px'"); | 190 shouldBe('style.getPropertyValue("top")', vw(10)); |
176 shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportW idth / 100) + "px'"); | 191 shouldBe('style.getPropertyValue("bottom")', vw(10)); |
177 shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportWid th / 100) + "px'"); | 192 shouldBe('style.getPropertyValue("left")', vw(10)); |
178 shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportWi dth / 100) + "px'"); | 193 shouldBe('style.getPropertyValue("right")', vw(10)); |
179 shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * view portWidth / 100) + "px'"); | 194 shouldBe('style.getPropertyValue("padding-left")', vw(2)); |
180 shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * vie wportWidth / 100) + "px'"); | 195 shouldBe('style.getPropertyValue("padding-right")', vw(2)); |
181 shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewp ortWidth / 100) + "px'"); | 196 shouldBe('style.getPropertyValue("padding-top")', vw(2)); |
182 shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * vi ewportWidth / 100) + "px'"); | 197 shouldBe('style.getPropertyValue("padding-bottom")', vw(2)); |
183 | 198 |
184 debug("\nTest for vh") | 199 debug("\nTest for vh") |
185 element.id = "element-container-vh"; | 200 element.id = "element-container-vh"; |
186 style = window.getComputedStyle(element,null); | 201 style = window.getComputedStyle(element,null); |
187 var viewportHeight = window.innerHeight; | 202 var viewportHeight = window.innerHeight; |
188 shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportH eight / 100) + "px'"); | 203 shouldBe('style.getPropertyValue("height")', vh(30)); |
189 shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportHe ight / 100) + "px'"); | 204 shouldBe('style.getPropertyValue("width")', vh(30)); |
190 shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewpor tHeight / 100) + "px'"); | 205 shouldBe('style.getPropertyValue("font-size")', vh(3)); |
191 shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewp ortHeight / 100) + "px'"); | 206 shouldBe('style.getPropertyValue("line-height")', vh(4)); |
192 shouldBe('style.getPropertyValue("text-indent")', "'2vh'"); | 207 shouldBe('style.getPropertyValue("text-indent")', vh(2)); |
193 shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewp ortHeight / 100) + "px'"); | 208 shouldBe('style.getPropertyValue("margin-left")', vh(2)); |
194 shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * view portHeight / 100) + "px'"); | 209 shouldBe('style.getPropertyValue("margin-right")', vh(2)); |
195 shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewpo rtHeight / 100) + "px'"); | 210 shouldBe('style.getPropertyValue("margin-top")', vh(2)); |
196 shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * vie wportHeight / 100) + "px'"); | 211 shouldBe('style.getPropertyValue("margin-bottom")', vh(2)); |
197 shouldBe('style.getPropertyValue("border-top-left-radius")', "'1vh'"); | 212 shouldBe('style.getPropertyValue("border-top-left-radius")', vh(1)); |
198 shouldBe('style.getPropertyValue("border-top-right-radius")', "'1vh'"); | 213 shouldBe('style.getPropertyValue("border-top-right-radius")', vh(1)); |
199 shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'1vh'"); | 214 shouldBe('style.getPropertyValue("border-bottom-left-radius")', vh(1)); |
200 shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'1vh'"); | 215 shouldBe('style.getPropertyValue("border-bottom-right-radius")', vh(1)); |
201 shouldBe('style.getPropertyValue("min-height")', "'10vh'"); | 216 shouldBe('style.getPropertyValue("min-height")', vh(10)); |
202 shouldBe('style.getPropertyValue("min-width")', "'10vh'"); | 217 shouldBe('style.getPropertyValue("min-width")', vh(10)); |
203 shouldBe('style.getPropertyValue("max-height")', "'60vh'"); | 218 shouldBe('style.getPropertyValue("max-height")', vh(60)); |
204 shouldBe('style.getPropertyValue("max-width")', "'60vh'"); | 219 shouldBe('style.getPropertyValue("max-width")', vh(60)); |
205 element.id = "element-container-absolute-vh"; | 220 element.id = "element-container-absolute-vh"; |
206 shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportHeig ht / 100) + "px'"); | 221 shouldBe('style.getPropertyValue("top")', vh(10)); |
207 shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportH eight / 100) + "px'"); | 222 shouldBe('style.getPropertyValue("bottom")', vh(10)); |
208 shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportHei ght / 100) + "px'"); | 223 shouldBe('style.getPropertyValue("left")', vh(10)); |
209 shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportHe ight / 100) + "px'"); | 224 shouldBe('style.getPropertyValue("right")', vh(10)); |
210 shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * view portHeight / 100) + "px'"); | 225 shouldBe('style.getPropertyValue("padding-left")', vh(2)); |
211 shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * vie wportHeight / 100) + "px'"); | 226 shouldBe('style.getPropertyValue("padding-right")', vh(2)); |
212 shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewp ortHeight / 100) + "px'"); | 227 shouldBe('style.getPropertyValue("padding-top")', vh(2)); |
213 shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * vi ewportHeight / 100) + "px'"); | 228 shouldBe('style.getPropertyValue("padding-bottom")', vh(2)); |
214 | 229 |
215 debug("\nTest for vmin") | 230 debug("\nTest for vmin") |
216 element.id = "element-container-vmin"; | 231 element.id = "element-container-vmin"; |
217 style = window.getComputedStyle(element,null); | 232 style = window.getComputedStyle(element,null); |
218 var viewportMinLength = Math.min(window.innerWidth, window.innerHeight); | 233 var viewportMinLength = Math.min(window.innerWidth, window.innerHeight); |
219 shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportM inLength / 100) + "px'"); | 234 shouldBe('style.getPropertyValue("height")', vmin(30)); |
220 shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportMi nLength / 100) + "px'"); | 235 shouldBe('style.getPropertyValue("width")', vmin(30)); |
221 shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewpor tMinLength / 100) + "px'"); | 236 shouldBe('style.getPropertyValue("font-size")', vmin(3)); |
222 shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewp ortMinLength / 100) + "px'"); | 237 shouldBe('style.getPropertyValue("line-height")', vmin(4)); |
223 shouldBe('style.getPropertyValue("text-indent")', "'2vmin'"); | 238 shouldBe('style.getPropertyValue("text-indent")', vmin(2)); |
224 shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewp ortMinLength / 100) + "px'"); | 239 shouldBe('style.getPropertyValue("margin-left")', vmin(2)); |
225 shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * view portMinLength / 100) + "px'"); | 240 shouldBe('style.getPropertyValue("margin-right")', vmin(2)); |
226 shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewpo rtMinLength / 100) + "px'"); | 241 shouldBe('style.getPropertyValue("margin-top")', vmin(2)); |
227 shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * vie wportMinLength / 100) + "px'"); | 242 shouldBe('style.getPropertyValue("margin-bottom")', vmin(2)); |
228 shouldBe('style.getPropertyValue("border-top-left-radius")', "'1vmin'"); | 243 shouldBe('style.getPropertyValue("border-top-left-radius")', vmin(1)); |
229 shouldBe('style.getPropertyValue("border-top-right-radius")', "'1vmin'"); | 244 shouldBe('style.getPropertyValue("border-top-right-radius")', vmin(1)); |
230 shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'1vmin'"); | 245 shouldBe('style.getPropertyValue("border-bottom-left-radius")', vmin(1)); |
231 shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'1vmin'"); | 246 shouldBe('style.getPropertyValue("border-bottom-right-radius")', vmin(1)); |
232 shouldBe('style.getPropertyValue("min-height")', "'10vmin'"); | 247 shouldBe('style.getPropertyValue("min-height")', vmin(10)); |
233 shouldBe('style.getPropertyValue("min-width")', "'10vmin'"); | 248 shouldBe('style.getPropertyValue("min-width")', vmin(10)); |
234 shouldBe('style.getPropertyValue("max-height")', "'60vmin'"); | 249 shouldBe('style.getPropertyValue("max-height")', vmin(60)); |
235 shouldBe('style.getPropertyValue("max-width")', "'60vmin'"); | 250 shouldBe('style.getPropertyValue("max-width")', vmin(60)); |
236 element.id = "element-container-absolute-vmin"; | 251 element.id = "element-container-absolute-vmin"; |
237 shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportMinL ength / 100) + "px'"); | 252 shouldBe('style.getPropertyValue("top")', vmin(10)); |
238 shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportM inLength / 100) + "px'"); | 253 shouldBe('style.getPropertyValue("bottom")', vmin(10)); |
239 shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportMin Length / 100) + "px'"); | 254 shouldBe('style.getPropertyValue("left")', vmin(10)); |
240 shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportMi nLength / 100) + "px'"); | 255 shouldBe('style.getPropertyValue("right")', vmin(10)); |
241 shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * view portMinLength / 100) + "px'"); | 256 shouldBe('style.getPropertyValue("padding-left")', vmin(2)); |
242 shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * vie wportMinLength / 100) + "px'"); | 257 shouldBe('style.getPropertyValue("padding-right")', vmin(2)); |
243 shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewp ortMinLength / 100) + "px'"); | 258 shouldBe('style.getPropertyValue("padding-top")', vmin(2)); |
244 shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * vi ewportMinLength / 100) + "px'"); | 259 shouldBe('style.getPropertyValue("padding-bottom")', vmin(2)); |
245 | 260 |
246 debug("\nTest for vmax") | 261 debug("\nTest for vmax") |
247 element.id = "element-container-vmax"; | 262 element.id = "element-container-vmax"; |
248 style = window.getComputedStyle(element,null); | 263 style = window.getComputedStyle(element,null); |
249 var viewportMaxLength = Math.max(window.innerWidth, window.innerHeight); | 264 var viewportMaxLength = Math.max(window.innerWidth, window.innerHeight); |
250 shouldBe('style.getPropertyValue("height")', "'" + Math.floor(30 * viewportM axLength / 100) + "px'"); | 265 shouldBe('style.getPropertyValue("height")', vmax(30)); |
251 shouldBe('style.getPropertyValue("width")', "'" + Math.floor(30 * viewportMa xLength / 100) + "px'"); | 266 shouldBe('style.getPropertyValue("width")', vmax(30)); |
252 shouldBe('style.getPropertyValue("font-size")', "'" + Math.floor(3 * viewpor tMaxLength / 100) + "px'"); | 267 shouldBe('style.getPropertyValue("font-size")', vmax(3)); |
253 shouldBe('style.getPropertyValue("line-height")', "'" + Math.floor(4 * viewp ortMaxLength / 100) + "px'"); | 268 shouldBe('style.getPropertyValue("line-height")', vmax(4)); |
254 shouldBe('style.getPropertyValue("text-indent")', "'2vmax'"); | 269 shouldBe('style.getPropertyValue("text-indent")', vmax(2)); |
255 shouldBe('style.getPropertyValue("margin-left")', "'" + Math.floor(2 * viewp ortMaxLength / 100) + "px'"); | 270 shouldBe('style.getPropertyValue("margin-left")', vmax(2)); |
256 shouldBe('style.getPropertyValue("margin-right")', "'" + Math.floor(2 * view portMaxLength / 100) + "px'"); | 271 shouldBe('style.getPropertyValue("margin-right")', vmax(2)); |
257 shouldBe('style.getPropertyValue("margin-top")', "'" + Math.floor(2 * viewpo rtMaxLength / 100) + "px'"); | 272 shouldBe('style.getPropertyValue("margin-top")', vmax(2)); |
258 shouldBe('style.getPropertyValue("margin-bottom")', "'" + Math.floor(2 * vie wportMaxLength / 100) + "px'"); | 273 shouldBe('style.getPropertyValue("margin-bottom")', vmax(2)); |
259 shouldBe('style.getPropertyValue("border-top-left-radius")', "'1vmax'"); | 274 shouldBe('style.getPropertyValue("border-top-left-radius")', vmax(1)); |
260 shouldBe('style.getPropertyValue("border-top-right-radius")', "'1vmax'"); | 275 shouldBe('style.getPropertyValue("border-top-right-radius")', vmax(1)); |
261 shouldBe('style.getPropertyValue("border-bottom-left-radius")', "'1vmax'"); | 276 shouldBe('style.getPropertyValue("border-bottom-left-radius")', vmax(1)); |
262 shouldBe('style.getPropertyValue("border-bottom-right-radius")', "'1vmax'"); | 277 shouldBe('style.getPropertyValue("border-bottom-right-radius")', vmax(1)); |
263 shouldBe('style.getPropertyValue("min-height")', "'10vmax'"); | 278 shouldBe('style.getPropertyValue("min-height")', vmax(10)); |
264 shouldBe('style.getPropertyValue("min-width")', "'10vmax'"); | 279 shouldBe('style.getPropertyValue("min-width")', vmax(10)); |
265 shouldBe('style.getPropertyValue("max-height")', "'60vmax'"); | 280 shouldBe('style.getPropertyValue("max-height")', vmax(60)); |
266 shouldBe('style.getPropertyValue("max-width")', "'60vmax'"); | 281 shouldBe('style.getPropertyValue("max-width")', vmax(60)); |
267 element.id = "element-container-absolute-vmax"; | 282 element.id = "element-container-absolute-vmax"; |
268 shouldBe('style.getPropertyValue("top")', "'" + Math.floor(10 * viewportMaxL ength / 100) + "px'"); | 283 shouldBe('style.getPropertyValue("top")', vmax(10)); |
269 shouldBe('style.getPropertyValue("bottom")', "'" + Math.floor(10 * viewportM axLength / 100) + "px'"); | 284 shouldBe('style.getPropertyValue("bottom")', vmax(10)); |
270 shouldBe('style.getPropertyValue("left")', "'" + Math.floor(10 * viewportMax Length / 100) + "px'"); | 285 shouldBe('style.getPropertyValue("left")', vmax(10)); |
271 shouldBe('style.getPropertyValue("right")', "'" + Math.floor(10 * viewportMa xLength / 100) + "px'"); | 286 shouldBe('style.getPropertyValue("right")', vmax(10)); |
272 shouldBe('style.getPropertyValue("padding-left")', "'" + Math.floor(2 * view portMaxLength / 100) + "px'"); | 287 shouldBe('style.getPropertyValue("padding-left")', vmax(2)); |
273 shouldBe('style.getPropertyValue("padding-right")', "'" + Math.floor(2 * vie wportMaxLength / 100) + "px'"); | 288 shouldBe('style.getPropertyValue("padding-right")', vmax(2)); |
274 shouldBe('style.getPropertyValue("padding-top")', "'" + Math.floor(2 * viewp ortMaxLength / 100) + "px'"); | 289 shouldBe('style.getPropertyValue("padding-top")', vmax(2)); |
275 shouldBe('style.getPropertyValue("padding-bottom")', "'" + Math.floor(2 * vi ewportMaxLength / 100) + "px'"); | 290 shouldBe('style.getPropertyValue("padding-bottom")', vmax(2)); |
276 } | 291 } |
277 getTheStyle(); | 292 getTheStyle(); |
278 </script> | 293 </script> |
279 </html> | 294 </html> |
OLD | NEW |