【发布时间】:2018-06-07 15:52:07
【问题描述】:
我想在一个方形盒子里有一个星级。框的上面〜2/3是“标题”。下面,有 5 颗星彼此相邻。它们应该跨越盒子的整个尺寸。
我已经尝试了很多,但还没有任何效果。这就是我所拥有的:
.star {
padding: 0;
width: 20%;
font-size: 1vw;
}
.checked {
color: orange;
}
<div class="mybox">
<div class="box-head">
<span class="box-name">1</span>
</div>
<div class="box-footer">
<div class="rating">
<span class="star checked">★</span>
<span class="star checked">★</span>
<span class="star">★</span>
<span class="star">★</span>
<span class="star">★</span>
</div>
</div>
</div>
我的想法是:每个星形元素应该占据其父元素宽度的 20%。字体大小应该足够大,以便星星占据其跨度大小的整个空间。
这怎么可能?我尝试的所有东西都以非常小的星星结束,它们之间有很大的空间,这甚至无法用margin 或padding 属性控制。而且,我不知道如何正确调整字体大小。
我该如何解决这个问题?
【问题讨论】:
-
我认为唯一的方法(如果 vw 不起作用)是使用 svg / img 作为星号,否则您需要 js 根据跨度的大小(css 不能这样做)
-
因此有可能有一个宽度为 20% 的 svg 图像并告诉它在其全尺寸上绘制一颗星星吗?
-
你只是把svg放在span里,让它100%宽,然后它会一直填满span?
-
好的。我会试试的。我怎样才能摆脱跨度之间的空间?在 Firefox 调试器中,我看到它们之间有一些空格。我猜,是因为换行。
-
啊大众确实有效!请参阅下面的答案。但是为了回答您的空格问题 - 内联元素(默认情况下跨度是内联的)被视为句子中的单词,如果它们之间有空格,则会添加一个空格。您可以注释掉空格、浮动元素或使用 flex 就像在答案中一样