From fce60b1570b19c367a368c77a2ea14f20212ab6a Mon Sep 17 00:00:00 2001 From: shanqin <45168502@qq.com> Date: Wed, 26 Aug 2026 20:49:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=B0=94=E6=B3=A1=E6=8C=AA?= =?UTF-8?q?=E5=88=B0=E8=A7=A6=E5=8F=91=E9=92=AE=E5=B7=A6=E4=BE=A7(2026-08-?= =?UTF-8?q?26=20=E7=94=A8=E6=88=B7=E5=AE=9A:=E5=9C=A8=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=97=81=E8=BE=B9):=E5=9E=82=E7=9B=B4=E5=AF=B9=E5=88=B0?= =?UTF-8?q?=E9=92=AE=E4=B8=AD=E7=BA=BF,=E5=B0=8F=E4=B8=89=E8=A7=92?= =?UTF-8?q?=E4=BB=8E=E5=8F=B3=E7=BC=98=E6=8C=87=E5=9B=9E;L2/L3=20=E5=90=84?= =?UTF-8?q?=E8=87=AA=E7=9A=84=20right=20=E8=AE=A9=E4=BD=8D=E5=80=BC?= =?UTF-8?q?=E9=9A=8F=E9=92=AE=E6=95=B0=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/src/app/styles/console.css | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/apps/web/src/app/styles/console.css b/apps/web/src/app/styles/console.css index 7e98475..af59d72 100644 --- a/apps/web/src/app/styles/console.css +++ b/apps/web/src/app/styles/console.css @@ -710,22 +710,26 @@ } /* ══ 二次确认·轻气泡(2026-08-26 用户定:只问一句 + 确认/取消,不摆影响三必答)══ - 锚在页头右下、小三角指回触发钮;点气泡外的透明罩即取消; + 气泡挨在触发钮**左边**(垂直对到钮中线),小三角从右缘指回钮;点透明罩即取消; 阴影只给弹层(§10),确认钮 danger 非实心(§11),进场 180ms 从触发点展开(§13) */ /* 正 z-index 必须有:`.g-actvd/.g-actid > *` 的入场动画 forwards 填充会让每个区块长期保持独立层叠上下文, 没有它,气泡的 z-index 只在页头内部作数,盖不住后面的区块 */ .g-actvd .g-pahead, .g-actid .g-pahead { position: relative; z-index: 30; } .g-actvd .g-popask-veil, .g-actid .g-popask-veil { position: fixed; inset: 0; z-index: 39; } -.g-actvd .g-popask, .g-actid .g-popask { position: absolute; top: calc(100% + 10px); right: 0; z-index: 40; +/* right 的取值 = 页头右 padding + 触发钮右边那几枚钮的宽度和 + 10px 间隙 —— 钮文案改了这里要跟着量 */ +.g-actvd .g-popask, .g-actid .g-popask { position: absolute; top: 16px; z-index: 40; width: 264px; padding: 13px 14px 12px; background: #fff; border: 1px solid var(--tone-line, var(--cline)); border-radius: 12px; box-shadow: 0 12px 32px rgba(22, 26, 34, .14), 0 2px 8px rgba(22, 26, 34, .08); - animation: actvd-ask .18s cubic-bezier(.3, 0, .2, 1) both; transform-origin: top right; } -@keyframes actvd-ask { from { opacity: 0; transform: translateY(-4px) scale(.97); } } -/* 小三角:指回右上方的触发钮(左/上两条边旋转 45° 拼出) */ -.g-actvd .g-popask::before, .g-actid .g-popask::before { content: ""; position: absolute; top: -6px; right: 60px; + animation: actvd-ask .18s cubic-bezier(.3, 0, .2, 1) both; transform-origin: right center; } +/* L2:触发钮右边还有「启动活动」占位钮 → 让出两枚钮的宽度;L3:触发钮自己就是最右枚 */ +.g-actvd .g-popask { right: 232px; } +.g-actid .g-popask { right: 130px; } +@keyframes actvd-ask { from { opacity: 0; transform: translateX(4px) scale(.97); } } +/* 小三角:右缘中点指向触发钮(上/右两条边旋转 45° 拼出) */ +.g-actvd .g-popask::before, .g-actid .g-popask::before { content: ""; position: absolute; top: 50%; margin-top: -5px; right: -6px; width: 10px; height: 10px; background: #fff; transform: rotate(45deg); - border-left: 1px solid var(--tone-line, var(--cline)); border-top: 1px solid var(--tone-line, var(--cline)); } + border-top: 1px solid var(--tone-line, var(--cline)); border-right: 1px solid var(--tone-line, var(--cline)); } .g-actvd .g-popask p, .g-actid .g-popask p { margin: 0; font-size: 13px; font-weight: 600; line-height: 1.55; color: var(--ink); } .g-actvd .g-popask-a, .g-actid .g-popask-a { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; } @media (prefers-reduced-motion: reduce) {