From 7bd07f5947fca6b58332760e7fbbdea852bb76a7 Mon Sep 17 00:00:00 2001 From: QLHazycoder <2825305047@qq.com> Date: Tue, 19 May 2026 08:36:18 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=8A=A8=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E5=B9=BF=E5=91=8A=E6=9D=A1=E7=9A=84=E6=A0=B7=E5=BC=8F?= =?UTF-8?q?=E5=92=8C=E9=80=BB=E8=BE=91=EF=BC=8C=E5=B9=B6=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD=E7=9A=84=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sidepanel/sidepanel.css | 103 +++++++ sidepanel/sidepanel.html | 9 + sidepanel/sidepanel.js | 253 +++++++++++++++++- tests/sidepanel-auto-run-ad-links.test.js | 92 +++++++ ...sidepanel-auto-run-content-refresh.test.js | 22 +- 5 files changed, 471 insertions(+), 8 deletions(-) create mode 100644 tests/sidepanel-auto-run-ad-links.test.js diff --git a/sidepanel/sidepanel.css b/sidepanel/sidepanel.css index baca49d..f70854c 100644 --- a/sidepanel/sidepanel.css +++ b/sidepanel/sidepanel.css @@ -652,6 +652,109 @@ header { display: none !important; } +.auto-run-ad-bar { + position: relative; + display: flex; + align-items: center; + min-height: 34px; + padding: 7px 46px; + border: 1px solid color-mix(in srgb, var(--amber) 24%, var(--border)); + border-radius: var(--radius-sm); + background: color-mix(in srgb, var(--amber) 10%, var(--bg-base)); + box-shadow: inset 0 1px 0 color-mix(in srgb, var(--bg-base) 75%, transparent); + overflow: hidden; +} + +.auto-run-ad-bar[hidden] { + display: none !important; +} + +.auto-run-ad-badge { + position: absolute; + left: 10px; + top: 50%; + transform: translateY(-50%); + padding: 3px 7px; + border-radius: 999px; + background: color-mix(in srgb, var(--amber) 22%, var(--bg-base)); + color: color-mix(in srgb, var(--amber) 80%, var(--text-primary)); + font-size: 10px; + font-weight: 700; + letter-spacing: 0.08em; +} + +.auto-run-ad-viewport { + width: 100%; + min-width: 0; + overflow: hidden; +} + +.auto-run-ad-track { + display: flex; + align-items: center; + justify-content: center; + width: max-content; + min-width: 100%; + transform: translateX(0); +} + +.auto-run-ad-text { + display: block; + font-size: 12px; + line-height: 1.4; + color: var(--text-secondary); + white-space: nowrap; +} + +.auto-run-ad-text--clone { + display: none; + padding-left: var(--auto-run-ad-gap, 28px); +} + +.auto-run-ad-link { + color: color-mix(in srgb, var(--amber) 80%, var(--link)); + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 2px; + transition: color var(--transition); +} + +.auto-run-ad-link:hover { + color: var(--link-hover); +} + +.auto-run-ad-link:focus-visible { + outline: 2px solid color-mix(in srgb, var(--amber) 36%, var(--border)); + outline-offset: 2px; + border-radius: 3px; +} + +.auto-run-ad-bar.is-scrolling .auto-run-ad-track { + justify-content: flex-start; + min-width: max-content; + animation: auto-run-ad-marquee var(--auto-run-ad-duration, 16s) linear infinite; + will-change: transform; +} + +.auto-run-ad-bar.is-scrolling:hover .auto-run-ad-track, +.auto-run-ad-bar.is-scrolling:focus-within .auto-run-ad-track { + animation-play-state: paused; +} + +.auto-run-ad-bar.is-scrolling .auto-run-ad-text--clone { + display: block; +} + +@keyframes auto-run-ad-marquee { + from { + transform: translateX(0); + } + + to { + transform: translateX(calc(-1 * var(--auto-run-ad-scroll-distance, 0px))); + } +} + .contribution-mode-panel { display: flex; flex-direction: column; diff --git a/sidepanel/sidepanel.html b/sidepanel/sidepanel.html index cc178fa..30d0d7c 100644 --- a/sidepanel/sidepanel.html +++ b/sidepanel/sidepanel.html @@ -124,6 +124,15 @@ + +