From 867ba3b098e1695200ba0701290f3301f647e127 Mon Sep 17 00:00:00 2001 From: AskaEth Date: Sun, 16 Aug 2026 16:34:39 +0800 Subject: [PATCH] feat: webapp topbar and tab switching --- app/src/main/assets/h5/css/app.css | 95 ++++++++++++++++++++++ app/src/main/assets/h5/index.html | 2 + app/src/main/assets/h5/js/webapp/tabs.js | 27 ++++++ app/src/main/assets/h5/js/webapp/topbar.js | 59 ++++++++++++++ h5-test/tabs.test.js | 37 +++++++++ 5 files changed, 220 insertions(+) create mode 100644 app/src/main/assets/h5/js/webapp/tabs.js create mode 100644 app/src/main/assets/h5/js/webapp/topbar.js create mode 100644 h5-test/tabs.test.js diff --git a/app/src/main/assets/h5/css/app.css b/app/src/main/assets/h5/css/app.css index 040787a..128cb14 100644 --- a/app/src/main/assets/h5/css/app.css +++ b/app/src/main/assets/h5/css/app.css @@ -130,3 +130,98 @@ body { border: 1px solid var(--glass-border); color: var(--text-dim); } + +/* webAPP 顶栏:浮层玻璃条 + 标签面板 */ +/* webapp topbar: floating glass bar + tab panel */ +#web-topbar { + position: fixed; + top: 12px; + left: 50%; + transform: translateX(-50%); + display: flex; + align-items: center; + gap: 8px; + padding: 6px 10px; + border-radius: 999px; + background: var(--glass-bg); + backdrop-filter: blur(20px) saturate(1.2); + -webkit-backdrop-filter: blur(20px) saturate(1.2); + border: 1px solid var(--glass-border); + z-index: 100; +} + +#web-topbar button { + width: 30px; + height: 30px; + border: none; + border-radius: 999px; + background: none; + color: var(--text); + font-size: 16px; + cursor: pointer; +} + +#web-topbar button:active { background: var(--glass-border); } + +#web-topbar #tb-tabs { + width: auto; + padding: 0 12px; + font-size: 13px; + color: var(--text-dim); +} + +#web-topbar .tb-title { + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 14px; + color: var(--text); +} + +#tab-panel { + position: fixed; + top: 56px; + right: 16px; + display: none; + min-width: 180px; + max-width: 260px; + padding: 8px; + border-radius: 16px; + background: var(--glass-bg); + backdrop-filter: blur(20px) saturate(1.2); + -webkit-backdrop-filter: blur(20px) saturate(1.2); + border: 1px solid var(--glass-border); + z-index: 100; +} + +#tab-panel .tab-row { + display: flex; + align-items: center; + justify-content: space-between; + gap: 8px; + padding: 8px 10px; + border-radius: 10px; + cursor: pointer; +} + +#tab-panel .tab-row.active { background: var(--accent); color: #fff; } + +#tab-panel .tab-name { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 13px; +} + +#tab-panel .tab-close { + border: none; + background: none; + color: inherit; + font-size: 16px; + cursor: pointer; + opacity: 0.7; +} + +#tab-panel .tab-close:hover { opacity: 1; } diff --git a/app/src/main/assets/h5/index.html b/app/src/main/assets/h5/index.html index ef60913..fa0afb8 100644 --- a/app/src/main/assets/h5/index.html +++ b/app/src/main/assets/h5/index.html @@ -25,6 +25,8 @@ + +