Skip to content

TitleBar 标题栏 ​

窗口标题栏(应用外壳 chrome):拖动区 + 居中标题/文档井 + 内建窗口操作 + compact/large 两档。语义在「窗口」,服务 Electron/Tauri 宿主;纯 Web 下拖动属性为无害空操作,组件退化为应用外壳语义(与 oas-app-bar 的页面级 role="banner" 分工)。

基础用法 ​

title / subtitle 设置居中标题与副标题(文档状态等);window-actions 以逗号分隔声明内建窗口操作钮(minimize,maximize,close 子集),点击派发 oas-window-action(组件只发事件,宿主接 Electron/Tauri API)。

标题 + 副标题 + 窗口操作

点右上窗口操作钮,观察事件反馈(组件不执行窗口操作)。

拖动契约(drag) ​

drag 布尔属性把整栏设为窗口拖动区(写 -webkit-app-region: drag + data-tauri-drag-region,Electron/Tauri 宿主生效);枚举式自动 no-drag 常用交互子件——原生交互元素、内置交互组件(button/input/segmented/toolbar/scope-bar/knob 等)与 [data-no-drag] 标记元素都可正常点击,不会被拖动区吞掉;未枚举的宿主 oas-* 子件请自行加 [data-no-drag]。纯 Web 下为无害空操作。

拖动区内按钮可点(no-drag 自动生效)

点我操作

文档井(editable) ​

editable 布尔属性把标题变成可编辑输入(Enter 或失焦提交,Esc 取消回滚);提交派发 oas-title-change,title 由组件吸收缓存(title 是原生全局属性,渲染进标题区后即从宿主移除,防原生 tooltip 重复干扰),宿主经事件同步。编辑中外部重写 title 会终止编辑(外部状态优先)。

可编辑文档标题

编辑标题后 Enter 提交,观察 oas-title-change 与 title 属性回写。

尺寸两档(size) ​

size="compact"(默认,34px)/ size="large"(68px)两档栏高;large 下控件保持紧凑(只动栏高)。

compact / large 对照

安全区(原生窗口控件防压) ​

Windows window controls overlay(WCO)等宿主的原生窗口控件可能占据栏体两端:用 leading-inset / trailing-inset 属性让出对应区段(等价于覆写 --oas-titlebar-leading-inset / --oas-titlebar-trailing-inset 变量,缺省两侧各 space-2(8px),内容不顶边)。WCO 场景可直接消费 env(titlebar-area-*) 环境变量(非 WCO 环境回落 space-2 无影响):

css
oas-titlebar {
  --oas-titlebar-leading-inset: env(titlebar-area-x, 0px);
  --oas-titlebar-trailing-inset: calc(100% - env(titlebar-area-width, 100%) - env(titlebar-area-x, 0px));
}

插槽 ​

slot="leading"(品牌/交通灯)、slot="center"(交互内容,覆盖标题/文档井)、slot="title"(富标题)、slot="trailing"(窗口操作之外的末端内容)。

插槽组合

OAS Studio
scene-04.oas已同步

RTL ​

容器 dir="rtl" 下组件自动镜像:data-rtl 钩子 + 全逻辑属性布局。

RTL 镜像

macOS 交通灯 ​

在 slot="leading" 放内建 oas-traffic-lights(关闭 / 最小化 / 最大化 三圆点,悬停显符号),配合居中标题即得 macOS 形态;点击派发 oas-window-action(与内建 window-actions 同一契约)。

macOS 交通灯 + 居中标题

点交通灯查看 oas-window-action 反馈

API ​

oas-titlebar ​

属性 ​

属性说明类型默认值
drag整栏设为窗口拖动区(写 -webkit-app-region: drag + data-tauri-drag-region,Electron/Tauri 宿主生效;纯 Web 下无害空操作);枚举式自动 no-drag 常用交互子件,未枚举的宿主子件用 [data-no-drag] 显式退出boolean—
editable文档井标题可编辑:Enter 或失焦提交(派发 oas-title-change 并更新吸收缓存),Esc 取消回滚;编辑中外部重写 title 即终止编辑boolean—
leading-inset安全区:leading 端原生控件防压(CSS 长度;亦可直接覆写 --oas-titlebar-leading-inset)——
size高度档:compact(默认,34px)/ large(68px,控件保持紧凑);非法值回落 compact 并告警一次(同值去重)stringcompact
subtitle副标题 / 文档状态(已编辑时间等)string—
title居中标题文本(slot="title" 有内容时覆盖)。原生全局属性同名——渲染进标题区后即从宿主吸收移除(防原生 tooltip 重复干扰),渲染由组件内缓存驱动;清空/重设请显式写 title 属性string—
trailing-inset安全区:trailing 端原生控件防压(CSS 长度;亦可直接覆写 --oas-titlebar-trailing-inset)——
window-actions内建窗口操作钮子集(逗号分隔:minimize,maximize,close);点击派发 oas-window-action,组件不执行窗口操作string—

事件 ​

事件说明
oas-title-change文档井提交(Enter/失焦)且值有变化时派发;detail { title },吸收缓存同步更新(title 属性不常驻宿主)
oas-window-action点击内建窗口操作钮时派发;detail { action }(minimize/maximize/close);组件只发事件,宿主接 Electron/Tauri API

插槽 ​

名称说明
center中央交互内容通道(有内容时覆盖标题/文档井,如文档标签组合)
leading标题前置自定义区(品牌 / macOS 交通灯由宿主传入)
title标题富内容通道(覆盖 title 属性文本)
trailing末端自定义区(窗口操作钮之外)

CSS 变量 ​

CSS 变量默认值
--oas-titlebar-bgcolor-mix(in srgb, var(--oas-color-text-primary) 5%, var(--oas-color-bg))
--oas-titlebar-heightvar(--oas-titlebar-compact-height, 34px)
--oas-titlebar-leading-insetvar(--oas-space-2)
--oas-titlebar-trailing-insetvar(--oas-space-2)

oas-traffic-lights ​

属性 ​

属性说明类型默认值
disabled全禁:三点均不可点(原生 disabled + 半透明)boolean—

事件 ​

事件说明
oas-window-action点击交通灯时派发;detail { action }(minimize/maximize/close);组件只发事件,宿主接 Electron/Tauri API

CSS 变量 ​

CSS 变量默认值
--oas-traffic-lights-close#ff5f57
--oas-traffic-lights-gap8px
--oas-traffic-lights-maximize#28c840
--oas-traffic-lights-minimize#febc2e
--oas-traffic-lights-size12px
--oas-traffic-lights-symbolrgba(0, 0, 0, 0.55)

基于 MIT OR Apache-2.0 双许可发布