css - 仅使用 CSS 动画速度计指针
问题描述
我正在尝试为速度计设置动画 - 从左(绿色)到右(红色)。动画运行后,我是否还尝试在气压计的末端/红色区域制作针环。如何仅使用 CSS 来实现这一点?
#speedometer {
display: inline-block;
position: relative;
}
#speedometer .barometer {
background-image: url("https://svgshare.com/i/GAZ.svg");
background-repeat: no-repeat;
width: 200px;
height: 200px;
display: inline-block;
}
#speedometer .needle {
background-image: url("https://svgshare.com/i/GBP.svg");
background-repeat: no-repeat;
z-index: 999999;
width: 200px;
height: 250px;
display: inline-block;
left: 0px;
position: absolute;
top: 0px;
}
<div id="speedometer">
<span class="barometer"></span>
<span class="needle"></span>
</div>
解决方案
您可以先调整针元素的尺寸,transform-origin
然后简单地使用旋转:
#speedometer {
display: inline-block;
position: relative;
}
#speedometer .barometer {
background-image: url("https://svgshare.com/i/GAZ.svg");
background-repeat: no-repeat;
width: 200px;
height: 110px;
display: inline-block;
}
#speedometer .needle {
background-image: url("https://svgshare.com/i/GBP.svg");
background-repeat: no-repeat;
z-index: 999999;
width: 200px;
height: 110px;
display: inline-block;
left: 0px;
position: absolute;
bottom: 5px;
animation:
change 3s linear,
loop 1s linear 3s infinite alternate;
transform-origin:50% calc(100% - 8px) ;
}
@keyframes change {
0% {
transform:rotate(-90deg);
}
50% {
transform:rotate(0deg);
}
100% {
transform:rotate(90deg);
}
}
@keyframes loop {
0% {
transform:rotate(90deg);
}
100% {
transform:rotate(70deg);
}
}
<div id="speedometer">
<span class="barometer"></span>
<span class="needle"></span>
</div>
推荐阅读
- java - pos打印机CUP服务器Ubuntu 16的打印问题
- angular - 类型“void”上不存在属性订阅
- typescript - 如何在 Typescript observable 中提供默认值功能
- git - 可以 git rebase 到一个文本文件,编辑它然后从编辑的文件中应用?
- php - 在 laravel 中显示数据库中的单个记录
- python - 字典计算关键词在文章中出现的次数
- python - 将 Pyhon 2 转换为 Python 3 时的编码问题(使用 lmdb)
- python - 从 django 的角度来看,“应用程序”是如何工作的?
- smbj - SMBJ:将包含文件的目录复制到我的本地计算机的 SMBJ api 是什么
- regex - 使用正则表达式,我需要匹配除特定日期格式之外的所有内容