Closed
Description
Bug description
Source CSS
progress {
--_track: hsl(228 100% 90%);
--_track-size: min(10px, 1ex);
--_progress: hsl(228 100% 50%);
--_radius: 1e3px;
--_indeterminate-track: linear-gradient(to right,
var(--_track) 45%,
var(--_progress) 0%,
var(--_progress) 55%,
var(--_track) 0%
);
--_indeterminate-track-size: 225% 100%;
--_indeterminate-track-animation: progress-loading 2s infinite ease;
/* reset */
appearance: none;
border: none;
/* custom style */
position: relative;
height: var(--_track-size);
border-radius: var(--_radius);
overflow: hidden;
@media (prefers-color-scheme: dark) {
--_track: hsl(228 20% 30%);
--_progress: hsl(228 100% 75%);
}
&:focus-visible {
outline-color: var(--_progress);
}
/* Safari/Chromium */
&[value]::-webkit-progress-bar {
background-color: var(--_track);
}
&[value]::-webkit-progress-value {
background-color: var(--_progress);
transition: inline-size .25s ease-out;
}
/* Firefox */
&[value]::-moz-progress-bar {
background-color: var(--_progress);
}
/* indeterminate */
&:indeterminate::after {
content: "";
inset: 0;
position: absolute;
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
/* indeterminate Safari */
&:indeterminate::-webkit-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
/* indeterminate Firefox */
&:indeterminate::-moz-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
/* complete */
&:not([max])[value="1"]::before,
&[max="100"][value="100"]::before {
content: "✓";
position: absolute;
inset-block: 0;
inset-inline: auto 0;
display: flex;
align-items: center;
padding-inline-end: max(calc(var(--_track-size) / 4), 3px);
color: white;
font-size: calc(var(--_track-size) / 1.25);
}
}
Expected CSS
progress {
--_track: hsl(228 100% 90%);
--_track-size: min(10px, 1ex);
--_progress: hsl(228 100% 50%);
--_radius: 1e3px;
--_indeterminate-track: linear-gradient(to right,
var(--_track) 45%,
var(--_progress) 0%,
var(--_progress) 55%,
var(--_track) 0%
);
--_indeterminate-track-size: 225% 100%;
--_indeterminate-track-animation: progress-loading 2s infinite ease;
/* reset */
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
/* custom style */
position: relative;
height: var(--_track-size);
border-radius: var(--_radius);
overflow: hidden
}
@media (prefers-color-scheme: dark) {
progress {
--_track: hsl(228 20% 30%);
--_progress: hsl(228 100% 75%)
}}
progress:focus-visible {
outline-color: var(--_progress);
}
/* Safari/Chromium */
progress[value]::-webkit-progress-bar {
background-color: var(--_track);
}
progress[value]::-webkit-progress-value {
background-color: var(--_progress);
-webkit-transition: inline-size .25s ease-out;
transition: inline-size .25s ease-out;
}
progress {
/* Firefox */
}progress[value]::-moz-progress-bar {
background-color: var(--_progress);
}progress {
/* indeterminate */
}progress:indeterminate::after {
content: "";
inset: 0;
position: absolute;
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
-webkit-animation: var(--_indeterminate-track-animation);
animation: var(--_indeterminate-track-animation);
}
/* indeterminate Safari */
progress:indeterminate::-webkit-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
-webkit-animation: var(--_indeterminate-track-animation);
animation: var(--_indeterminate-track-animation);
}
/* indeterminate Firefox */
progress:indeterminate::-moz-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}
/* complete */
progress[value="1"]:not([max])::before,
progress[max="100"][value="100"]::before {
content: "✓";
position: absolute;
inset-block: 0;
inset-inline: auto 0;
display: flex;
align-items: center;
-webkit-padding-end: max(calc(var(--_track-size) / 4), 3px);
padding-inline-end: max(calc(var(--_track-size) / 4), 3px);
color: white;
font-size: calc(var(--_track-size) / 1.25);
}@-webkit-keyframes progress-loading {
50% {
background-position: left;
}
}@keyframes progress-loading {
50% {
background-position: left;
}
}
Actual CSS
progress {
--_track: hsl(228 100% 90%);
--_track-size: min(10px, 1ex);
--_progress: hsl(228 100% 50%);
--_radius: 1e3px;
--_indeterminate-track: linear-gradient(to right,
var(--_track) 45%,
var(--_progress) 0%,
var(--_progress) 55%,
var(--_track) 0%
);
--_indeterminate-track-size: 225% 100%;
--_indeterminate-track-animation: progress-loading 2s infinite ease;
/* reset */
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
/* custom style */
position: relative;
height: var(--_track-size);
border-radius: var(--_radius);
overflow: hidden
}@media (prefers-color-scheme: dark) {progress {
--_track: hsl(228 20% 30%);
--_progress: hsl(228 100% 75%)
}
}progress:focus-visible {
outline-color: var(--_progress);
}progress {
/* Safari/Chromium */
}progress[value]::-webkit-progress-bar {
background-color: var(--_track);
}progress[value]::-webkit-progress-value {
background-color: var(--_progress);
-webkit-transition: inline-size .25s ease-out;
transition: inline-size .25s ease-out;
}progress {
/* Firefox */
}progress[value]::-moz-progress-bar {
background-color: var(--_progress);
}progress {
/* indeterminate */
}progress:indeterminate::after {
content: "";
inset: 0;
position: absolute;
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
-webkit-animation: var(--_indeterminate-track-animation);
animation: var(--_indeterminate-track-animation);
}progress {
/* indeterminate Safari */
}progress:indeterminate::-webkit-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
-webkit-animation: var(--_indeterminate-track-animation);
animation: var(--_indeterminate-track-animation);
}progress {
/* indeterminate Firefox */
}progress:indeterminate::-moz-progress-bar {
background: var(--_indeterminate-track);
background-size: var(--_indeterminate-track-size);
background-position: right;
animation: var(--_indeterminate-track-animation);
}progress {
/* complete */
}progress[value="1"]:not([max])::before,
progress[max="100"][value="100"]::before {
content: "✓";
position: absolute;
inset-block: 0;
inset-inline: auto 0;
display: flex;
align-items: center;
-webkit-padding-end: max(calc(var(--_track-size) / 4), 3px);
padding-inline-end: max(calc(var(--_track-size) / 4), 3px);
color: white;
font-size: calc(var(--_track-size) / 1.25);
}@-webkit-keyframes progress-loading {
50% {
background-position: left;
}
}@keyframes progress-loading {
50% {
background-position: left;
}
}.button-group {
display: flex;
flex-flow: row wrap;
gap: var(--size-3);
}label {
display: flex;
align-items: baseline;
gap: 1ch;
}main {
display: grid;
gap: var(--size-3);
padding: var(--size-3);
max-inline-size: 80vw;
}body {
display: grid;
align-content: center;
justify-content: center;
place-content: center;
}
Does it happen with npx @csstools/csstools-cli <plugin-name> minimal-example.css
?
No response
Debug output
No response
Extra config
No response
What plugin are you experiencing this issue on?
PostCSS Nesting
Plugin version
7.4.2
What OS are you experiencing this on?
No response
Node Version
17.1.0
Validations
- Follow our Code of Conduct
- Check that there isn't already an issue that request the same feature to avoid creating a duplicate.
Would you like to open a PR for this bug?
- I'm willing to open a PR