跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
1
条目
2
文件
8
用户
633
编辑
ANACHRONISM
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
打开/关闭外观设置菜单
无法加载外观设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
登录
请求账号
查看“︁MediaWiki:Citizen.css”︁的源代码
MediaWiki界面页面
查看
阅读
查看源代码
查看历史
相关页面
系统消息
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
←
MediaWiki:Citizen.css
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
旅人
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此CSS页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* ============================================ Citizen 皮肤定制 最后稳定版本:2026-10-01 结构: 0. 设计令牌(主题色 / 过渡时长) 1. 字体 2. 全局页面布局 3. Header 隐藏(保留偏好设置) 4. 偏好设置面板(仅 rail 触发时生效,Special:Preferences 页除外) 5. 侧边工具栏 Rail 6. Footer 页脚 7. 页面操作工具栏 7.1 特殊页面"相关页面"菜单(由 JS 打类后区分) 8. 响应式断点(2 档) 9. 评论区 10. 申请账户页面 修改须知: - 主题色统一在第 0 节定义,全站引用变量 - 第 7、9 节规则互相依赖,调整前先复制一份 - !important 用于压过 Citizen 和 Comments 扩展自带样式 - 测试场景:首页 / 普通页面 / 1147px / 600px / 夜间模式 ============================================ */ /* ============================================ 0. 设计令牌 全站的颜色、过渡时长集中在此。 修改主题只需要改这一节,不用全站搜索替换。 ============================================ */ :root { /* ---- 主色系 ---- */ --c-primary: #56000d; /* 主色:暗红,按钮底、边框等 */ --c-primary-hover: #8b1a2b; /* 悬停 / 强调色 */ --c-primary-night: #6b1010; /* 夜间模式主色 */ --c-primary-rgb: 86, 0, 13; /* 主色 RGB,用于 rgba() 叠加 */ /* ---- 状态色 ---- */ --c-danger: #bf0017; /* 危险操作(删除等) */ --c-danger-night: #ff8fa3; /* 夜间模式下的危险色 */ /* ---- 夜间模式强调色 ---- */ --c-night-accent: #d4a5b0; /* 夜间模式下的亮色文字 */ --c-night-accent-rgb: 212, 165, 176; /* 夜间强调色 RGB */ /* ---- 通用过渡时长 ---- */ --t-fast: 0.15s; --t-normal: 0.2s; --t-slow: 0.3s; /* ---- 圆角 ---- */ --radius-card: 0.25rem; /* 主内容卡片 / 评论区卡片的圆角 */ } /* ============================================ 1. 字体 ============================================ */ @font-face { font-family: 'LXGW WenKai Medium'; src: url('/fonts/LXGWWenKai-Medium.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: 'Seldom Scene'; src: url('/fonts/SeldomScene.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: 'ScriptSERIF'; src: url('/fonts/ScriptSERIF-ripTRASH.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: 'Roguedash Solid'; src: url('/fonts/Roguedash-Solid.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: 'MicYahei'; src: url('/fonts/MicYahei-Bold.woff2') format('woff2'); font-weight: 100 900; font-style: normal; font-display: swap; } @font-face { font-family: 'Anurati'; src: url('/fonts/Anurati-Regular.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: 'Milton Grotesque'; src: url('/fonts/MiltonGrotesque.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } @font-face { font-family: 'Narrow Streets'; src: url('/fonts/NARROWSTREETSRegular.woff2') format('woff2'); font-weight: normal; font-style: normal; font-display: swap; } :root { --font-family-base: 'LXGW WenKai Medium', system-ui, sans-serif; --font-family-seldom: 'Seldom Scene', 'LXGW WenKai Medium', system-ui, sans-serif; --font-family-script: 'ScriptSERIF', 'LXGW WenKai Medium', system-ui, sans-serif; --font-family-rogue: 'Roguedash Solid', 'LXGW WenKai Medium', system-ui, sans-serif; --font-family-yahei: 'MicYahei', system-ui, sans-serif; --font-family-anurati: 'Anurati', 'LXGW WenKai Medium', system-ui, sans-serif; --font-family-milton: 'Milton Grotesque', 'LXGW WenKai Medium', system-ui, sans-serif; --font-family-narrow: 'Narrow Streets', 'LXGW WenKai Medium', system-ui, sans-serif; } html, body, .mw-body, .mw-parser-output { font-family: var(--font-family-base); } .font-seldom { font-family: var(--font-family-seldom); } .font-script { font-family: var(--font-family-script); } .font-rogue { font-family: var(--font-family-rogue); } .font-yahei { font-family: var(--font-family-yahei); } .font-anurati { font-family: var(--font-family-anurati); } .font-milton { font-family: var(--font-family-milton); } .font-narrow { font-family: var(--font-family-narrow); } /* ============================================ 2. 全局页面布局 ============================================ */ /* 2.1 固定背景 */ body { background-image: linear-gradient(135deg, #1a0003 0%, var(--c-primary) 45%, #2a0006 100%); background-attachment: fixed; background-size: cover; background-position: center; background-repeat: no-repeat; min-height: 100vh; } html.skin-theme-clientpref-night body, html.skin-theme-clientpref-pureblack body { background-image: linear-gradient(135deg, #0a0000 0%, #2a0006 50%, #100002 100%); } /* 2.2 页面容器:与四周留空隙 */ .citizen-page-container { padding: 1.5rem 1.5rem 0 1.5rem; box-sizing: border-box; min-height: 100vh; display: flex; flex-direction: column; } /* 2.3 主内容卡片 */ .mw-body { position: relative; border-radius: var(--radius-card); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25); padding: 2rem 2.5rem; width: 100%; max-width: 100%; margin: 0 auto; box-sizing: border-box; flex: 0 0 auto; background: rgba(255, 255, 255, 0.97); } html.skin-theme-clientpref-night .mw-body { background: rgba(30, 22, 24, 0.95); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6); } html.skin-theme-clientpref-pureblack .mw-body { background: rgba(0, 0, 0, 0.95); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.8); } /* 2.4 三种宽度偏好 */ html.citizen-feature-custom-width-clientpref-narrow .mw-body { max-width: 55rem !important; } html.citizen-feature-custom-width-clientpref-standard .mw-body { max-width: 80rem !important; } html.citizen-feature-custom-width-clientpref-wide .mw-body { max-width: 110rem !important; } html.citizen-feature-custom-width-clientpref-full .mw-body { max-width: 100% !important; } /* ============================================ 3. Citizen Header 隐藏(保留偏好设置) ============================================ */ .citizen-header { position: fixed !important; top: 0 !important; left: 0 !important; width: 0 !important; height: 0 !important; overflow: visible !important; background: transparent !important; border: none !important; box-shadow: none !important; z-index: 9999; pointer-events: none; } .citizen-header__logo, .citizen-search, .citizen-drawer, .citizen-header__start, .citizen-userMenu, .citizen-preferences-dropdown > details { display: none !important; } .citizen-preferences-dropdown { display: block !important; pointer-events: auto; } /* ============================================ 4. 偏好设置面板 ⚠️ 关键:Special:Preferences 页面本身也用这个面板渲染表单。 如果在那个页面上禁用面板显示,OOUI 会因为找不到可见元素 而抛出 "Widget not found" 异常,导致整个表单变灰不可交互。 因此所有规则必须排除 .page-Special_Preferences 页面。 ============================================ */ /* 4.1 桌面端:居中浮层(排除 Special:Preferences) */ body:not(.page-Special_Preferences) #citizen-preferences-dropdown__card { position: fixed !important; top: 50% !important; left: 50% !important; transform: translate(-50%, -50%) !important; width: 32rem !important; max-width: 92vw !important; min-height: 20rem !important; max-height: 80vh !important; overflow-y: auto !important; background: #fff !important; border-radius: 0.75rem !important; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.35) !important; padding: 1rem !important; z-index: 100000 !important; display: none; } body:not(.page-Special_Preferences) #citizen-preferences-details[open] + #citizen-preferences-dropdown__card, body:not(.page-Special_Preferences).citizen-preferences-shown #citizen-preferences-dropdown__card { display: block !important; } /* 4.2 关闭按钮(仅非 Special:Preferences 时生成,样式保留全局即可) */ .citizen-preferences-close { position: absolute; top: 0.5rem; right: 0.75rem; background: transparent; border: none; font-size: 1.5rem; line-height: 1; color: var(--c-primary); cursor: pointer; padding: 0.25rem 0.5rem; z-index: 10; } .citizen-preferences-close:hover { color: var(--c-primary-hover); } /* 4.3 移动端:全屏(排除 Special:Preferences) */ @media (max-width: 700px) { body:not(.page-Special_Preferences) #citizen-preferences-dropdown__card { top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; width: 100vw !important; max-width: 100vw !important; height: 100vh !important; min-height: 100vh !important; max-height: 100vh !important; transform: none !important; border-radius: 0 !important; padding: 1rem !important; overflow-y: auto !important; z-index: 100000 !important; } } /* ============================================ 5. 侧边工具栏 Rail ============================================ */ .rail-container { position: fixed; top: 5rem; right: 0; z-index: 1000; display: flex; flex-direction: column; gap: 0.25rem; transition: transform var(--t-slow) ease; } body.rail-open .rail-container { transform: translateX(-19.5rem); } .rail-button { width: 2.5rem; height: 2.5rem; border: none; border-radius: 0.5rem 0 0 0.5rem; background: var(--c-primary); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 1.15rem; box-shadow: -2px 0 8px rgba(0, 0, 0, 0.2); transition: background var(--t-normal), transform var(--t-normal); padding: 0; } .rail-button:hover { background: var(--c-primary-hover); transform: translateX(-2px); } .rail-button.is-active { background: var(--c-primary-hover); transform: translateX(-4px); } .rail-button__icon { line-height: 1; pointer-events: none; } .rail-panel { position: fixed; top: 0; right: 0; width: 20rem; height: 100vh; background: #fff; box-shadow: -4px 0 20px rgba(0, 0, 0, 0.25); z-index: 1001; transform: translateX(100%); transition: transform var(--t-slow) ease; display: flex; flex-direction: column; overflow: hidden; } body.rail-open .rail-panel { transform: translateX(0); } .rail-panel__header { display: flex; align-items: center; justify-content: space-between; padding: 1rem 1.25rem; background: var(--c-primary); color: #fff; flex-shrink: 0; } .rail-panel__title { font-size: 1.1rem; font-weight: bold; letter-spacing: 0.1em; } .rail-panel__close { background: transparent; border: none; color: #fff; font-size: 1.5rem; line-height: 1; cursor: pointer; padding: 0 0.25rem; } .rail-panel__close:hover { opacity: 0.7; } .rail-panel__content { padding: 1.25rem; overflow-y: auto; flex: 1; } .rail-panel__loading { color: #888; text-align: center; padding: 2rem 0; } .rail-panel__content .mw-parser-output h3 { font-size: 1rem; color: var(--c-primary); border-left: 3px solid var(--c-primary); padding-left: 0.5rem; margin: 1rem 0 0.5rem 0; } .rail-panel__content .mw-parser-output h3:first-child { margin-top: 0; } .rail-panel__content .mw-parser-output ul { list-style: none; padding: 0; margin: 0 0 0.75rem 0; } .rail-panel__content .mw-parser-output li { margin-bottom: 0.25rem; } .rail-panel__content .mw-parser-output a { display: block; padding: 0.5rem 0.75rem; color: #333; text-decoration: none; border-radius: 0.4rem; transition: background var(--t-fast), color var(--t-fast); } .rail-panel__content .mw-parser-output a:hover { background: rgba(var(--c-primary-rgb), 0.08); color: var(--c-primary); } .rail-overlay { position: fixed; top: 0; right: 0; bottom: 0; left: 0; background: rgba(0, 0, 0, 0.4); z-index: 999; opacity: 0; pointer-events: none; transition: opacity var(--t-slow); } body.rail-open .rail-overlay { opacity: 1; pointer-events: auto; } /* 工具栏账户区的权限组标签 */ .rail-account-groups { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; font-size: 0.9rem; color: #555; margin-bottom: 0.75rem; line-height: 1.4; } .rail-account-groups__label { flex: 0 0 100%; margin-bottom: 0.2rem; color: #888; font-size: 0.85rem; } .rail-group-tag { display: inline-block; padding: 0.15rem 0.5rem; background: rgba(var(--c-primary-rgb), 0.1); color: var(--c-primary); border-radius: 0.25rem; text-decoration: none; font-size: 0.85rem; white-space: nowrap; transition: background var(--t-fast); } a.rail-group-tag:hover { background: rgba(var(--c-primary-rgb), 0.22); } /* ============================================ 6. 全局页脚(暗红渐变,铺满视口宽度) ============================================ */ .citizen-footer { margin: 2rem -1.5rem 0 -1.5rem; padding: 3rem 2rem 2rem; width: calc(100% + 3rem); box-sizing: border-box; background: linear-gradient(180deg, #2a0006 0%, var(--c-primary) 100%); color: rgba(255, 255, 255, 0.85); border-top: none; flex-shrink: 0; } .citizen-footer > * { max-width: 80rem; margin-left: auto; margin-right: auto; } .citizen-footer__content { display: block; text-align: center; padding-bottom: 2rem; border-bottom: 1px solid rgba(255, 255, 255, 0.15); } .citizen-footer__siteinfo { display: inline-block; text-align: center; margin: 0 auto; } .citizen-footer__sitetitle { display: flex; align-items: center; justify-content: center; gap: 0.75rem; font-size: 1.5rem; font-weight: bold; color: #fff; letter-spacing: 0.05em; margin-bottom: 0.75rem; } .citizen-footer__sitetitle .mw-logo-icon { width: 2.5rem; height: 2.5rem; filter: brightness(0) invert(1); } .citizen-footer__sitetitle .mw-logo-wordmark { color: #fff; font-family: var(--font-family-rogue); text-transform: uppercase; } .citizen-footer__desc { color: rgba(255, 255, 255, 0.75); font-size: 0.95rem; line-height: 1.7; margin: 0 auto; max-width: 40rem; } #footer-places-privacy, #footer-places-about, #footer-places-disclaimers, #footer-places { display: none; } .citizen-footer__bottom { padding-top: 1.5rem; text-align: center; } #footer-tagline { color: rgba(255, 255, 255, 0.6); font-size: 0.85rem; letter-spacing: 0.15em; text-transform: uppercase; } /* ============================================ 7. 页面操作工具栏 定位参考:.mw-body(已在 2.3 设为 relative) ============================================ */ .citizen-page-header, .citizen-page-header-inner { position: static !important; } .citizen-page-actions { position: absolute !important; top: 2rem !important; right: 2rem !important; z-index: 10 !important; display: flex !important; flex-direction: column !important; align-items: flex-end !important; gap: 0.4rem !important; margin: 0 !important; padding: 0 !important; } .citizen-page-actions .citizen-menu__heading { display: none !important; } .citizen-page-actions .citizen-menu, .citizen-page-actions .citizen-menu__content, .citizen-page-actions .citizen-menu__content-list { display: flex !important; flex-direction: column !important; align-items: flex-end !important; gap: 0.4rem !important; margin: 0 !important; padding: 0 !important; list-style: none !important; } .citizen-page-actions .mw-list-item, .citizen-page-actions .citizen-share-trigger, .citizen-page-actions .citizen-dropdown-details { flex: 0 0 auto !important; width: auto !important; margin: 0 !important; padding: 0 !important; } .citizen-page-actions .citizen-share-trigger { order: 0 !important; } .citizen-page-actions #ca-view { order: 1 !important; } .citizen-page-actions #ca-ve-edit { order: 2 !important; } .citizen-page-actions #ca-edit { order: 3 !important; } .citizen-page-actions #ca-history { order: 4 !important; } .citizen-page-actions #ca-nstab-main { order: 5 !important; } .citizen-page-actions #ca-talk { order: 6 !important; } .citizen-page-actions #citizen-page-more-dropdown { order: 7 !important; } .citizen-page-actions .mw-list-item > a, .citizen-page-actions .citizen-share, .citizen-page-actions .citizen-dropdown-summary { all: unset !important; display: flex !important; align-items: center !important; justify-content: center !important; width: 2.5rem !important; height: 2.5rem !important; padding: 0 !important; margin: 0 !important; border: none !important; border-radius: 0.75rem !important; background: var(--c-primary) !important; color: #fff !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25) !important; box-sizing: border-box !important; font-size: 1rem !important; line-height: 1 !important; cursor: pointer !important; text-decoration: none !important; transition: background var(--t-normal), transform var(--t-normal); } .citizen-page-actions .mw-list-item > a:hover, .citizen-page-actions .citizen-share:hover, .citizen-page-actions .citizen-dropdown-summary:hover { background: var(--c-primary-hover) !important; transform: translateX(-3px) !important; } .citizen-page-actions .mw-list-item > a > span:not(.citizen-ui-icon), .citizen-page-actions .citizen-share > span:not(.citizen-ui-icon), .citizen-page-actions .citizen-dropdown-summary > span:not(.citizen-ui-icon), .citizen-page-actions > .citizen-menu .citizen-keyboard-hint-keys, .citizen-page-actions > .citizen-menu kbd { display: none !important; } .citizen-page-actions .citizen-share-trigger, .citizen-page-actions .citizen-dropdown-details { position: relative !important; } .citizen-page-actions #citizen-page-actions-more__card { position: absolute !important; left: calc(100% + 0.5rem) !important; right: auto !important; top: 0 !important; min-width: 12rem !important; max-width: calc(100vw - 8rem) !important; background: #fff !important; border-radius: 0.5rem !important; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2) !important; padding: 0.5rem !important; z-index: 100 !important; } .citizen-page-actions #citizen-page-actions-more__card .mw-list-item > a { all: unset !important; display: flex !important; align-items: center !important; justify-content: flex-start !important; gap: 0.6rem !important; width: 100% !important; padding: 0.5rem 0.75rem !important; border-radius: 0.4rem !important; color: #333 !important; font-size: 0.9rem !important; cursor: pointer !important; text-decoration: none !important; box-sizing: border-box !important; } .citizen-page-actions #citizen-page-actions-more__card .mw-list-item > a:hover { background: rgba(var(--c-primary-rgb), 0.08) !important; color: var(--c-primary) !important; } .citizen-page-actions #citizen-page-actions-more__card .mw-list-item > a > span:not(.citizen-ui-icon), .citizen-page-actions #citizen-page-actions-more__card .citizen-keyboard-hint-keys, .citizen-page-actions #citizen-page-actions-more__card kbd { display: inline !important; } .citizen-body-container { padding-right: 5rem !important; } html.skin-theme-clientpref-night .citizen-page-actions .mw-list-item > a, html.skin-theme-clientpref-night .citizen-page-actions .citizen-share, html.skin-theme-clientpref-night .citizen-page-actions .citizen-dropdown-summary { background: var(--c-primary-night) !important; } html.skin-theme-clientpref-night .citizen-page-actions .mw-list-item > a:hover, html.skin-theme-clientpref-night .citizen-page-actions .citizen-share:hover, html.skin-theme-clientpref-night .citizen-page-actions .citizen-dropdown-summary:hover { background: var(--c-primary-hover) !important; } html.skin-theme-clientpref-night .citizen-page-actions #citizen-page-actions-more__card { background: #2a2022 !important; } html.skin-theme-clientpref-night .citizen-page-actions #citizen-page-actions-more__card .mw-list-item > a { color: #ddd !important; } /* ============================================ 7.1 特殊页面"相关页面"菜单 背景:Citizen 在 Special:Watchlist 等特殊页面上会渲染 #p-associated-pages 菜单。 - 部分链接只有纯文字(无图标类),第 7 节的通用规则 会把文字隐藏、把按钮固定成 2.5rem 方块,导致空白暗红方块。 - 部分链接可能有图标(citizen-ui-icon),应保持方块样式。 实现:不用 :has() / :not(:has())(Selectors 4 特性,部分解析器 会报 "缺少 RPAREN")。改由 Common.js 预先打上 .rail-no-icon / .rail-has-icon 类,CSS 只做类选择。 ============================================ */ /* ---- 7.1.1 只有纯文字:改成文字按钮 ---- */ .citizen-page-actions #p-associated-pages .mw-list-item > a.rail-no-icon { all: unset !important; display: inline-flex !important; align-items: center !important; justify-content: center !important; width: auto !important; height: 2.5rem !important; padding: 0 0.9rem !important; margin: 0 !important; border: none !important; border-radius: 0.75rem !important; background: var(--c-primary) !important; color: #fff !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25) !important; box-sizing: border-box !important; font-size: 0.85rem !important; line-height: 1 !important; cursor: pointer !important; text-decoration: none !important; white-space: nowrap !important; transition: background var(--t-normal), transform var(--t-normal); } .citizen-page-actions #p-associated-pages .mw-list-item > a.rail-no-icon:hover { background: var(--c-primary-hover) !important; transform: translateX(-3px) !important; } .citizen-page-actions #p-associated-pages .mw-list-item > a.rail-no-icon > span:not(.citizen-ui-icon) { display: inline !important; color: #fff !important; font-size: 0.85rem !important; line-height: 1.2 !important; } .citizen-page-actions #p-associated-pages .mw-list-item.selected > a.rail-no-icon { background: var(--c-primary-hover) !important; } @media (max-width: 1100px) { .citizen-page-actions #p-associated-pages .mw-list-item > a.rail-no-icon:hover { transform: none !important; } } html.skin-theme-clientpref-night .citizen-page-actions #p-associated-pages .mw-list-item > a.rail-no-icon { background: var(--c-primary-night) !important; } html.skin-theme-clientpref-night .citizen-page-actions #p-associated-pages .mw-list-item > a.rail-no-icon:hover, html.skin-theme-clientpref-night .citizen-page-actions #p-associated-pages .mw-list-item.selected > a.rail-no-icon { background: var(--c-primary-hover) !important; } /* ---- 7.1.2 带图标:保持第 7 节方块样式,无需额外规则 ---- */ /* .rail-has-icon 按钮会被第 7 节的通用规则处理: - .mw-list-item > a → 2.5rem 方块,暗红底 - span:not(.citizen-ui-icon) → 隐藏文字 这里不加任何覆盖,让它自然继承。 */ /* ============================================ 8. 响应式断点(2 档) - ≥1101px:完整桌面 - ≤1100px:移动端横排 - ≤700px:窄移动端 ============================================ */ /* ---------- 8.1 移动端(≤1100px)---------- */ @media (max-width: 1100px) { .citizen-page-aside { display: none !important; } body.citizen-page-aside-enabled .citizen-page-container, body.citizen-page-aside-enabled .mw-body { padding-right: 0 !important; } .citizen-page-actions { position: static !important; flex-direction: row !important; align-items: center !important; flex-wrap: wrap !important; gap: 0.25rem !important; margin-bottom: 1rem !important; } .citizen-page-actions .citizen-menu, .citizen-page-actions .citizen-menu__content, .citizen-page-actions .citizen-menu__content-list { flex-direction: row !important; flex-wrap: wrap !important; align-items: center !important; } .citizen-page-actions .mw-list-item > a:hover, .citizen-page-actions .citizen-share:hover, .citizen-page-actions .citizen-dropdown-summary:hover { transform: none !important; } .citizen-body-container { padding-right: 0 !important; } .citizen-page-actions #citizen-page-actions-more__card { position: fixed !important; top: 50% !important; left: 50% !important; right: auto !important; bottom: auto !important; transform: translate(-50%, -50%) !important; width: 85vw !important; max-width: 22rem !important; max-height: 70vh !important; overflow-y: auto !important; z-index: 2000 !important; } .citizen-page-actions #citizen-page-actions-more__card .citizen-menu, .citizen-page-actions #citizen-page-actions-more__card .citizen-menu__content, .citizen-page-actions #citizen-page-actions-more__card .citizen-menu__content-list { flex-direction: column !important; align-items: stretch !important; flex-wrap: nowrap !important; } .citizen-page-actions #citizen-page-actions-more__card .mw-list-item, .citizen-page-actions #citizen-page-actions-more__card .mw-list-item > a { width: 100% !important; } } /* ---------- 8.2 窄移动端(≤700px)---------- */ @media (max-width: 700px) { .citizen-page-container { padding: 0.75rem 0.75rem 0 0.75rem; } .mw-body { padding: 1.25rem 1rem; border-radius: 0.375rem; } .rail-panel { width: 80vw; } .rail-container { top: 4rem; } body.rail-open .rail-container { transform: translateX(calc(-80vw + 0.5rem)); } .citizen-footer { margin: 1rem -0.75rem 0 -0.75rem; width: calc(100% + 1.5rem); padding: 2rem 1rem 1.5rem; } } /* ============================================ 9. 评论区 Comments 扩展经过 JS 处理后的 DOM 结构: .comments-body ├── .c-order / .c-spy / 表单等 └── .c-item.full 顶层评论 ├── .c-avatar 头像(已禁用) ├── .c-container 内部容器 │ ├── .c-user 用户名 / 时间 / 分数 │ ├── .c-comment 正文 │ ├── .c-comment-edit-form │ ├── .c-actions 操作按钮 │ └── .c-item.reply 嵌套回复(由 JS 搬入) │ └── .c-container └── .visualClear 技术债清理: - 统一用 display: flow-root 作为 clearfix,取代零散的 clear: both - 用 box-sizing: border-box 消除宽高计算差异 - 嵌套回复用 margin 加 padding 明确建立视觉分区 ============================================ */ /* ===== 9.1 独立卡片主体 ===== */ .comments-body.comments-body--page-level { margin: 2rem auto 0 auto !important; padding: 2rem 2.5rem !important; background: rgba(255, 255, 255, 0.97) !important; border-radius: var(--radius-card) !important; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.25) !important; box-sizing: border-box !important; width: 100% !important; max-width: 100% !important; } /* ===== 9.2 三种宽度偏好 ===== */ html.citizen-feature-custom-width-clientpref-narrow .comments-body.comments-body--page-level { max-width: 55rem !important; } html.citizen-feature-custom-width-clientpref-standard .comments-body.comments-body--page-level { max-width: 80rem !important; } html.citizen-feature-custom-width-clientpref-wide .comments-body.comments-body--page-level { max-width: 110rem !important; } html.citizen-feature-custom-width-clientpref-full .comments-body.comments-body--page-level { max-width: 100% !important; } /* ===== 9.3 顶层评论:浅色圆角卡片 ===== */ .comments-body .c-item.full { display: flow-root !important; width: 100% !important; max-width: 100% !important; margin: 0 0 1rem 0 !important; padding: 1rem !important; background: rgba(var(--c-primary-rgb), 0.03) !important; border: none !important; border-radius: 0.75rem !important; box-sizing: border-box !important; } .comments-body .c-item.full:last-child { margin-bottom: 0 !important; } .comments-body .c-container { display: flow-root !important; width: 100% !important; max-width: 100% !important; padding: 0 !important; margin: 0 !important; border: none !important; box-sizing: border-box !important; } .comments-body .visualClear { clear: both !important; height: 0 !important; margin: 0 !important; padding: 0 !important; } /* ===== 9.4 嵌套回复:缩进 + 左侧竖线 + 更深的背景 ===== */ .comments-body .c-item.reply, .comments-body .c-item.nested-in-parent { display: flow-root !important; margin: 2rem 0 0 1.5rem !important; width: calc(100% - 1.5rem) !important; max-width: calc(100% - 1.5rem) !important; background: rgba(var(--c-primary-rgb), 0.08) !important; border-left: 3px solid rgba(var(--c-primary-rgb), 0.35) !important; border-radius: 0 0.75rem 0.75rem 0 !important; padding: 0.875rem 1rem 0.875rem calc(1rem - 3px) !important; box-sizing: border-box !important; position: relative !important; z-index: 1 !important; } /* ===== 9.5 头像:禁用 ===== */ .comments-body .c-avatar { display: none !important; } /* ===== 9.6 用户信息栏 ===== */ .comments-body .c-user { display: flex !important; flex-wrap: wrap !important; align-items: center !important; gap: 0.5rem !important; font-size: 0.85rem !important; margin: 0 0 0.5rem 0 !important; padding: 0 !important; color: #666 !important; } .comments-body .c-user a { color: var(--c-primary) !important; font-weight: bold !important; text-decoration: none !important; } .comments-body .c-user a:hover { text-decoration: underline !important; } .comments-body .c-time, .comments-body .c-score, .comments-body .c-score-title { font-size: 0.8rem !important; color: #999 !important; font-weight: normal !important; } /* ===== 9.7 评论正文 ===== */ .comments-body .c-comment { width: 100% !important; max-width: 100% !important; box-sizing: border-box !important; overflow-wrap: break-word !important; word-wrap: break-word !important; word-break: break-word !important; font-size: 0.9rem !important; line-height: 1.6 !important; padding: 0 !important; margin: 0 !important; border: none !important; } /* ===== 9.8 操作工具栏 ===== */ .comments-body .c-actions { display: flex !important; flex-wrap: wrap !important; align-items: center !important; gap: 0.4rem !important; margin: 0.75rem 0 1rem 0 !important; padding: 0.35rem 0.6rem !important; background: rgba(var(--c-primary-rgb), 0.06) !important; border: 1px solid rgba(var(--c-primary-rgb), 0.1) !important; border-radius: 0.5rem !important; box-sizing: border-box !important; font-size: 0 !important; line-height: 0 !important; color: transparent !important; position: relative !important; z-index: 5 !important; } .comments-body .c-actions a, .comments-body .c-actions > span { display: inline-flex !important; align-items: center !important; justify-content: center !important; padding: 0.3rem 0.75rem !important; background: transparent !important; color: var(--c-primary) !important; text-decoration: none !important; border-radius: 0.4rem !important; font-size: 0.8rem !important; line-height: 1.2 !important; white-space: nowrap !important; transition: background var(--t-fast), color var(--t-fast) !important; border: none !important; margin: 0 !important; box-sizing: border-box !important; flex: 0 0 auto !important; font-family: inherit !important; } .comments-body .c-actions a:hover { background: var(--c-primary) !important; color: #fff !important; } .comments-body .c-actions a[href*="action=delete"], .comments-body .c-actions a[href*="delete"], .comments-body .c-actions .comment-delete-link, .comments-body .c-actions .c-delete a { color: var(--c-danger) !important; } .comments-body .c-actions a[href*="action=delete"]:hover, .comments-body .c-actions a[href*="delete"]:hover, .comments-body .c-actions .comment-delete-link:hover, .comments-body .c-actions .c-delete a:hover { background: var(--c-danger) !important; color: #fff !important; } .comments-body .c-actions .comments-edit { color: var(--c-primary-hover) !important; } .comments-body .c-actions .comments-edit:hover { background: var(--c-primary-hover) !important; color: #fff !important; } /* ===== 9.9 评论表单 ===== */ .comments-body textarea, .comments-body #comment { width: 100% !important; max-width: 100% !important; height: auto !important; min-height: 5rem !important; font-size: 0.95rem !important; padding: 0.5rem 0.75rem !important; border: 1px solid rgba(var(--c-primary-rgb), 0.2) !important; border-radius: 0.4rem !important; background: #fff !important; box-sizing: border-box !important; resize: vertical !important; font-family: inherit !important; line-height: 1.6 !important; display: block !important; } .comments-body .c-form-title { font-size: 1rem; font-weight: bold; color: var(--c-primary); margin-bottom: 0.75rem; } .comments-body .site-button { background: var(--c-primary); color: #fff; border: none; padding: 0.5rem 1.2rem; border-radius: 0.4rem; font-size: 0.9rem; cursor: pointer; margin-right: 0.5rem; margin-top: 0.75rem; font-family: inherit; transition: background var(--t-normal); } .comments-body .site-button:hover { background: var(--c-primary-hover); } .comments-body .c-comment-edit-form-save, .comments-body .c-comment-edit-form-cancel { font-size: 0.85rem; padding: 0.35rem 0.9rem; margin-right: 0.5rem; border-radius: 0.4rem; border: none; cursor: pointer; font-family: inherit; } .comments-body .c-comment-edit-form-save { background: var(--c-primary); color: #fff; } .comments-body .c-comment-edit-form-save:hover { background: var(--c-primary-hover); } .comments-body .c-comment-edit-form-cancel { background: transparent; color: var(--c-primary); border: 1px solid rgba(var(--c-primary-rgb), 0.2); } /* ===== 9.10 排序 / 自动刷新控件 ===== */ .comments-body .c-order { font-size: 0.85rem; color: #666; margin-bottom: 0.5rem; } .comments-body .c-order select { padding: 0.25rem 0.5rem; border: 1px solid rgba(var(--c-primary-rgb), 0.2); border-radius: 0.3rem; font-family: inherit; font-size: 0.85rem; } .comments-body .c-spy a { color: var(--c-primary); text-decoration: none; font-size: 0.85rem; } .comments-body .c-spy a:hover { text-decoration: underline; } /* ===== 9.11 隐藏"检索自 URL"的 printfooter ===== */ .mw-body-content > .printfooter { display: none !important; } /* ===== 9.12 移动端适配 ===== */ @media (max-width: 700px) { .comments-body.comments-body--page-level { padding: 1.25rem 1rem !important; border-radius: 0.375rem !important; } .comments-body .c-item.full { padding: 0.75rem !important; margin-bottom: 0.75rem !important; } .comments-body .c-item.reply, .comments-body .c-item.nested-in-parent { margin: 1.5rem 0 0 0.75rem !important; width: calc(100% - 0.75rem) !important; max-width: calc(100% - 0.75rem) !important; padding: 0.7rem 0.7rem 0.7rem calc(0.7rem - 3px) !important; } .comments-body .c-actions { padding: 0.25rem 0.4rem !important; gap: 0.25rem !important; } .comments-body .c-actions a, .comments-body .c-actions > span { padding: 0.25rem 0.6rem !important; font-size: 0.75rem !important; } .comments-body .c-user { font-size: 0.8rem !important; gap: 0.35rem !important; } .comments-body .c-time, .comments-body .c-score { font-size: 0.75rem !important; } } /* ===== 9.13 夜间模式 ===== */ html.skin-theme-clientpref-night .comments-body.comments-body--page-level { background: rgba(30, 22, 24, 0.95) !important; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6) !important; } html.skin-theme-clientpref-pureblack .comments-body.comments-body--page-level { background: rgba(0, 0, 0, 0.95) !important; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.8) !important; } html.skin-theme-clientpref-night .comments-body .c-item.full { background: rgba(60, 40, 45, 0.4) !important; } html.skin-theme-clientpref-night .comments-body .c-item.reply, html.skin-theme-clientpref-night .comments-body .c-item.nested-in-parent { background: rgba(60, 40, 45, 0.65) !important; border-left-color: rgba(var(--c-night-accent-rgb), 0.4) !important; } html.skin-theme-clientpref-night .comments-body textarea, html.skin-theme-clientpref-night .comments-body #comment { background: rgba(30, 22, 24, 0.6) !important; border-color: rgba(var(--c-night-accent-rgb), 0.25) !important; color: #ddd !important; } html.skin-theme-clientpref-night .comments-body .c-form-title { color: var(--c-night-accent); } html.skin-theme-clientpref-night .comments-body .c-user { color: #999 !important; } html.skin-theme-clientpref-night .comments-body .c-user a { color: var(--c-night-accent) !important; } html.skin-theme-clientpref-night .comments-body .c-actions { background: rgba(60, 40, 45, 0.5) !important; border-color: rgba(var(--c-night-accent-rgb), 0.2) !important; } html.skin-theme-clientpref-night .comments-body .c-actions a, html.skin-theme-clientpref-night .comments-body .c-actions > span { color: var(--c-night-accent) !important; } html.skin-theme-clientpref-night .comments-body .c-actions a:hover { background: var(--c-primary-hover) !important; color: #fff !important; } html.skin-theme-clientpref-night .comments-body .c-actions .comment-delete-link, html.skin-theme-clientpref-night .comments-body .c-actions .c-delete a { color: var(--c-danger-night) !important; } html.skin-theme-clientpref-night .comments-body .c-actions .comment-delete-link:hover, html.skin-theme-clientpref-night .comments-body .c-actions .c-delete a:hover { background: var(--c-danger) !important; color: #fff !important; } html.skin-theme-clientpref-night .comments-body .c-actions .comments-edit { color: var(--c-night-accent) !important; } /* ============================================ 10. 申请账户页面(Special:RequestAccount) 背景:ConfirmAccount 扩展的申请表单用传统 <table> 排布, Xml::input 生成的输入框固定 size="30"(约 240px)。 窄屏下 label 列 + 输入框会溢出,导致横向滚动、按钮错位。 选择器用 form[name="accountrequest"],因为: - name 属性不受本地化影响(比 page-特殊_XXX 稳定) - 只匹配申请表单,不误伤其他页面 ============================================ */ /* ---- 10.1 桌面端:限制最大宽度,防止超宽 ---- */ form[name="accountrequest"] { max-width: 100%; box-sizing: border-box; } form[name="accountrequest"] fieldset { max-width: 100%; box-sizing: border-box; } form[name="accountrequest"] table { width: 100%; max-width: 100%; box-sizing: border-box; } form[name="accountrequest"] input[type="text"], form[name="accountrequest"] input[type="password"], form[name="accountrequest"] input[type="email"], form[name="accountrequest"] select, form[name="accountrequest"] textarea { max-width: 100%; box-sizing: border-box; } /* ---- 10.2 窄屏(≤700px):表格变竖排 ---- */ @media (max-width: 700px) { /* 表格行变成堆叠布局:label 一行、input 一行 */ form[name="accountrequest"] table, form[name="accountrequest"] tbody, form[name="accountrequest"] tr, form[name="accountrequest"] td { display: block; width: 100%; box-sizing: border-box; } form[name="accountrequest"] tr { margin-bottom: 0.75rem; } form[name="accountrequest"] td:first-child { font-weight: bold; padding-bottom: 0.25rem; } form[name="accountrequest"] td:empty { display: none; } /* 输入框、下拉、文本域全部占满一行 */ form[name="accountrequest"] input[type="text"], form[name="accountrequest"] input[type="password"], form[name="accountrequest"] input[type="email"], form[name="accountrequest"] select, form[name="accountrequest"] textarea { width: 100% !important; max-width: 100% !important; box-sizing: border-box; font-size: 1rem; /* 防止 iOS Safari 聚焦时自动缩放 */ } /* 提交按钮全宽 */ form[name="accountrequest"] input[type="submit"] { width: 100%; padding: 0.75rem 1rem; font-size: 1rem; } /* 文本框(Bio、Notes、Urls)默认宽度 auto,改成满宽 */ form[name="accountrequest"] textarea { min-height: 6rem; } /* 兴趣领域那个内嵌的滚动表格(height:150px; overflow:scroll)保持原样, 但内部 td 不再堆叠(它们是复选框列,需要横排) */ form[name="accountrequest"] div[style*="overflow:scroll"] table, form[name="accountrequest"] div[style*="overflow:scroll"] tbody, form[name="accountrequest"] div[style*="overflow:scroll"] tr { display: table; width: auto; } form[name="accountrequest"] div[style*="overflow:scroll"] td { display: table-cell; width: auto; } }
返回
MediaWiki:Citizen.css
。
查看“︁MediaWiki:Citizen.css”︁的源代码
MediaWiki界面页面