Status: PASS | Duration: 5ms | Subtests: 1/1 | Open test on wpt.live | Open ref on wpt.live | wpt.fyi
/css/css-color/color-mix-basic-001.html
<!doctype html> <link rel="help" href="https://drafts.csswg.org/css-color-5/#color-mix"> <link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1695376"> <link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> <link rel="author" href="https://mozilla.org" title="Mozilla"> <link rel="match" href="color-mix-basic-001-ref.html"> <meta name="fuzzy" content="maxDifference=0-1; totalPixels=0-25088"> <style> div { color: black; } .test { background-color: red; width: 14em; height: 1em; margin-top: 0; margin-bottom: 0; } </style> <body> <script> const TEST_CASES = [ ["blue", "red"], ["blue", "green"], ["rgb(255, 0, 0, .2)", "red"], ["blue", "red", 0.9], ["blue", "red", 0], ["currentColor", "white"], ["currentColor", "rgba(0, 0, 0, .5)"], ]; for (let [from, to, animationProgress] of TEST_CASES) { const animationProgressExplicit = animationProgress !== undefined; animationProgress = animationProgressExplicit ? animationProgress : 0.5; let progress = ` ${animationProgress * 100}%`; let oneMinusProgress = ` ${(1 - animationProgress) * 100}%`; let values = [ `color-mix(in srgb, ${from}, ${to} ${progress})`, `color-mix(in srgb, ${from} ${oneMinusProgress}, ${to})`, `color-mix(in srgb, ${from} ${oneMinusProgress}, ${to} ${progress})`, ]; if (animationProgress == 0.5) { values.push(`color-mix(in srgb, ${from}, ${to})`); } for (let value of values) { const element = document.createElement("div") element.classList.add('test') element.style.backgroundColor = value; document.body.appendChild(element) } } </script> </body>
/css/css-color/color-mix-basic-001-ref.html
<!doctype html> <link rel="author" href="mailto:emilio@crisal.io" title="Emilio Cobos Álvarez"> <link rel="author" href="https://mozilla.org" title="Mozilla"> <style> .ref { width: 14em; height: 1em; margin-top: 0; margin-bottom: 0;} </style> <body> <div id="ref"></div> <script> const TEST_CASES = [ ["blue", "red"], ["blue", "green"], ["rgb(255, 0, 0, .2)", "red"], ["blue", "red", 0.9], ["blue", "red", 0], ["currentColor", "white"], ["currentColor", "rgba(0, 0, 0, .5)"], ]; const refElement = document.getElementById("ref"); const refStyle = getComputedStyle(refElement); let animation = null; for (let [from, to, animationProgress] of TEST_CASES) { const animationProgressExplicit = animationProgress !== undefined; animationProgress = animationProgressExplicit ? animationProgress : 0.5; // Set up the ref. if (animation) { animation.cancel(); } animation = refElement.animate({ backgroundColor: [from, to], }, { duration: 1000 }); animation.pause(); animation.currentTime = 1000 * animationProgress; let results = animationProgress == 0.5 ? 4 : 3; for (let i = 0; i < results; ++i) { let element = document.createElement("div") element.classList.add('ref') element.style.backgroundColor = refStyle.backgroundColor; document.body.appendChild(element) } } refElement.remove() </script> </body>