标签
标签:普通的彩色标签、可关闭的标签,以及可选中的标签(单选组、多选)。普通标签只要 class="zh-tag" 加颜色类,不需要 zh-tag--x;zh-tag--x 才表示可关闭或可选。新增标签的输入框不在库里,按你的业务自己做。
带行为 核心包 2 个事件
示例
已发布
待审核
草稿
设计
研发
代码
<span class="zh-tag success">已发布</span>
<span class="zh-tag warning">待审核</span>
<span class="zh-tag">草稿</span>
<div id="tag-demo">
<span class="zh-tag zh-tag--x primary"><span>设计</span><button type="button" class="zh-tag-close" aria-label="移除 设计"><i data-i="x"></i></button></span>
<span class="zh-tag zh-tag--x"><span>研发</span><button type="button" class="zh-tag-close" aria-label="移除 研发"><i data-i="x"></i></button></span>
</div>
<div class="zh-tag-group" id="period" role="radiogroup" aria-label="选择周期">
<button class="zh-tag zh-tag--x zh-tag--check" role="radio" aria-checked="true" tabindex="0"><i data-i="check" data-s="12" class="zh-tag-tick"></i>今天</button>
<button class="zh-tag zh-tag--x zh-tag--check" role="radio" aria-checked="false" tabindex="-1"><i data-i="check" data-s="12" class="zh-tag-tick"></i>近 7 天</button>
</div>
<script>
document.getElementById('period').addEventListener('zh:tag-change', function (e) {
console.log(e.detail.value);
});
</script>属性
| 属性 | 用在 | 取值 | 说明 |
|---|---|---|---|
zh-tag | <span>(class) | 可加 primary | success | warning | danger | 普通标签。不加颜色类就是中性灰(适合「草稿」「默认」这类状态);加 zh-tag--x 才有关闭按钮或选中行为 |
zh-tag-close | .zh-tag--x 内的按钮(class) | 无 | 点击后移除所在标签;按钮必须有 aria-label(如「移除 设计」) |
role="radio" | .zh-tag--check | 放在 role="radiogroup" 里 | 单选:点击或方向键切换,roving tabindex |
role="checkbox" | .zh-tag--check | aria-checked="true|false" | 多选:点击切换 |
primary / success / warning / danger / info | .zh-tag | class | 颜色 |
zh-tag--filled / zh-tag--outline / zh-tag--sm / zh-tag--lg | .zh-tag | class | 填充或描边外观、小或大尺寸,可与颜色类组合 |
事件
| 事件 | 触发于 | detail | 说明 |
|---|---|---|---|
zh:tag-remove | 被点击的 .zh-tag | { label, tag } | 移除前触发(冒泡,可取消);调用 preventDefault() 则保留标签 |
zh:tag-change | 单选:radiogroup;多选:被点击的标签 | 单选 { value, values };多选 { value, checked, values } | 选中状态变化时触发(冒泡) |
样式类
zh-tag zh-tag--x zh-tag--check zh-tag-close zh-tag-group
无障碍
- 单选组使用 radiogroup / radio 语义,方向键移动并选中;多选使用 checkbox 语义
- 移除后,如果相邻元素可以聚焦(比如「新增」按钮),焦点会移过去;普通标签本身不可聚焦,所以没有可移的目标时焦点回到页面
- 选中不只靠颜色:选中的标签左侧显示对勾
常见问题
标签是什么?
标签:普通的彩色标签、可关闭的标签,以及可选中的标签(单选组、多选)。普通标签只要 class="zh-tag" 加颜色类,不需要 zh-tag--x;zh-tag--x 才表示可关闭或可选。新增标签的输入框不在库里,按你的业务自己做。
怎么使用标签?
先在页面里引入 zhaoui.css 和 zhaoui.js(放在 </body> 前,不加 defer),再照本页「用法」里的标记书写。
标签有哪些事件?
zh:tag-remove(移除前触发(冒泡,可取消);调用 preventDefault() 则保留标签);zh:tag-change(选中状态变化时触发(冒泡))。
标签支持键盘和读屏吗?
单选组使用 radiogroup / radio 语义,方向键移动并选中;多选使用 checkbox 语义;移除后,如果相邻元素可以聚焦(比如「新增」按钮),焦点会移过去;普通标签本身不可聚焦,所以没有可移的目标时焦点回到页面;选中不只靠颜色:选中的标签左侧显示对勾。
标签需要依赖框架吗?
不需要。ZhaoUI 是原生 HTML、CSS 和 JavaScript,不依赖 jQuery、Vue 或 React。