minidocs

组件与样式

组件从 @minidocs/astro/components 导入。每个组件都会把没有列出的属性原样传给渲染出的元素,class 会和组件自己的 class 合并。

组件

布局

组件 渲染为 参数
Layout.Root <div> 无
Layout.Header <header> end slot 放在右侧
Layout.Title <a> href
Layout.Sidebar <aside> 无
Layout.Main <main> 无
Layout.Aside <details> title:这一栏的标题,收起时也是按钮上的文字
Prose <article> 无

侧边栏

组件 渲染为 参数
Sidebar.Root <nav> id;label:导航的无障碍名称
Sidebar.List <ul> 无
Sidebar.Item <li> 无
Sidebar.Link <a> href;current:是否是当前页面
Sidebar.Label <span> 无
Sidebar.Group 没有 href 或在自己的页面上时是 <details>,否则是 <div> open:初始是否展开;name:同名的分组互斥展开;href:分组自己的页面;current:分组自己的页面是否是当前页面。标题写在 label slot 里
Sidebar.Trigger <button> target:要打开和关闭的 Sidebar.Root 的 id

Sidebar.Link 也接受 open 并忽略它,所以 nav.of(node) 可以展开到任何一个组件上。

本页目录

组件 渲染为 参数
Toc.Root <nav> label
Toc.List <ul> 无
Toc.Item <li> 无
Toc.Link <a> slug:标题的 id

翻页

组件 渲染为 参数
Pager.Root <nav> label
Pager.Link <a> href;rel:prev 或 next
Pager.Label <span> 无
Pager.Title <span> 无

提示框

组件 渲染为 参数
Callout.Root <div role="note"> type:note、tip、important、warning 或 caution,默认 note
Callout.Title <p> 无

搜索

组件 渲染为 参数
Search.Trigger <button> target:Search.Root 的 id;shortcut:快捷键,默认 Mod+K,false 表示没有
Search.Shortcut <kbd> 无
Search.Root <search> id,必填
Search.Dialog <dialog> label
Search.Input <input> label、placeholder
Search.Results <div> label
Search.Idle、Loading、Found、Empty、Error <div> 无
Search.Query、Search.Count <span> 无

交互函数

组件自带交互。自己写 HTML、不用组件时,从 @minidocs/astro/behaviors 导入对应的函数,加到元素上。每个函数都返回一个清理函数。

函数 作用
attachSidebar(root) 记住分组的展开状态和滚动位置,跨页面恢复。分组要带 data-md-sidebar-group
attachTrigger(button) 用按钮打开和关闭 aria-controls 指向的元素,按 Esc 或点击外面时关闭
attachToc(root) 给正在阅读的那一节的链接加上 aria-current="true"。链接是 root 里所有 href 以 # 开头的 <a>
attachSearch(root, { source, render, debounce? }) 运行搜索。debounce 是停止输入多少毫秒后开始搜索,默认 100
splitMarks(html) 把带 <mark> 的 HTML 拆成 { text, marked } 片段,其他标签只保留文字

事件

都会冒泡。

事件 派发在 什么时候 detail
md:sidebar-toggle 侧边栏 用 Sidebar.Trigger 打开或关闭 { open }
md:toc-change Toc.Root 正在阅读的那一节变了 { link }
md:search-open Search.Root 对话框打开 无
md:search-close Search.Root 对话框关闭 无
md:search-select Search.Root 选中了一个结果 { option, query }
md:search-error Search.Root source 抛出了错误 { error, query }

CSS 变量

默认样式的变量都定义在 :root 上,可以在你的样式里覆盖。

变量 作用
--md-color-bg 页面和抽屉的背景
--md-color-heading 标题、加粗文字、悬停时的文字
--md-color-text 正文
--md-color-muted 次要文字,比如目录和列表符号
--md-color-border 导轨、边框、分隔线
--md-color-accent 当前位置和链接,默认和 --md-color-heading 相同
--md-color-hover 悬停时的背景
--md-color-current 当前页面的背景
--md-color-code-bg 代码块的背景
--md-color-note note 提示框的颜色
--md-color-tip tip 提示框的颜色
--md-color-important important 提示框的颜色
--md-color-warning warning 提示框的颜色
--md-color-caution caution 提示框的颜色
--md-font-sans 用了 Layout.Root 时的页面字体
--md-font-mono 代码字体
--md-radius 侧边栏每一项、按钮、图片的圆角
--md-focus-ring 键盘焦点的轮廓
--md-sidebar-font-size 侧边栏的字号
--md-sidebar-item-padding-block 侧边栏每一项上下的内边距
--md-sidebar-item-padding-inline 侧边栏每一项左右的内边距
--md-sidebar-indent 嵌套层级的导轨离上一级的距离
--md-sidebar-rail-gap 导轨和子项之间的距离
--md-toc-font-size 目录的字号
--md-toc-indent 目录每一层的缩进
--md-prose-font-size 正文字号
--md-prose-line-height 正文行高,默认 1.75
--md-header-height 标题栏的高度,侧边栏和目录的吸顶位置也由它决定
--md-layout-sidebar-width 侧边栏一栏的宽度
--md-layout-main-width 正文一栏的最大宽度
--md-layout-aside-width 本页目录一栏的宽度
--md-layout-drawer-width 窄屏下抽屉的宽度

class 和状态

class 元素
.md-layout Layout.Root
.md-layout-header Layout.Header
.md-layout-title Layout.Title
.md-layout-sidebar Layout.Sidebar
.md-layout-main Layout.Main
.md-layout-aside Layout.Aside
.md-prose Prose
.md-sidebar Sidebar.Root
.md-sidebar-list Sidebar.List
.md-sidebar-item Sidebar.Item
.md-sidebar-link Sidebar.Link
.md-sidebar-label Sidebar.Label
.md-sidebar-group Sidebar.Group
.md-sidebar-group-title 分组的标题,可能是链接,也可能是 <summary>
.md-sidebar-trigger Sidebar.Trigger
.md-toc Toc.Root
.md-toc-list Toc.List
.md-toc-item Toc.Item
.md-toc-link Toc.Link
.md-pager Pager.Root
.md-pager-link Pager.Link
.md-pager-label Pager.Label
.md-pager-title Pager.Title
.md-callout Callout.Root,以及 :::type 和 > [!TYPE] 语法
.md-callout-title Callout.Title,以及指令语法的标题
.md-search Search.Root
.md-search-trigger Search.Trigger
.md-search-shortcut Search.Shortcut
.md-search-dialog Search.Dialog
.md-search-input Search.Input
.md-search-results Search.Results
.md-search-idle、-loading、-found、-empty、-error 各个状态组件
.md-search-query、.md-search-count Search.Query、Search.Count
状态 选择器
当前页面 [aria-current="page"]
目录里正在阅读的标题 .md-toc-link[aria-current="true"]
当前页面所在的那一项 .md-sidebar-item:has(> [aria-current])
分组展开或收起 .md-sidebar-group[data-state="open"]、[data-state="closed"]
侧边栏打开或关闭 .md-sidebar[data-state="open"]
外部链接 .md-sidebar-link[data-external]
上一页或下一页 .md-pager-link[rel="prev"]、[rel="next"]
提示框的类型 .md-callout[data-type="tip"] 等
搜索的状态 .md-search[data-status="found"] 等,查询进行中时带 aria-busy
搜索结果里选中的选项 [role="option"][aria-selected="true"]
本页目录
搜索范围
输入关键词开始搜索