链接
本页内容
链接就是带上本库下划线处理和配色的锚点。它以两个名字导出——link 和 textLink——因为 link 同时也是 javascript-to-html 的 <link> 元素,把两者用同一个名字导入会是语法错误。请用 textLink,或者把整个库作为命名空间导入。
基础链接
先读一读文档再开始。
text('先读一读', link({ href: '/zh/docs' }, '文档'), '再开始。')颜色
stack({ direction: 'row', gap: 'lg', wrap: true },
link({ href: '#', color: 'primary' }, 'Primary'),
link({ href: '#', color: 'neutral' }, 'Neutral'),
link({ href: '#', color: 'success' }, 'Success'),
link({ href: '#', color: 'warning' }, 'Warning'),
link({ href: '#', color: 'danger' }, 'Danger'),
)低调样式
低调链接会继承周围的文字颜色,只在悬停时才显示下划线——适合那种每行都加下划线反而变成噪音的链接列表。
stack({ gap: 'xs' },
link({ href: '/zh/docs/routing', subtle: true }, '路由'),
link({ href: '/zh/docs/data', subtle: true }, '数据加载'),
link({ href: '/zh/docs/assets', subtle: true }, '资源与样式'),
)外部链接
external 会加上 target="_blank" 以及必须随之而来的 rel。请在链接文字里说明它会开新标签页,或者加一段视觉上隐藏的说明——毫无预告地弹出新标签页会让人不知所措。
这个库发布在 npm(在新标签页中打开) 上。
text(
'这个库发布在 ',
link({ href: 'https://www.npmjs.com/package/sitelo', external: true },
'npm',
visuallyHidden('(在新标签页中打开)'),
),
' 上。',
)在段落里
sitelo 构建在 Vite 之上,用 javascript-to-html 渲染,而且除非你主动要求,否则不会往浏览器发任何东西。
text({ variant: 'lead' },
'sitelo 构建在 ',
link({ href: 'https://vite.dev', external: true }, 'Vite'),
' 之上,用 ',
link({ href: 'https://ht.js.org', external: true }, 'javascript-to-html'),
' 渲染,而且除非你主动要求,否则不会往浏览器发任何东西。',
)什么时候该改用按钮
链接负责跳转,按钮负责执行操作。如果它改变的是页面上的状态、而不是把读者带去别处,那它就该是 button();如果它确实是跳转、但外观要像按钮,那就给 button() 一个 href,底下渲染出来的仍是锚点。
stack({ direction: 'row', gap: 'md', align: 'center', wrap: true },
link({ href: '/zh/docs' }, '会跳转的链接'),
button({ href: '/zh/docs', variant: 'outline' }, '长得像按钮的链接'),
button({ variant: 'link' }, '长得像链接的按钮'),
)属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
href | string | — | 指向哪里。 |
color | 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'primary' | 取用哪一套配色。 |
subtle | boolean | false | 继承周围颜色;只在悬停时加下划线。 |
external | boolean | false | 加上 target="_blank" 和 rel="noopener noreferrer"。 |