From 9b971a5b9215573300346165fa930b83b0d8be57 Mon Sep 17 00:00:00 2001 From: laoyang Date: Wed, 4 Nov 2026 19:27:01 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E6=8B=89=E6=A1=86=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E8=87=AA=E7=BB=98=E5=88=97=E8=A1=A8=EF=BC=9B=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E8=BD=AF=E4=BB=B6=E7=BC=BA=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户两个反馈: ① 「排序那个怎么删了?排序还得留着呀」 ② 「所有下拉框拉下来之后全是灰色,不好看,重新设计」 一、排序字段(是误解,但确实有缺陷) 排序字段没有被删,一直在 if ($esw) 分支里渲染。 用户看到"没有",是因为他打开的是「添加软件」—— 新建时 $esw 为空,整块不渲染,所以确实没有这一项。 这是真实缺陷:新建软件时无法指定排序。 修法: - 把排序字段移出 if ($esw),新建/编辑都显示 - 新建时默认值 = 当前最大 sort_order + 1(排到最后) - 后端 sw_add 改为优先用表单值(用 isset 判断, 用户明确填 0 是合法值——排最前面,不能被当成"没填") 与「下载地址」不同:排序是真实会被用到的字段 (前台软件列表、顶栏三横线菜单都按它排),不能删。 二、下拉框重设计 为什么必须自绘:原生 select 的展开列表由浏览器绘制, CSS 只能改 option 的底色,改不了圆角/行高/hover 高亮, 各平台样式还不一样(Windows 是灰方框)。用户说的"全是灰色"就是这个。 但不重写 HTML:全站 16 个 select,逐个改容易漏, 也会破坏 onchange 提交这类内联逻辑。 做法:原生 select 保留(视觉隐藏,仍参与提交与 change 事件), JS 在旁生成按钮 + 浮层列表。 - 浮层用 position:fixed 挂 body,避免被 overflow:hidden 裁(踩过) - 位置自动避让视口,下方不够翻上方 - 支持键盘:上下键 Home End Enter Esc - 选中项带对勾 - 无 JS 时原生 select 仍可用 配色踩坑:选中项最初用 var(--brand-soft),而该变量会被软件主题色覆盖 —— 同步日历主题色 #ff3f44 时 --brand-soft 成了 #ffe8e9(粉红), 下拉里一片粉很难看。下拉是工具性控件,不该跟软件换色, 改用中性色:#eef1f5 选中 / #f1f3f6 hover,四个软件下完全一致。 验证(真实页面实测): - 2 个 select 均被增强,原生已隐藏 - 面板白底 rgb(255,255,255)、圆角 11px、双层柔和阴影、7 个列表项 - 选中项 rgb(238,241,245)、hover rgb(241,243,246)、带对勾 - 四个软件(#0057b8/#ff3f44/#a556f7/#3571fb)下选中项底色完全相同, 不再随主题色变粉 - 键盘下方向键三次 → 高亮「处理中」,底色正确 - 选择后 selectedIndex/value 同步、面板自动关闭、change 事件已触发 - 浮层 fixed 定位、完整可见、不被裁切 - 排序字段 3 处(软件/分类/状态)齐全;5 个路由 200 --- assets/app.js | 216 +++++++++++++++++++++++++++++++++++++++++ assets/style.css | 105 ++++++++++++++++++++ lib/admin_taxonomy.php | 26 ++++- lib/bootstrap.php | 2 +- 4 files changed, 343 insertions(+), 6 deletions(-) diff --git a/assets/app.js b/assets/app.js index d8c9d4e..aa9d77e 100644 --- a/assets/app.js +++ b/assets/app.js @@ -1109,6 +1109,221 @@ } } + /* ---------- 自定义下拉:替换原生 的展开列表是**浏览器渲染的原生控件**, + * CSS 只能改