Мне нужно покрасить индикатор выполнения с разными цветами, исходя из их значения. У меня есть этот тестовый фрагмент
<div>
pbar tests
<br>
<progress class="pbar-0" max="100" value="0"></progress>
<br>
<progress class="pbar-10" max="100" value="10"></progress>
<br>
<progress class="pbar-30" max="100" value="30"></progress>
<br>
<progress class="pbar-60" max="100" value="60"></progress>
<br>
<progress class="pbar-90" max="100" value="90"></progress>
<br>
<progress class="pbar-100" max="100" value="100"></progress>
</div>
и следующий css
*/*begin progress bar*/
progress, /* All HTML5 progress enabled browsers */
progress[role] /* polyfill */
{
/* Turns off styling - not usually needed, but good to know. */
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
/* gets rid of default border in Firefox and Opera. */
border: none;
/* Needs to be in here for Safari polyfill so background images work as expected. */
background-size: auto;
/* Dimensions */
width: 150px;
height: 15px;
border-radius: 3px;
}
/* Polyfill */
progress[role]:after {
background-image: none; /* removes default background from polyfill */
}
/* Ensure fallback text doesn't appear in polyfill */
progress[role] strong {
display: none;
}
progress, /* Firefox */
progress[role][aria-valuenow] { /* Polyfill */
background: #f2f1f1 !important; /* !important is needed by the polyfill */
}
/* Chrome */
progress::-webkit-progress-bar {
background: #f2f1f1;
}
/* IE10 */
progress {
color: black;
}
/* Firefox */
progress::-moz-progress-bar {
background: black;
}
/* Chrome */
progress::-webkit-progress-value {
background: black;
}
/* Polyfill */
progress[aria-valuenow]:before {
background: black;
}
.pbar-0,.pbar-10,.pbar-30::-moz-progress-bar {
background: red;
}
.pbar-60::-moz-progress-bar {
background: yellow;
}
/*end progress bar*/*
Я не могу сопоставить классы mulple с селектором ::-moz-progress-bar
:
.pbar-0,.pbar-10,.pbar-30::-moz-progress-bar {
background: red;
}
Только pbar-30 окрашен в красный цвет. Что я здесь делаю неправильно?
Можно ли написать несколько селекторов, подобных этому, или мне нужно написать их по одному?
Вам нужно будет повторить псевдоэлемент через каждый из ваших селекторов классов.
Обратите внимание, что в этом случае вы можете сгруппировать все три селектора в одно правило, так как это тот же псевдоэлемент, специфичный для поставщика:
.pbar-0::-moz-progress-bar, .pbar-10::-moz-progress-bar, .pbar-30::-moz-progress-bar {
background: red;
}
Вам нужно всего лишь разделить селекторную группу на отдельные правила, когда у каждого из селекторов есть другой префикс поставщика, как вы это сделали с несколькими другими вашими правилами (например, progress::-moz-progress-bar
и progress::-webkit-progress-value
).