css - 隐藏背景溢出
问题描述
是否可以仅使用 CSS 或 JavaScript 来实现?
进度条的宽度是动态计算的。
.average-rating * {
box-sizing: border-box;
}
.average-rating {
position: relative;
width: 200px;
height: 40px;
}
.average-rating .progress {
position: absolute;
height: 100%;
background-color: #66ff66;
z-index: -1;
}
.average-rating .balls {
display: flex;
width: 100%;
height: 100%;
}
.average-rating .balls div {
flex: 1;
height: 100%;
border-radius: 50%;
border: 3px solid #006600;
}
<div class="average-rating">
<div class="progress" style="width: 50%;"></div>
<div class="balls">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
这是我正在处理的代码的基础。我不知道 HTML 结构是否组织良好以实现这一点,也不知道是否有一种简单的方法可以在 CSS 或 JS 中实现这一点。
解决方案
将 amask
与重复一起使用radial-gradient
:
.average-rating * {
box-sizing: border-box;
}
.average-rating {
position: relative;
width: 200px;
height: 40px;
-webkit-mask: 0 0 / 40px 40px radial-gradient(circle, #f00 0 20px, #f000 21px) repeat-x;
mask: 0 0 / 40px 40px radial-gradient(circle, #f00 0 20px, #f000 21px) repeat-x;
}
.average-rating .progress {
position: absolute;
height: 100%;
background-color: #66ff66;
z-index: -1;
}
.average-rating .balls {
display: flex;
width: 100%;
height: 100%;
}
.average-rating .balls div {
flex: 1;
height: 100%;
border-radius: 50%;
border: 3px solid #006600;
}
<div class="average-rating">
<div class="progress" style="width: 50%;"></div>
<div class="balls">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
推荐阅读
- html - 我可以将整个 HTML 文档放在模板中吗?
- php - 带有 PHP 参数的 Python 脚本
- scala - Scala:从 Elasticsearch 获取超过 10000 个文档/消息
- reporting-services - 来自先前数据集的 SSRS 临时表停止工作
- python - 使用 list.count 使用 .sort() 对列表进行就地排序不起作用。为什么?
- javascript - 获取响应 blob 作为边缘中的对象 HTML 元素数据
- multiprocessing - 为什么不同核数的多处理代码的运行时间相同?
- java - 在模块 classes.jar 中发现重复的类
- android - 没有firebase可以使用GCP吗?
- reactjs - IIS 8.5 rewrite rule subdirectory and ReactJs