diff --git a/src/components/TimeCard.vue b/src/components/TimeCard.vue index 8ef33ae..dedd1dd 100644 --- a/src/components/TimeCard.vue +++ b/src/components/TimeCard.vue @@ -5,9 +5,11 @@ border rounded="xl" height="100%" + style="cursor: pointer" + @click="showFullscreen = true" > @@ -30,12 +32,407 @@ + + + + + + +
+ + + + 时钟 + + + + 倒计时 + + + + 秒表 + + +
+
+ + +
+ + + +
+
+ {{ timeString }}{{ secondsString }} +
+ +
+
+ 今日已过 {{ dayProgressPercent }}% +
+ +
+
+
+
+ {{ dayOfYear }} +
+
+ 今年第几天 +
+
+
+
+ {{ weekOfYear }} +
+
+ 今年第几周 +
+
+
+
+ {{ daysLeftInYear }} +
+
+ 距离新年 +
+
+
+
+
+ + + +
+ + + + + +
+
+ + + +
+
+ {{ stopwatchDisplay }} +
+ +
+ + + +
+ + +
+ + + + + # + + + 计次 + + + 总计 + + + + + + + {{ laps.length - idx }} + + + {{ formatMs(lap.split) }} + + + {{ formatMs(lap.total) }} + + + + +
+
+
+
+
+
+ + +
+ + +
+
+
+ + + + + + + 时间卡片设置 + + + + + + 显示时间卡片 + 在首页显示时间卡片,刷新后生效。 + + + + + + + + 完成 + + + + @@ -161,4 +794,147 @@ export default { opacity: 0.75; letter-spacing: 1px; } + +/* 全屏样式 */ +.fullscreen-time-card { + position: relative; + height: 100vh; + width: 100vw; + overflow: hidden; +} + +/* 顶部工具栏 */ +.fullscreen-toolbar { + position: absolute; + top: 0; + left: 0; + right: 0; + z-index: 10; + display: flex; + justify-content: center; + padding-top: 16px; +} + +.fullscreen-tabs { + background: transparent; + border-radius: 16px; +} + +.toolbar-fade-enter-active, +.toolbar-fade-leave-active { + transition: opacity 0.4s ease, transform 0.4s ease; +} + +.toolbar-fade-enter-from, +.toolbar-fade-leave-to { + opacity: 0; + transform: translateY(-20px); +} + +.fullscreen-tabs-window { + width: 100%; +} + +.fullscreen-time-body { + user-select: none; + padding: 0 24px; +} + +.fullscreen-time-display { + font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace; + font-size: clamp(4rem, 15vw, 12rem); + font-weight: 700; + line-height: 1; + letter-spacing: 8px; + font-variant-numeric: tabular-nums; + white-space: nowrap; +} + +.fullscreen-seconds { + font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace; + font-size: 0.45em; + vertical-align: baseline; + margin-left: 4px; + opacity: 0.5; +} + +.fullscreen-date-line { + font-size: clamp(1rem, 3vw, 2.2rem); + opacity: 0.7; + letter-spacing: 2px; +} + +.fullscreen-progress { + display: flex; + flex-direction: column; + align-items: center; +} + +.fullscreen-extra { + font-variant-numeric: tabular-nums; +} + +.fullscreen-actions { + position: absolute; + bottom: 24px; + right: 24px; + display: flex; + align-items: center; + opacity: 0.5; + transition: opacity 0.3s ease; +} + +.fullscreen-actions:hover { + opacity: 1; +} + +/* 倒计时设置 */ +.countdown-setup { + user-select: none; +} + +.countdown-digit { + font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace; + font-size: clamp(3rem, 10vw, 8rem); + font-weight: 700; + line-height: 1; + font-variant-numeric: tabular-nums; + min-width: 1.2em; + text-align: center; +} + +.countdown-sep { + font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace; + font-size: clamp(3rem, 10vw, 8rem); + font-weight: 300; + line-height: 1; + opacity: 0.4; + padding-bottom: 1.8em; +} + +.countdown-ended { + animation: pulse-red 1s ease-in-out infinite; +} + +@keyframes pulse-red { + 0%, 100% { + opacity: 1; + } + 50% { + opacity: 0.3; + } +} + +/* 秒表计次列表 */ +.stopwatch-laps { + max-height: 30vh; + overflow-y: auto; + width: min(90vw, 400px); +} + +.stopwatch-laps-table { + background: transparent !important; + font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace; + font-variant-numeric: tabular-nums; +}