body { margin:0; height:100vh; display:flex; align-items:center; justify-content:center; background-color:deepskyblue; background-image:linear-gradient(to top,skyblue,deepskyblue); } .clock { width:10em; height:10em; font-size:32px; border-radius:50%; border:.3em solid rgba(0,0,0,.5); box-shadow:0 0 1em .3em rgba(255,255,255,.5),0 0 1em .3em rgba(9,9,9,.6) inset; display:flex; align-items:center; justify-content:center; position:relative; } .clock::before { content:""; position:absolute; z-index:-1; top:4.85em; left:0; width:1em; height:.3em; border-radius:.2em; background-color:slategray; box-shadow:9em 0 0 0 slategray; } .clock::after { content:""; position:absolute; z-index:-1; top:0; left:4.85em; width:.3em; height:1em; border-radius:.2em; background-color:slategray; box-shadow:0 9em 0 0 slategray; } #hours { width:.45em; height:3.5em; position:absolute; top:2em; background:#fff; border-radius:.2em; transform-origin:.225em 3em; transform:rotate(0deg); } #hours::after { content:''; position:absolute; top:2.6em; left:-.225em; width:.9em; height:.9em; border-radius:50%; background-image:radial-gradient( black 30%,white); } #minutes { width:.25em; height:4.5em; position:absolute; top:1.25em; background:#000; border-radius:.2em; transform-origin:.125em 3.75em; transform:rotate(0deg); } #seconds { width:.1em; height:6em; position:absolute; z-index:2; top:0.25em; background:red; border-radius:.2em; transform-origin:.05em 4.75em; transform:rotate(0deg); } #seconds::after { content:''; position:absolute; top:4.6em; left:-.1em; width:.3em; height:.3em; border-radius:50%; background-color:red; }
transform:rotate属性控制表针,伪类加box-shadow简单地表现刻度。