|
69 | 69 | interval = setInterval(() => { |
70 | 70 | [timeHours, timeMinutes] = getTime(hasTemporal); |
71 | 71 | updateMarker(); |
72 | | - totalMinutes += 20; |
73 | | - }, 1000); |
| 72 | + }, 10000); |
74 | 73 | }); |
75 | 74 |
|
76 | 75 | onDestroy(() => { |
|
79 | 78 | </script> |
80 | 79 |
|
81 | 80 | <div class="absolute top-1"> |
| 81 | + <div |
| 82 | + bind:this={marker} |
| 83 | + class="clock origin-[center_10rem] md:origin-[center_24rem] lg:origin-[center_28rem]" |
| 84 | + > |
| 85 | + <ThemeToggle /> |
| 86 | + </div> |
82 | 87 | <svg |
83 | | - class="absolute z-[-1] w-xs md:w-3xl lg:w-4xl h-auto -translate-x-1/2" |
| 88 | + class="absolute z-[-1] w-xs md:w-3xl lg:w-4xl h-auto -translate-x-1/2 orbit-cutout" |
84 | 89 | viewBox="0 0 100 100" |
85 | 90 | > |
86 | | - <circle |
87 | | - cx="50" |
88 | | - cy="50" |
89 | | - r="45" |
90 | | - fill="transparent" |
91 | | - stroke={textColour} |
92 | | - stroke-width="5" |
93 | | - stroke-dasharray="10 100 10" |
94 | | - vector-effect="non-scaling-stroke" |
95 | | - > |
96 | | - <animateTransform |
97 | | - attributeName="transform" |
98 | | - begin="0s" |
99 | | - dur="60s" |
100 | | - type="rotate" |
101 | | - from="0 50 50" |
102 | | - to="360 50 50" |
103 | | - repeatCount="indefinite" |
| 91 | + <mask id="orbitMask" mask-type="luminance"> |
| 92 | + <rect x="0" y="0" width="100" height="100" fill="white" /> |
| 93 | + <rect |
| 94 | + x="45" |
| 95 | + y="0" |
| 96 | + width="10" |
| 97 | + height="50" |
| 98 | + fill="black" |
| 99 | + transform="rotate({angle} 50 50)" |
| 100 | + style="transition: transform 1s ease-in-out" |
104 | 101 | /> |
105 | | - </circle> |
106 | | - <!-- <circle cx="50" cy="50" r="0.1" fill="magenta" /> --> |
| 102 | + <circle cx="50" cy="85" r="50" fill="black" /> |
| 103 | + </mask> |
| 104 | + <g mask="url(#orbitMask)"> |
| 105 | + <circle |
| 106 | + cx="50" |
| 107 | + cy="50" |
| 108 | + r="45" |
| 109 | + fill="transparent" |
| 110 | + stroke={textColour} |
| 111 | + stroke-width="5" |
| 112 | + stroke-dasharray="10 100 10" |
| 113 | + vector-effect="non-scaling-stroke" |
| 114 | + > |
| 115 | + <animateTransform |
| 116 | + attributeName="transform" |
| 117 | + begin="0s" |
| 118 | + dur="60s" |
| 119 | + type="rotate" |
| 120 | + from="0 50 50" |
| 121 | + to="360 50 50" |
| 122 | + repeatCount="indefinite" |
| 123 | + /> |
| 124 | + </circle> |
| 125 | + </g> |
107 | 126 | </svg> |
108 | | - <div bind:this={marker} class="clock origin-[center_10rem] md:origin-[center_24rem] lg:origin-[center_28rem]"> |
109 | | - <ThemeToggle /> |
110 | | - <!-- <div class="bg-blue-500 rounded-full clock-arm"></div> --> |
111 | | - </div> |
112 | 127 | </div> |
113 | 128 |
|
114 | 129 | <style> |
|
119 | 134 | transition: transform 1s ease-in-out; |
120 | 135 | } |
121 | 136 | </style> |
122 | | - <!-- .clock-arm { --> |
123 | | - <!-- position: absolute; --> |
124 | | - <!-- top: 50%; --> |
125 | | - <!-- left: 50%; --> |
126 | | - <!-- width: 2px; --> |
127 | | - <!-- height: 500px; --> |
128 | | - <!----> |
129 | | - <!-- transform-origin: bottom center; --> |
130 | | - <!-- transform: translate(-50%, 0); --> |
131 | | - <!-- } --> |
|
0 commit comments