Иконки всё таки лучше делать псевдоэлементами. Нечего пустым дивам делать в разметке.
.elem {
--width: 50px;
bg: linear-gradient(to right, transparent var(--width), white var(--width));
&::before {
width: var(--width);
}
}
content: url(path/to/your.svg); А как вы вставлять будете иконку через псевдоэлемент? Так:
content: url(path/to/your.svg);
:root {
--icon-name: url("data:image/svg+xml,%3Csvg width='980' height='980' viewBox='0 0 980 980' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='490' cy='490' r='490' fill='black'/%3E%3C/svg%3E%0A");
}
.block {
&::before {
// разное нужное
mask: var(--icon-name) no-repeat center;
bg: red;
}
}:root {
--icon-name: url("data:image/svg+xml,%3Csvg width='980' height='980' viewBox='0 0 980 980' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='490' cy='490' r='490' fill='black'/%3E%3C/svg%3E%0A");
--icon-name2: url("data:image/svg+xml,%3Csvg width='200' height='100' viewBox='0 0 200 100' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0H200V100H0V0Z' fill='%23FF6392'/%3E%3C/svg%3E%0A");;
}
.block {
&::before {
// разное нужное
mask: var(--icon) no-repeat center;
bg: red;
}
}
.block--mod1 {
--icon: var(--icon-name);
}
.block--mod2 {
--icon: var(--icon-name2);
}