На данный вопрос уже ответили:
У меня есть коэффициент rating
, требуется отрисовать звёздочки (изображения заданы в виде svg), которые визуализируют этот коэффициент:
svg:
<svg xmlns="http://www.w3.org/2000/svg" width="260" height="245">
<path d="m55,237 74-228 74,228L9,96h240"/>
</svg>
Я реализовал это в лоб с помощью 5 блоков div
и 3 svg задних фонов (пустой, половинчатый, полный)
<div class = 'rating'>
<div class = 'on'></div>
<div class = 'on'></div>
<div class = 'half'></div>
<div class = 'off'></div>
<div class = 'off'></div>
</div>
Html код естественно генерировался через javascript в зависимости от значения rating
Но мне очень не нравится эта "влобность", некрасивое и неоптимальное решение (да и выглядит жутко).
Подскажите, как это можно сделать с помощью одного только svg (ну и небольшой доли javascript)?
Как я понимаю,
rating / 5
P.S.
А если таких картинок понадобится 1000, браузер не просядет (картинки маленькие, это тут показаны большие для удобства)?
P.P.S.
Или не извращаться и реализовать всё это через 2 div с обычным png фоном из 5 звездочек (золотых и серых), просто ширина "золотого" блока будет задаваться?
P.P.P.S.
Вообще что наука :) говорит по поводу использования на сайтах svg в виде разных картинок и иконок (особенно, когда таких картинок/иконок много на сайте)
Можно немного схитрить использовать 2 блока с звездочками
.rate {
font-size: 40px;
position: relative;
display: flex;
background: red;
}
.rate .blank {
color: #aaa;
position: absolute;
}
.rate .rated {
color: #ffdd00;
position: absolute;
width: 80px;
overflow: hidden;
}
<div class="rate">
<div class="blank">☆☆☆☆☆</div>
<div class="rated">★★★★★</div>
</div>
Или псевдоэлементы
@charset "UTF-8";
.rate {
font-size: 40px;
display: flex;
}
.rate .stars {
color: #aaa;
position: relative;
}
.rate .stars::before {
content: "★★★★★";
position: absolute;
width: 53%;
overflow: hidden;
color: #FFDD00;
}
<div class="rate">
<div class="stars">☆☆☆☆☆</div>
</div>
Виртуальный выделенный сервер (VDS) становится отличным выбором
У меня есть файл CSV, который внешне похож на excel таблицуИ там есть данные в два столбца и 500 строк
Есть класс в котором нужно инициализировать переменные, что естьДоступ к этим переменным идет через json файл, но в таком случае выдает undefined,...