<div className="roundAnim"> {/* 刻度 */} <div className="scale"></div> <div className="s"></div> <div className="m"></div> <div className="h"></div> <div className="point"></div> </div>
@property --angle { syntax: '<angle>'; inherits: false; initial-value: 0deg; } .roundAnim { position: relative; width: 200px; height: 200px; border: 4px solid #000; border-radius: 50%; } .roundAnim .s, .roundAnim .m, .roundAnim .h, .roundAnim .point { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .roundAnim .s { transform: rotate(var(--angle)); animation: propertyRotate 60s infinite steps(60); } .roundAnim .m { transform: rotate(var(--angle)); animation: propertyRotate 3600s infinite steps(360); } .roundAnim .h { transform: rotate(var(--angle)); animation: propertyRotate 86400s infinite steps(86400); } .roundAnim .point::before { content: ' '; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 10px; height: 10px; background-color: #000; border-radius: 50%; } .roundAnim .s::before { content: ' '; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 2px; height: 160px; background: linear-gradient( 180deg, #000 0%, #000 50%, transparent 50%, transparent 100% ); border-radius: 2px; } .roundAnim .m::before { content: ' '; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 3px; height: 120px; background: linear-gradient( 180deg, #000 0%, #000 50%, transparent 50%, transparent 100% ); border-radius: 2px; } .roundAnim .h::before { content: ' '; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 5px; height: 100px; background: linear-gradient( 180deg, #000 0%, #000 50%, transparent 50%, transparent 100% ); border-radius: 2px; } .scale { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; background: repeating-conic-gradient( from -0.5deg, #333 0 1deg, transparent 0deg 30deg ), repeating-conic-gradient(from -0.5deg, #ccc 0 1deg, transparent 0deg 6deg); border-radius: 50%; -webkit-mask: radial-gradient(transparent 88px, red 0); } @keyframes propertyRotate { 100% { --angle: 360deg; } }
效果:
