如何用CSS实现带小圆头的霓虹蓝扇区雨刮器扫动动画?
实现霓虹蓝WiFi式雨刮器动画
嘿,我帮你搞定这个动画效果!用SVG配合CSS动画就能完美实现你要的雨刮器+WiFi信号样式,下面是完整代码,我会一步步给你解释细节:
<!DOCTYPE html> <html> <head> <style> body { background-color: #000000; margin: auto; display: flex; justify-content: center; align-items: center; min-height: 100vh; } /* SVG容器,确保动画居中 */ .wiper-container { width: 120px; height: 120px; position: relative; } /* 扇区轮廓(仅显示弧部分) */ .wiper-arc { fill: none; stroke: #00f0ff; /* 明亮霓虹蓝 */ stroke-width: 2px; stroke-dasharray: 52.36; /* 弧长:2*π*50*(60/360) ≈52.36 */ stroke-dashoffset: 52.36; animation: drawEraseArc 3s ease-in-out infinite; transform-origin: center center; } /* 雨刮器小圆 */ .wiper-dot { fill: #00f0ff; animation: rotateDot 3s ease-in-out infinite; transform-origin: center center; } /* 小圆旋转动画:从-30°到+30°再返回 */ @keyframes rotateDot { 0%, 100% { transform: translate(0, -50px) rotate(-30deg); } 50% { transform: translate(0, -50px) rotate(30deg); } } /* 弧的绘制/擦除动画:对应小圆的运动节奏 */ @keyframes drawEraseArc { 0%, 100% { stroke-dashoffset: 52.36; /* 完全隐藏 */ } 50% { stroke-dashoffset: 0; /* 完全显示 */ } } </style> </head> <body> <svg class="wiper-container" viewBox="0 0 120 120"> <!-- 扇区弧:半径50px,从-30°到+30°的上半圆弧 --> <path class="wiper-arc" d="M60,10 A50,50 0 0,1 85,53.30" /> <!-- 雨刮器小圆:初始在0°位置(顶部) --> <circle class="wiper-dot" cx="60" cy="10" r="10" /> </svg> </body> </html>
关键细节解释:
- 背景与布局:把body改成flex布局让动画居中,比固定margin定位更通用,适配不同屏幕尺寸。
- SVG弧的绘制:用
path的A命令绘制扇区弧,参数里的50,50是弧的半径,0 0,1表示小弧、顺时针方向,终点坐标是提前计算好的30°对应位置,确保精准匹配角度要求。 - 霓虹蓝颜色:选了
#00f0ff这个明亮的冷色调霓虹蓝,完全符合你要的视觉效果。 - 动画同步:两个动画(小圆旋转和弧的描边)时长都是3秒,用
ease-in-out让运动更顺滑,50%的关键帧对应运动中点,保证小圆的位置和弧的显示状态完全同步。 - 描边动画原理:
stroke-dasharray设为弧的总长度,stroke-dashoffset控制隐藏的长度——从总长度降到0就是绘制过程,从0升到总长度就是擦除过程,完美模拟雨刮器的“画”和“擦”效果。
你可以直接复制这段代码运行,还能调整动画时长、颜色、半径这些参数来适配你的具体需求~
内容的提问来源于stack exchange,提问作者topcat
相关产品推荐
相关产品推荐

