| <link rel=author title="Tab Atkins-Bittner" href="https://www.xanthir.com/contact/"> | |
| <link rel="help" href="https://drafts.csswg.org/css-values/#calc-range"> | |
| <body><!doctype html> | |
| <title>Serializing Integers Never Uses Scinot</title> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <link rel=author title="Tab Atkins-Bittner" href="https://www.xanthir.com/contact/"> | |
| <link rel="help" href="https://drafts.csswg.org/cssom/#serialize-a-css-component-value"> | |
| <!-- | |
| Per CSSOM, integers always serialize all their digits out. | |
| They never serialize to scinot, regardless of size, | |
| because that makes them stop being an integer. | |
| This applies to custom properties as well. | |
| --> | |
| <body> | |
| <script> | |
| try { | |
| CSS.registerProperty({ | |
| name: "--two", | |
| value: "<integer>", | |
| inherits: true, | |
| initial: -1 | |
| }); | |
| }catch(e){} | |
| testIntLength(4); | |
| testIntLength(6); | |
| testIntLength(8); | |
| testIntLength(12); | |
| // JS starts serializing with scinot at 22 digits... | |
| testIntLength(25); | |
| function testIntLength(len) { | |
| let el = document.body; | |
| const val = "1".repeat(len); | |
| test(()=>{ | |
| el.removeAttribute("style"); | |
| const nullVal = getComputedStyle(el).zIndex; | |
| el.style.zIndex=val; | |
| assert_not_equals(getComputedStyle(el).zIndex, nullVal) | |
| }, `z-index can take a ${len}-digit integer`); | |
| test(()=>{ | |
| el.removeAttribute("style"); | |
| el.style.setProperty("--one", val); | |
| assert_equals(getComputedStyle(el).getPropertyValue("--one"), val); | |
| }, `An unregistered custom prop can take a ${len}-digit integer`); | |
| test(()=>{ | |
| el.removeAttribute("style"); | |
| el.style.setProperty("--two", val); | |
| assert_equals(getComputedStyle(el).getPropertyValue("--two"), val); | |
| }, `An <integer> custom prop can take a ${len}-digit integer`); | |
| test(()=>{ | |
| el.removeAttribute("style"); | |
| el.style.zIndex = val; | |
| const standardVal = getComputedStyle(el).zIndex; | |
| el.removeAttribute("style"); | |
| el.style.setProperty("--three", val); | |
| el.style.zIndex = "var(--three)"; | |
| assert_equals(getComputedStyle(el).zIndex, standardVal); | |
| }, `z-index can take a custom property set to a ${len}-digit integer`); | |
| } | |
| </script> |