Button / 按钮
最常用的 UI 组件之一,用于触发一个即时操作。
特性
符合现代浏览器标准的语义化
支持动态渲染
允许 Hover 状态拥有不同变体
基础用法
Variant
Size
sm
md
lg
Disabled
<template>
<Btn size="md" variant="default">
Button
</Btn>
</template>
动态渲染
通过 is
属性可以动态渲染不同的组件,从而实现按钮形式的链接。
这种用法有许多好处。在桌面端,用户可以使用鼠标中键在新的标签页中打开链接;在移动端,用户可以长按链接实现小窗展现,并可以在多个应用之间的拖拽。
<template>
<Btn is="a" href="https://jannchie.com" target="_blank">
To Jannchie's Blog
</Btn>
</template>
如果你在使用 Nuxt 等 SSR 框架,你可能需要将按钮渲染为 NuxtLink
。它能够获得更好的 SSR 支持。
<template>
<Btn :is="NuxtLink" href="https://jannchie.com" target="_blank">
To Jannchie's Blog
</Btn>
</template>
图标按钮
通过 icon
属性可以实现图标按钮。它与普通按钮的区别在于 padding
会改为四边相同。
<template>
<Btn icon>
<i class="i-tabler-circle-plus" />
</Btn>
</template>
其中图标本身需要由其他库导入。 Roku UI 已经引入了 @unocss/icon,你可以使用 CSS 类名来使用图标。它非常易于管理,并且能获得最好的 SSR 效果,避免图标在刷新载入时的闪烁。不过图标库的容量过大,为了让图标生效,你需要另行下载相应的图标库数据使得它们能够正常显示。
Hover 变体
有时候,我们希望一个按钮在被鼠标悬停时拥有不同的变体。通过组合不同的变体,你可以实现更多的效果。
<template>
<Btn icon>
<i class="i-tabler-circle-plus" />
</Btn>
</template>