html - 如何创建具有线性渐变的动画圆形进度条?
问题描述
我想只使用 CSS 创建这样的东西。
更具体地说,我需要一个带有 x% 黄色背景和圆边的 div。这个黄色部分可以在开头、结尾或中间的任何位置,如上图。div 的其余部分应为黑色。
我知道我可以通过在另一个 div 中放置一个 div 并设置内部 div 的长度、位置和背景颜色来做到这一点。但我想知道是否可以通过设置其背景颜色或背景图像或其他东西来仅使用一个 div 来完成。使用线性渐变,除了黄色部分的圆形边缘外,我能够实现我想要的所有效果。这是CSS:
/* this will make the background-color 40% black, 20% yellow, 40% black */
div{
background-image: linear-gradient(
90deg,
black 40%,
yellow 20%,
yellow 60,
black 60%
);
background-size: 100% 100%;
background-repeat: no-repeat;
}
这是代码片段:
#mydiv{
width: 400px;
height: 50px;
background-image: linear-gradient(
90deg,
rgb(20, 20, 20) 40%,
rgb(255, 174, 0) 20%,
rgb(255, 174, 0) 60%,
rgb(20, 20, 20) 60%
);
background-size: 100% 100%;
background-repeat: no-repeat;
border-radius: 25px;
}
<div id="mydiv"></div>
是否可以仅使用一个 div 和 CSS 来实现这一目标?
我需要能够控制黄色部分的长度和位置,以便我可以在 CSS 动画中更改它的位置和长度。
动画将如下所示:
#outer{
width: 400px;
height: 20px;
border-radius: 10px;
position: relative;
overflow: hidden;
background-color: rgb(20, 20, 20);
}
#inner{
width: 20%;
height: 100%;
border-radius: 10px;
position: absolute;
left: -20%;
background-color: rgb(255, 174, 0);
animation: loading 2s infinite;
}
@keyframes loading{
0%{
left: -20%;
}
100%{
left: 100%;
}
}
<div id="outer">
<div id="inner"></div>
</div>
解决方案
要做到这一点,需要将yellow
栏作为一个独立的选择器。
并且使用css
,您可以在标签:before
内使用选择器#mydiv
并将黄色条放置如下。
#mydiv {
width: 400px;
height: 50px;
background-color: black;
border-radius: 25px;
position: relative;
}
#mydiv:before {
content: " ";
position: absolute;
top: 0;
left: 20%;
width: 40%;
height: 100%;
border-radius: 25px;
background-color: yellow;
}
<div id="mydiv"></div>
推荐阅读
- go - gorilla/mux 中的 Context.WithTimeout() 和 os.exit
- ruby-on-rails-4 - 将 rails 4 升级到 rails 6 - 直接还是逐步升级?
- python - 如何在 shell 脚本中转发命令行参数?
- symfony - Symfony - 多对一关系中的循环引用错误
- c# - CREATE UNIQUE INDEX 语句因发现重复键而终止 EF
- python - 评估没有运算顺序的数学问题(Python)
- jsp - WEB-INF 中的 JSP 文件出现错误 404,但没有任何消息
- regex - linux grep -oP 如何仅打印模式
- pandas - 与grouby一起旋转?
- r - 通过在 R 中抽 5 张牌来模拟获得四种同类(具有相同符号的四张牌:7、8、9、10、J、Q、K 或 A)的概率