tool.xpcool.com/index.html
夏犀麟 dd38aeaf38
All checks were successful
Build and Deploy (tool.xpcool.com) / build-and-deploy (push) Successful in 1m10s
feat(theme): 改版为清晰蓝卡片工作台并接管 UI 库尺度
主色青玉改宝石蓝,字号整体放大一档(正文 16px),
通过 --td-comp-* 与 --td-font-* 接管 TDesign 控件高度与文字,
修复 theme-mode 选择器权重不足导致深色变量被 UI 库覆盖的问题。
2026-09-14 23:54:53 +08:00

66 lines
2.6 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="zh-CN" theme-mode="light">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
<meta
name="description"
content="纯前端在线工具箱图片压缩与裁剪、二维码、JSON 格式化、时间戳、Base64、JWT、Cron、进制转换、哈希、身份证解析、OCR 等 56 个实用工具,支持中英日韩四种语言与日间夜间主题,数据全部在浏览器本地处理。"
/>
<meta name="theme-color" content="#f4f6fb" media="(prefers-color-scheme: light)" />
<meta name="theme-color" content="#0b0f18" media="(prefers-color-scheme: dark)" />
<title>在线工具箱 · Tool</title>
<!--
防闪烁FOUC内联脚本必须在样式与模块加载之前同步执行。
1) 主题TDesign 依赖 html[theme-mode] 属性,"auto" 或不合法值按系统偏好解析,
解析结果回写 theme-mode保证首屏就是正确配色。
2) 语言:把 html[lang] 先设对,字体栈(见 tokens.scss才不会先按中文渲染再跳变。
这段脚本与 src/stores/theme.ts、src/i18n/index.ts 中的读取逻辑保持一致,
改动存储 key 或取值规则时三处必须同步。
-->
<script>
;(function () {
var SUPPORTED = ['zh-CN', 'en-US', 'ja-JP', 'ko-KR']
function readStorage(key) {
try {
return localStorage.getItem(key)
} catch (e) {
return null
}
}
// ---- 主题 ----
var pref = readStorage('tool-theme')
var dark = false
try {
dark = !!(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches)
} catch (e) {
dark = false
}
var mode = pref === 'light' || pref === 'dark' ? pref : dark ? 'dark' : 'light'
document.documentElement.setAttribute('theme-mode', mode)
// ---- 语言 ----
var locale = readStorage('tool-locale')
if (SUPPORTED.indexOf(locale) === -1) {
var nav = (navigator.language || 'zh-CN').toLowerCase()
var primary = nav.split('-')[0]
locale = 'zh-CN'
for (var i = 0; i < SUPPORTED.length; i++) {
if (SUPPORTED[i].toLowerCase().split('-')[0] === primary) {
locale = SUPPORTED[i]
break
}
}
}
document.documentElement.setAttribute('lang', locale)
})()
</script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>