پیشنمایش زنده
کد HTML
<div class="page-background">
<div class="clock-container">
<div class="clock-face">
<div class="marker marker-1"><div class="marker-dot"></div></div>
<div class="marker marker-2"><div class="marker-dot"></div></div>
<div class="marker marker-3"><div class="marker-dot"></div></div>
<div class="marker marker-4"><div class="marker-dot"></div></div>
<div class="marker marker-5"><div class="marker-dot"></div></div>
<div class="marker marker-6"><div class="marker-dot"></div></div>
<div class="marker marker-7"><div class="marker-dot"></div></div>
<div class="marker marker-8"><div class="marker-dot"></div></div>
<div class="marker marker-9"><div class="marker-dot"></div></div>
<div class="marker marker-10"><div class="marker-dot"></div></div>
<div class="marker marker-11"><div class="marker-dot"></div></div>
<div class="marker marker-12"><div class="marker-dot"></div></div>
<div class="number number-1"><span class="number-1-text">1</span></div>
<div class="number number-2"><span class="number-2-text">2</span></div>
<div class="number number-3"><span class="number-3-text">3</span></div>
<div class="number number-4"><span class="number-4-text">4</span></div>
<div class="number number-5"><span class="number-5-text">5</span></div>
<div class="number number-6"><span class="number-6-text">6</span></div>
<div class="number number-7"><span class="number-7-text">7</span></div>
<div class="number number-8"><span class="number-8-text">8</span></div>
<div class="number number-9"><span class="number-9-text">9</span></div>
<div class="number number-10"><span class="number-10-text">10</span></div>
<div class="number number-11"><span class="number-11-text">11</span></div>
<div class="number number-12"><span class="number-12-text">12</span></div>
<div class="hand hour-hand"></div>
<div class="hand minute-hand"></div>
<div class="hand second-hand"></div>
<div class="center-pin"></div>
</div>
</div>
</div>
کد CSS
.page-background {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
background: #e0e5ec;
font-family: "Helvetica Neue", "Arial", sans-serif;
}
.clock-container {
max-width: 333px;
max-height: 444px;
display: flex;
justify-content: center;
align-items: center;
}
.clock-face {
width: 300px;
height: 300px;
background-color: #e0e5ec;
border-radius: 50%;
box-shadow:
12px 12px 24px #a3b1c6,
-12px -12px 24px #ffffff;
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.clock-face::before {
content: "";
position: absolute;
width: 92%;
height: 92%;
background-color: transparent;
border-radius: 50%;
box-shadow:
inset 8px 8px 16px #a3b1c6,
inset -8px -8px 16px #ffffff;
}
.marker {
position: absolute;
width: 100%;
height: 100%;
z-index: 1;
}
.marker-dot {
position: absolute;
top: 15px;
left: 50%;
transform: translateX(-50%);
width: 6px;
height: 6px;
border-radius: 50%;
background-color: #e0e5ec;
box-shadow:
inset 1px 1px 2px #a3b1c6,
inset -1px -1px 2px #ffffff;
}
.marker-1 {
transform: rotate(30deg);
}
.marker-2 {
transform: rotate(60deg);
}
.marker-3 {
transform: rotate(90deg);
}
.marker-3 .marker-dot {
width: 8px;
height: 8px;
}
.marker-4 {
transform: rotate(120deg);
}
.marker-5 {
transform: rotate(150deg);
}
.marker-6 {
transform: rotate(180deg);
}
.marker-6 .marker-dot {
width: 8px;
height: 8px;
}
.marker-7 {
transform: rotate(210deg);
}
.marker-8 {
transform: rotate(240deg);
}
.marker-9 {
transform: rotate(270deg);
}
.marker-9 .marker-dot {
width: 8px;
height: 8px;
}
.marker-10 {
transform: rotate(300deg);
}
.marker-11 {
transform: rotate(330deg);
}
.marker-12 {
transform: rotate(360deg);
}
.marker-12 .marker-dot {
width: 8px;
height: 8px;
}
.number {
position: absolute;
width: 100%;
height: 100%;
text-align: center;
font-size: 24px;
font-weight: 600;
color: #b8c1d1;
text-shadow:
1px 1px 1px #ffffff,
-1px -1px 1px #a3b1c6;
z-index: 2;
}
.number-1 {
transform: rotate(30deg);
}
.number-1-text {
display: inline-block;
transform: translateY(35px) rotate(-30deg);
}
.number-2 {
transform: rotate(60deg);
}
.number-2-text {
display: inline-block;
transform: translateY(35px) rotate(-60deg);
}
.number-3 {
transform: rotate(90deg);
}
.number-3-text {
display: inline-block;
transform: translateY(35px) rotate(-90deg);
}
.number-4 {
transform: rotate(120deg);
}
.number-4-text {
display: inline-block;
transform: translateY(35px) rotate(-120deg);
}
.number-5 {
transform: rotate(150deg);
}
.number-5-text {
display: inline-block;
transform: translateY(35px) rotate(-150deg);
}
.number-6 {
transform: rotate(180deg);
}
.number-6-text {
display: inline-block;
transform: translateY(35px) rotate(-180deg);
}
.number-7 {
transform: rotate(210deg);
}
.number-7-text {
display: inline-block;
transform: translateY(35px) rotate(-210deg);
}
.number-8 {
transform: rotate(240deg);
}
.number-8-text {
display: inline-block;
transform: translateY(35px) rotate(-240deg);
}
.number-9 {
transform: rotate(270deg);
}
.number-9-text {
display: inline-block;
transform: translateY(35px) rotate(-270deg);
}
.number-10 {
transform: rotate(300deg);
}
.number-10-text {
display: inline-block;
transform: translateY(35px) rotate(-300deg);
}
.number-11 {
transform: rotate(330deg);
}
.number-11-text {
display: inline-block;
transform: translateY(35px) rotate(-330deg);
}
.number-12 {
transform: rotate(360deg);
}
.number-12-text {
display: inline-block;
transform: translateY(35px) rotate(-360deg);
}
.hand {
position: absolute;
bottom: 50%;
left: 50%;
transform-origin: bottom center;
border-radius: 10px 10px 0 0;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.15);
}
.hour-hand {
width: 8px;
height: 50px;
background: #4a5463;
transform: translateX(-50%) rotate(105.5deg);
animation: rotate-hours 43200s linear infinite;
animation-play-state: running;
z-index: 5;
}
.minute-hand {
width: 6px;
height: 80px;
background: #7a8a9e;
transform: translateX(-50%) rotate(186deg);
animation: rotate-minutes 3600s linear infinite;
animation-play-state: running;
z-index: 6;
}
.second-hand {
width: 3px;
height: 100px;
background: #e65e5e;
transform: translateX(-50%) rotate(0deg);
animation: rotate-seconds 60s steps(60, end) infinite;
animation-play-state: running;
z-index: 7;
}
.center-pin {
width: 20px;
height: 20px;
background: #e0e5ec;
border-radius: 50%;
position: absolute;
z-index: 10;
box-shadow:
inset 3px 3px 6px #a3b1c6,
inset -3px -3px 6px #ffffff;
}
.center-pin::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 6px;
height: 6px;
background: #4a5463;
border-radius: 50%;
}
@keyframes rotate-seconds {
from {
transform: translateX(-50%) rotate(0deg);
}
to {
transform: translateX(-50%) rotate(360deg);
}
}
@keyframes rotate-minutes {
from {
transform: translateX(-50%) rotate(186deg);
}
to {
transform: translateX(-50%) rotate(546deg);
}
}
@keyframes rotate-hours {
from {
transform: translateX(-50%) rotate(105.5deg);
}
to {
transform: translateX(-50%) rotate(465.5deg);
}
}