【发布时间】:2019-07-20 11:05:00
【问题描述】:
我正在使用 HTML 和 CSS 来显示基于百分比的星级。我正在尝试使该百分比与填充的星星百分比相匹配。
我已经关闭了,但是当我添加 'letter-spacing' 和 'padding-left' CSS 以使其在我的网页上看起来更好时,填充区域的百分比会发生变化。
这是我的 HTML 和 CSS:
.score {
margin-bottom: 5px;
display: inline-block;
font-size: 40px;
color: #ccc;
position: relative;
text-shadow: 0px 0px 4px #FFF;
}
.score::before,
.score span::before {
content: "✰✰✰✰✰";
display: block;
}
.score span {
color: #E6DB74;
position: absolute;
top: 0;
left: 0;
overflow: hidden;
}
.scorePadded {
margin-bottom: 5px;
display: inline-block;
font-size: 40px;
color: #ccc;
position: relative;
text-shadow: 0px 0px 4px #FFF;
letter-spacing: 20px;
padding-left: 5px;
}
.scorePadded::before,
.scorePadded span::before {
content: "✰✰✰✰✰";
display: block;
}
.scorePadded span {
color: #E6DB74;
position: absolute;
top: 0;
left: 0;
overflow: hidden;
padding-left: 5px;
}
body {
background: black;
}
<div>
<span class="score"><span style="width: 68.0%"></span></span>
</div>
<div>
<span class="scorePadded"><span style="width: 68.0%"></span></span>
</div>
我想让底部星星(有间距)填充到与顶部星星相同的百分比(我认为正确显示 68% 填充),但间距不允许这样做。
【问题讨论】:
-
除了百分比之外,您还需要一些更复杂的逻辑。第一个示例中的星星加起来是完美的 100%,所以 68% 表示“68% 的星星被填充”。每颗星代表总宽度的 20%。在您的间隔示例中,每颗星大约代表总宽度的 12%。
-
百分比从何而来?如果它来自 JavaScript,您可以实现一个更复杂的公式来确定填充的星星。但是,如果您只是手动输入值,则需要进行一些手动数学运算。
-
我正在使用 jekyll,我在收视率。所以,我的评分可能是 5 星中的 3.8 星。所以我的逻辑在 jekyll 中看起来像这样: 跨度>