跳转到内容
打开/关闭搜索
搜索
打开/关闭菜单
13
条目
4
用户
239
编辑
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
首页
子服一览
总规章
常见问题
历史资料
全部条目
分类
最近更改
打开/关闭外观设置菜单
无法加载偏好设置。请检查您的网络连接并重试。
重试
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。
user-interface-preferences
个人工具
讨论
贡献
创建账号
登录
查看“︁MediaWiki:Citizen.css”︁的源代码
MediaWiki界面页面
查看
阅读
查看源代码
查看历史
associated-pages
系统消息
讨论
更多操作
更多
工具
链入页面
相关更改
页面信息
←
MediaWiki:Citizen.css
因为以下原因,您没有权限编辑该页面:
此页面为本wiki上的软件提供界面文本,并受到保护以防止滥用。如欲修改所有wiki的翻译,请访问
translatewiki.net
上的MediaWiki本地化项目。
您无权编辑此CSS页面,因为编辑此页面可能会影响所有访问者。
您可以查看和复制此页面的源代码。
/* * Kuke Wiki — Apple Design System for Citizen * 完整重构版 v2. 分层: tokens → 字体 → 排版 → 材质 → 组件 → 首页 → 系统偏好 * 回退方式: 清空本页 (MediaWiki:Citizen.css) 即可恢复 Citizen 原生外观。 */ /* ============================================================ 1. DESIGN TOKENS — 覆盖 Citizen 的 OKLCH 分量 (浅色) ============================================================ */ :root { /* 主色: Apple Blue #0071e3 */ --color-progressive-oklch__l: 56.29%; --color-progressive-oklch__c: 0.1933; --color-progressive-oklch__h: 256.16; --color-progressive-hsl__h: 211; --color-progressive-hsl__s: 100%; --color-progressive-hsl__l: 44.5%; /* 表面: 纯白页面, 极淡冷灰递进 (#fff → #f5f5f7 → #e8e8ed) */ --color-surface-0-oklch__l: 100%; --color-surface-0-oklch__c: 0.004; --color-surface-0-oklch__h: 286; --color-surface-0-hsl__h: 240; --color-surface-0-hsl__s: 12%; --color-surface-0-hsl__l: 100%; --delta-lightness-surface-base: -1.5%; /* 文字层级: #1d1d1f / #1d1d1f / #6e6e73 / #86868b */ --color-emphasized-oklch__l: 23.16%; --color-emphasized-oklch__c: 0.0038; --color-base-oklch__l: 26%; --color-base-oklch__c: 0.004; --color-subtle-oklch__l: 53.99%; --color-subtle-oklch__c: 0.0077; --color-placeholder-oklch__l: 62.17%; --color-placeholder-oklch__c: 0.0074; --color-disabled-oklch__l: 72%; --color-disabled-oklch__c: 0.006; /* 状态变化更克制 */ --delta-lightness-state-base: 3%; /* 毛玻璃: 苹果导航栏配方 */ --backdrop-filter-frosted-glass: saturate(180%) blur(20px); /* 形状 */ --border-radius-base: 10px; --border-radius-pill: 980px; --border-color-base: rgb( 0 0 0 / 0.09 ); /* 阴影: 苹果的多层柔和投影, 而非单层黑块 */ --shadow-opacity: 0.06; --box-shadow-small: 0 1px 2px rgb( 0 0 0 / 0.04 ), 0 1px 1px rgb( 0 0 0 / 0.03 ); --box-shadow-medium: 0 4px 12px rgb( 0 0 0 / 0.06 ), 0 1px 3px rgb( 0 0 0 / 0.05 ); --box-shadow-large: 0 18px 40px rgb( 0 0 0 / 0.10 ), 0 4px 12px rgb( 0 0 0 / 0.06 ); /* 缓动 */ --transition-timing-function-ease: cubic-bezier( 0.4, 0, 0.2, 1 ); --transition-timing-function-ease-out: cubic-bezier( 0.16, 1, 0.3, 1 ); --transform-image-hover: scale( 1.035 ); /* --- Apple 私有令牌 (ap- 命名空间) --- */ --ap-hairline: rgb( 0 0 0 / 0.09 ); --ap-hairline-strong: rgb( 0 0 0 / 0.14 ); --ap-tint: rgb( 255 255 255 / 0.72 ); --ap-fill-quaternary: rgb( 120 120 128 / 0.08 ); --ap-fill-tertiary: rgb( 120 120 128 / 0.12 ); --ap-scrollbar: rgb( 0 0 0 / 0.2 ); --ap-scrollbar-hover: rgb( 0 0 0 / 0.35 ); --ap-accent: #0071e3; --ap-accent-hover: #0077ed; --ap-radius-card: 18px; --ap-radius-panel: 22px; --ap-ease: cubic-bezier( 0.4, 0, 0.2, 1 ); --ap-ease-out: cubic-bezier( 0.16, 1, 0.3, 1 ); /* 留白节奏 (8pt 网格 × 苹果的宽松倍率) */ --ap-space-1: 0.5rem; --ap-space-2: 1rem; --ap-space-3: 1.5rem; --ap-space-4: 2rem; --ap-space-5: 3rem; --ap-space-6: 4.5rem; --ap-space-7: 6.5rem; } /* --- 暗色: 三种选择器都要覆盖 --- */ .skin-theme-clientpref-night, .skin-theme-clientpref-black { --color-progressive-oklch__l: 62.43%; --color-progressive-oklch__c: 0.2056; --color-progressive-oklch__h: 255.49; --color-progressive-hsl__h: 211; --color-progressive-hsl__s: 100%; --color-progressive-hsl__l: 52%; --color-surface-0-oklch__l: 12%; --color-surface-0-oklch__c: 0.004; --color-surface-0-oklch__h: 286; --color-surface-0-hsl__h: 240; --color-surface-0-hsl__s: 8%; --color-surface-0-hsl__l: 7%; --delta-lightness-surface-base: 2.8%; --color-emphasized-oklch__l: 97%; --color-emphasized-oklch__c: 0.003; --color-base-oklch__l: 90%; --color-base-oklch__c: 0.004; --color-subtle-oklch__l: 68%; --color-subtle-oklch__c: 0.008; --color-placeholder-oklch__l: 58%; --color-disabled-oklch__l: 45%; --border-color-base: rgb( 255 255 255 / 0.11 ); --shadow-opacity: 0.5; --box-shadow-small: 0 1px 2px rgb( 0 0 0 / 0.4 ); --box-shadow-medium: 0 4px 14px rgb( 0 0 0 / 0.45 ); --box-shadow-large: 0 20px 44px rgb( 0 0 0 / 0.55 ); --ap-hairline: rgb( 255 255 255 / 0.11 ); --ap-hairline-strong: rgb( 255 255 255 / 0.18 ); --ap-tint: rgb( 30 30 32 / 0.72 ); --ap-fill-quaternary: rgb( 118 118 128 / 0.18 ); --ap-fill-tertiary: rgb( 118 118 128 / 0.24 ); --ap-scrollbar: rgb( 255 255 255 / 0.22 ); --ap-scrollbar-hover: rgb( 255 255 255 / 0.38 ); --ap-accent: #0a84ff; --ap-accent-hover: #409cff; } @media ( prefers-color-scheme: dark ) { .skin-theme-clientpref-os { --color-progressive-oklch__l: 62.43%; --color-progressive-oklch__c: 0.2056; --color-progressive-oklch__h: 255.49; --color-progressive-hsl__h: 211; --color-progressive-hsl__s: 100%; --color-progressive-hsl__l: 52%; --color-surface-0-oklch__l: 12%; --color-surface-0-oklch__c: 0.004; --color-surface-0-oklch__h: 286; --color-surface-0-hsl__h: 240; --color-surface-0-hsl__s: 8%; --color-surface-0-hsl__l: 7%; --delta-lightness-surface-base: 2.8%; --color-emphasized-oklch__l: 97%; --color-emphasized-oklch__c: 0.003; --color-base-oklch__l: 90%; --color-base-oklch__c: 0.004; --color-subtle-oklch__l: 68%; --color-subtle-oklch__c: 0.008; --color-placeholder-oklch__l: 58%; --color-disabled-oklch__l: 45%; --border-color-base: rgb( 255 255 255 / 0.11 ); --shadow-opacity: 0.5; --box-shadow-small: 0 1px 2px rgb( 0 0 0 / 0.4 ); --box-shadow-medium: 0 4px 14px rgb( 0 0 0 / 0.45 ); --box-shadow-large: 0 20px 44px rgb( 0 0 0 / 0.55 ); --ap-hairline: rgb( 255 255 255 / 0.11 ); --ap-hairline-strong: rgb( 255 255 255 / 0.18 ); --ap-tint: rgb( 30 30 32 / 0.72 ); --ap-fill-quaternary: rgb( 118 118 128 / 0.18 ); --ap-fill-tertiary: rgb( 118 118 128 / 0.24 ); --ap-scrollbar: rgb( 255 255 255 / 0.22 ); --ap-scrollbar-hover: rgb( 255 255 255 / 0.38 ); --ap-accent: #0a84ff; --ap-accent-hover: #409cff; } } /* ============================================================ 2. 字体栈与渲染 ============================================================ */ :root { --font-family-citizen-base: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro Display', 'Helvetica Neue', 'Segoe UI Variable Text', 'Segoe UI', Inter; --font-family-citizen-serif: 'New York', 'Iowan Old Style', 'Source Serif Pro', Georgia; --font-family-citizen-monospace: 'SF Mono', ui-monospace, Menlo, 'Cascadia Code', 'JetBrains Mono', Consolas; --font-family-language-base: 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei UI', 'Microsoft YaHei'; --font-family-language-serif: 'Songti SC', 'Source Han Serif SC', 'Noto Serif CJK SC', SimSun; --font-family-language-monospace: 'PingFang SC', 'Microsoft YaHei UI'; --font-size-medium: 1.0625rem; --line-height-content: 1.55; --font-weight-semi-bold: 590; --font-weight-bold: 680; } html { -webkit-text-size-adjust: 100%; } body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; font-synthesis-weight: none; letter-spacing: normal; } /* ============================================================ 3. 排版 — SF 的光学字距对照表 拉丁文字号越大字距越负; 中文一律 normal (负字距会让汉字粘连) ============================================================ */ .mw-body-content, .citizen-body { font-size: var( --font-size-medium ); line-height: 1.55; } .mw-parser-output p { margin: 0 0 1.05em; text-wrap: pretty; max-width: 74ch; } h1, h2, h3, h4, h5, h6, .citizen-page-heading, .mw-headline { font-family: var( --font-family-citizen-base ), var( --font-family-language-base ), system-ui, sans-serif; font-weight: 600; line-height: 1.1; text-wrap: balance; color: var( --color-emphasized ); } .citizen-page-heading, h1 { font-size: clamp( 2rem, 1.35rem + 2.2vw, 2.75rem ); letter-spacing: -0.021em; line-height: 1.08; } .mw-parser-output h2 { font-size: clamp( 1.5rem, 1.2rem + 1vw, 1.875rem ); letter-spacing: -0.02em; margin: 2.6em 0 0.62em; padding-bottom: 0; border-bottom: 0; line-height: 1.14; } .mw-parser-output h3 { font-size: 1.3125rem; letter-spacing: -0.016em; margin: 2em 0 0.55em; line-height: 1.2; } .mw-parser-output h4 { font-size: 1.125rem; letter-spacing: -0.014em; margin: 1.7em 0 0.5em; } .mw-parser-output h5, .mw-parser-output h6 { font-size: 1rem; letter-spacing: -0.01em; margin: 1.5em 0 0.45em; color: var( --color-subtle ); } /* 第一个标题不要多余的上边距 */ .mw-parser-output > h2:first-child, .mw-parser-output > h3:first-child { margin-top: 0; } /* 中文: 关闭负字距, 放宽行高 */ html:lang( zh ) body, html:lang( zh-cn ) body, html:lang( zh-hans ) body, html:lang( ja ) body, html:lang( ko ) body { letter-spacing: normal; } html:lang( zh ) h1, html:lang( zh ) h2, html:lang( zh ) h3, html:lang( zh ) h4, html:lang( zh ) h5, html:lang( zh ) h6, html:lang( zh ) .citizen-page-heading, html:lang( zh-cn ) h1, html:lang( zh-cn ) h2, html:lang( zh-cn ) h3, html:lang( zh-cn ) .citizen-page-heading, html:lang( zh-hans ) h1, html:lang( zh-hans ) h2, html:lang( zh-hans ) h3, html:lang( zh-hans ) .citizen-page-heading { letter-spacing: -0.003em; } html:lang( zh ) .mw-parser-output p, html:lang( zh ) .mw-parser-output li, html:lang( zh-cn ) .mw-parser-output p, html:lang( zh-hans ) .mw-parser-output p { line-height: 1.75; max-width: 40em; } /* 强调与小字 */ strong, b { font-weight: 600; color: var( --color-emphasized ); } small, .citizen-footer__desc, .citizen-siteStats__label { font-size: 0.75rem; letter-spacing: -0.005em; } /* ============================================================ 4. 链接 ============================================================ */ .mw-parser-output a:not( .image ):not( .cdx-button ) { color: var( --ap-accent ); text-decoration: none; transition: color 0.15s var( --ap-ease ); } .mw-parser-output a:not( .image ):not( .cdx-button ):hover { color: var( --ap-accent-hover ); text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 0.06em; } .mw-parser-output a.new, .mw-parser-output a.new:hover { color: #d93025; } /* ============================================================ 5. 材质与形状 — 顶栏 / 侧栏 / 浮层 ============================================================ */ .citizen-header, .citizen-sticky-header { background-color: var( --ap-tint ); -webkit-backdrop-filter: saturate( 180% ) blur( 20px ); backdrop-filter: saturate( 180% ) blur( 20px ); border-color: var( --ap-hairline ); box-shadow: none; } .citizen-header__inner { border-bottom: 1px solid var( --ap-hairline ); } .citizen-drawer__card, .citizen-menu__card, .citizen-search__card, .citizen-search-box__card, .citizen-dropdown .citizen-menu__card, .citizen-share-dialog { border-radius: var( --ap-radius-panel ); border: 1px solid var( --ap-hairline ); box-shadow: var( --box-shadow-large ); background-color: var( --color-surface-1 ); -webkit-backdrop-filter: saturate( 180% ) blur( 24px ); backdrop-filter: saturate( 180% ) blur( 24px ); overflow: hidden; } .citizen-menu__content-list a, .citizen-drawer__menu a { border-radius: 8px; transition: background-color 0.14s var( --ap-ease ); } .citizen-menu__heading { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var( --color-placeholder ); } /* ============================================================ 6. 按钮 — 药丸 + 按压回弹 ============================================================ */ .cdx-button, .citizen-cdx-button--size-large, .mw-ui-button { border-radius: var( --border-radius-pill ); font-weight: 500; letter-spacing: -0.012em; border-color: var( --ap-hairline-strong ); transition: background-color 0.16s var( --ap-ease ), transform 0.12s var( --ap-ease ), box-shadow 0.16s var( --ap-ease ); } .cdx-button:active, .mw-ui-button:active, .citizen-cdx-button--size-large:active { transform: scale( 0.96 ); } .cdx-button--weight-primary, .cdx-button--action-progressive.cdx-button--weight-primary { background-color: var( --ap-accent ); border-color: transparent; color: #fff; box-shadow: none; } .cdx-button--weight-primary:hover { background-color: var( --ap-accent-hover ); } .cdx-button--icon-only { border-radius: var( --border-radius-circle ); } .citizen-page-actions__item .cdx-button, .citizen-header__item .cdx-button { border-color: transparent; } /* ============================================================ 7. 搜索框 — 胶囊 + 内嵌填充 ============================================================ */ .citizen-search__form, .citizen-search-box__form, .citizen-search__input, #searchInput { border-radius: var( --border-radius-pill ); background-color: var( --ap-fill-quaternary ); border-color: transparent; transition: background-color 0.18s var( --ap-ease ), box-shadow 0.18s var( --ap-ease ); } .citizen-search__form:focus-within, .citizen-search-box__form:focus-within { background-color: var( --color-surface-0 ); box-shadow: 0 0 0 3.5px rgb( 0 113 227 / 0.25 ), var( --box-shadow-medium ); } /* ============================================================ 8. 内容组件 ============================================================ */ .mw-parser-output table.wikitable { border-radius: 14px; border: 1px solid var( --ap-hairline ); border-collapse: separate; border-spacing: 0; overflow: hidden; font-size: 0.9375rem; box-shadow: none; } .mw-parser-output table.wikitable > * > tr > th, .mw-parser-output table.wikitable > * > tr > td { border: 0; border-bottom: 1px solid var( --ap-hairline ); padding: 0.7rem 1rem; } .mw-parser-output table.wikitable > * > tr:last-child > td { border-bottom: 0; } .mw-parser-output table.wikitable > * > tr > th { background-color: var( --color-surface-2 ); font-weight: 600; letter-spacing: -0.008em; } .mw-parser-output pre, .mw-parser-output code, .mw-highlight pre { font-family: var( --font-family-citizen-monospace ), monospace; font-size: 0.875em; } .mw-parser-output pre, .mw-highlight pre { border-radius: 12px; border: 1px solid var( --ap-hairline ); background-color: var( --color-surface-1 ); padding: 1rem 1.15rem; line-height: 1.55; } .mw-parser-output code { border-radius: 6px; padding: 0.12em 0.38em; background-color: var( --ap-fill-quaternary ); border: 0; } .mw-parser-output blockquote { border-left: 3px solid var( --ap-accent ); border-radius: 0 10px 10px 0; background-color: var( --color-surface-1 ); padding: 0.9rem 1.25rem; margin: 1.6em 0; font-size: 1.0625rem; } .mw-parser-output hr { border: 0; border-top: 1px solid var( --ap-hairline ); margin: var( --ap-space-5 ) 0; } .mw-parser-output img, .mw-parser-output .thumbimage { border-radius: 12px; border: 0; } .mw-parser-output .thumb .thumbinner { border-radius: 14px; border: 1px solid var( --ap-hairline ); background-color: var( --color-surface-1 ); padding: 8px; } /* ============================================================ 9. 页面框架 / 页脚 / 目录 ============================================================ */ .citizen-page-header { padding-bottom: var( --ap-space-2 ); } .citizen-page-heading { margin-bottom: 0.25rem; } .citizen-toc .citizen-menu__content-list a { letter-spacing: -0.008em; font-size: 0.875rem; } .citizen-footer { border-top: 1px solid var( --ap-hairline ); background-color: var( --color-surface-1 ); } .citizen-footer__content, .citizen-footer__bottom { font-size: 0.75rem; color: var( --color-subtle ); letter-spacing: -0.004em; } .citizen-siteStats__item { border-radius: 12px; background-color: var( --ap-fill-quaternary ); border: 0; } /* ============================================================ 10. 首页 — 苹果发布页式分段布局 ============================================================ */ .kuke-hero { text-align: center; padding: var( --ap-space-7 ) var( --ap-space-2 ) var( --ap-space-6 ); margin-bottom: var( --ap-space-4 ); } .kuke-hero__title { font-size: clamp( 2.75rem, 1.6rem + 5.2vw, 5rem ); font-weight: 640; line-height: 1.05; letter-spacing: -0.018em; margin: 0 0 var( --ap-space-2 ); text-wrap: balance; background-image: linear-gradient( 180deg, var( --color-emphasized ) 0%, var( --color-subtle ) 165% ); -webkit-background-clip: text; background-clip: text; color: transparent; } .kuke-hero__sub { font-size: clamp( 1.0625rem, 0.9rem + 0.7vw, 1.5rem ); line-height: 1.42; font-weight: 400; color: var( --color-subtle ); max-width: 34em; margin: 0 auto var( --ap-space-4 ) !important; letter-spacing: 0; } .kuke-cta { display: inline-block; padding: 0.72em 1.75em; border-radius: var( --border-radius-pill ); background-color: var( --ap-accent ); color: #fff !important; font-size: 1.0625rem; font-weight: 500; letter-spacing: -0.01em; text-decoration: none !important; margin: 0 0.35rem 0.6rem; transition: background-color 0.16s var( --ap-ease ), transform 0.12s var( --ap-ease ); } .kuke-cta:hover { background-color: var( --ap-accent-hover ); color: #fff !important; } .kuke-cta:active { transform: scale( 0.96 ); } .kuke-cta--ghost { background-color: transparent; color: var( --ap-accent ) !important; box-shadow: inset 0 0 0 1px var( --ap-accent ); } .kuke-cta--ghost:hover { background-color: rgb( 0 113 227 / 0.08 ); color: var( --ap-accent ) !important; } .kuke-section { padding: var( --ap-space-6 ) 0; border-top: 1px solid var( --ap-hairline ); } .kuke-section__title { font-size: clamp( 1.75rem, 1.3rem + 1.8vw, 2.5rem ) !important; font-weight: 620 !important; letter-spacing: -0.018em; text-align: center; margin: 0 0 0.5em !important; border: 0 !important; padding: 0 !important; text-wrap: balance; } .kuke-section__lead { text-align: center; color: var( --color-subtle ); font-size: 1.0625rem; max-width: 36em; margin: 0 auto var( --ap-space-4 ) !important; } .kuke-grid { display: grid; grid-template-columns: repeat( auto-fit, minmax( 260px, 1fr ) ); gap: var( --ap-space-2 ); margin: 0; padding: 0; list-style: none; } .kuke-card { display: block; padding: var( --ap-space-3 ); border-radius: var( --ap-radius-card ); background-color: var( --color-surface-1 ); border: 1px solid var( --ap-hairline ); box-shadow: none; transition: transform 0.32s var( --ap-ease-out ), box-shadow 0.32s var( --ap-ease-out ), background-color 0.2s var( --ap-ease ); } .kuke-card:hover { transform: translateY( -4px ); box-shadow: var( --box-shadow-large ); } .kuke-card__icon { font-size: 1.75rem; line-height: 1; display: block; margin-bottom: 0.75rem; } .kuke-card__title { font-size: 1.1875rem !important; font-weight: 600 !important; letter-spacing: -0.014em; margin: 0 0 0.4rem !important; border: 0 !important; padding: 0 !important; color: var( --color-emphasized ); } .kuke-card__text { font-size: 0.9375rem !important; line-height: 1.5 !important; color: var( --color-subtle ); margin: 0 !important; max-width: none !important; } .kuke-stats { display: grid; grid-template-columns: repeat( auto-fit, minmax( 150px, 1fr ) ); gap: var( --ap-space-2 ); text-align: center; margin: 0; padding: 0; list-style: none; } .kuke-stat__num { display: block; font-size: clamp( 2rem, 1.5rem + 2vw, 3rem ); font-weight: 620; letter-spacing: -0.022em; line-height: 1; color: var( --ap-accent ); } .kuke-stat__label { display: block; margin-top: 0.4rem; font-size: 0.8125rem; color: var( --color-subtle ); } /* ============================================================ 11. 滚动条 / 选中 / 焦点环 ============================================================ */ * { scrollbar-width: thin; scrollbar-color: var( --ap-scrollbar ) transparent; } ::-webkit-scrollbar { width: 9px; height: 9px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background-color: var( --ap-scrollbar ); border-radius: 980px; border: 2px solid transparent; background-clip: content-box; } ::-webkit-scrollbar-thumb:hover { background-color: var( --ap-scrollbar-hover ); } ::selection { background-color: rgb( 0 113 227 / 0.24 ); } a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, summary:focus-visible, .cdx-button:focus-visible { outline: 2px solid var( --ap-accent ); outline-offset: 2px; border-radius: 8px; } /* ============================================================ 12. 系统偏好 ============================================================ */ @media ( prefers-reduced-motion: reduce ) { .kuke-card, .kuke-cta, .cdx-button { transition: none; } .kuke-card:hover { transform: none; } } @media ( max-width: 720px ) { .kuke-hero { padding: var( --ap-space-5 ) var( --ap-space-1 ) var( --ap-space-4 ); } .kuke-section { padding: var( --ap-space-5 ) 0; } }
返回
MediaWiki:Citizen.css
。
查看“︁MediaWiki:Citizen.css”︁的源代码
MediaWiki界面页面