Это работает, но не так, как вы думаете. Это не значение, которое отправляется через переменную, а скорее как триггер, чтобы затем присвоить значение. И из-за этого лучше сделать атрибуты данных чем-то уникальным, но простым.
Небольшой пример может помочь:
<div class="data"><span data-width="80" data-tint="lime"></span></div>
Тогда в вашем CSS вы должны поставить:
.data {height: 50px; width: 100%; background-color: #eee;}
.data > span {display: block; height: 100%;}
.data > span[data-width="80"] {width: 80%;}
.data > span[data-tint="lime"] {background-color: rgba(118, 255, 3, 0.6);}
Бессмысленно, если вы делаете это в небольшом масштабе, но в большем масштабе и с некоторой помощью SCSS, некоторые вещи становятся проще, например ..
@for $i from 1 through 100 {
&[data-width="#{$i}"] {
.data > span {
width: calc(#{$i} * 1%);
}
}
}
Это скомпилирует в CSS каждую процентную возможность, позволяя вам установить ширину диапазона с data-width.
Проверьте скрипку