gtk/testsuite/css/style/variables.css
2024-05-10 18:29:48 +04:00

143 lines
3.5 KiB
CSS

:root {
--color1: red;
/* A dependency cycle */
--test1: var(--test2);
--test2: var(--test1);
}
.label-1 {
color: var(--color1);
/* Fallback is unused when the variable resolves */
background-color: var(--color1, green);
/* Nested fallbacks */
box-shadow: inset 0 0 3px var(--color2, var(--color3, green));
}
.label-2 {
/* Overriding variables */
--color1: yellow;
color: var(--color1);
/* Nonexistent variable, so the fallback is used */
background-color: var(--color2, green);
/* Variables are case-sensitive */
box-shadow: inset 0 0 3px var(--Color1, green);
}
.label-3 {
/* Unsetting variables */
--color1: initial;
color: var(--color1, green);
/* Shorthand properties */
--border1: 3px;
--border2: solid red;
border: var(--border1, 4px) var(--border2);
}
.label-4 {
/* --test1 is a part of a dependency cycle */
/* See https://www.w3.org/TR/css-variables-1/#cycles */
color: var(--test1, green);
/* A dependency cycle with a fallback, the variable is invalid anyway */
--test3: var(--test3, green);
background-color: var(--test3, purple);
}
.label-5 {
/* Not a dependency cycle since we've overridden --test1. --test2 is still bad */
--test1: red;
color: var(--test1, green);
background-color: var(--test2, green);
--prop1: lol;
--prop2: var(--prop1) var(--prop1);
--prop3: var(--prop2) var(--prop2);
--prop4: var(--prop3) var(--prop3);
--prop5: var(--prop4) var(--prop4);
--prop6: var(--prop5) var(--prop5);
--prop7: var(--prop6) var(--prop6);
--prop8: var(--prop7) var(--prop7);
--prop9: var(--prop8) var(--prop8);
--prop10: var(--prop9) var(--prop9);
--prop11: var(--prop10) var(--prop10);
--prop12: var(--prop11) var(--prop11);
--prop13: var(--prop12) var(--prop12);
--prop14: var(--prop13) var(--prop13);
--prop15: var(--prop14) var(--prop14);
--prop16: var(--prop15) var(--prop15);
--prop17: var(--prop16) var(--prop16);
--prop18: var(--prop17) var(--prop17);
--prop19: var(--prop18) var(--prop18);
--prop20: var(--prop19) var(--prop19);
/* Fallback is used since --prop20 is too long */
/* See https://www.w3.org/TR/css-variables-1/#long-variables */
box-shadow: inset 0 0 3px var(--prop20, green);
}
.label-6 {
all: unset;
/* Should still be red, since variables are not unset by that */
color: var(--color1, green);
}
.label-7 {
/* Empty fallback */
color: var(--color2,) var(--color1);
background-color: red;
}
@keyframes test {
from {
--test1: red;
--test2: blue;
--duration: 2s;
--padding-right: 10px;
padding-left: var(--padding1, 10px);
padding-right: var(--padding-right);
}
to {
--test1: blue;
--test3: red;
--duration: 3s;
padding-left: var(--padding2, 20px);
}
}
.label-8 {
/* FIXME: this is only there because properties that are only in keyframes */
/* won't get printed otherwise */
padding-left: 0;
padding-right: 0;
--padding1: 1px;
--padding2: 2px;
/* We're testing the initial state */
animation: test 10s infinite linear;
/* This gets overridden by the animation */
--test1: pink;
color: var(--test1, yellow);
/* Only defined in the initial state, still fine */
background-color: var(--test2, yellow);
/* Variables only defined later in the animation -> invalid */
box-shadow: inset 0 0 3px var(--test3, yellow);
/* --duration is animation-tainted and so is --duration2, this should be 5s */
--duration2: var(--duration, 4s);
transition-duration: var(--duration2, 5s);
}