Skip to content

n-tag 标签 ​

行内小标签,用于状态标注、分类标记、筛选条件回显。view 为根,文字走 text 或默认插槽;底色与描边走显式色调类(填充 n-tag--primary、镂空 n-tag--plain-primary),文字墨色行内指定,不依赖样式继承。

  1. closeable 只负责显示关闭图标并派发 close 事件,组件不自行隐藏——是否移除标签由你在回调里用 v-if 决定
  2. 标签宽度随内容收缩;放进纵向布局会被交叉轴拉宽,按横向行容器使用是行内标签的常态
  3. 关闭图标用内置图标字体渲染;形态走 shape 单选(square / round / mark),一次只选一种,无组合歧义
  4. light 是浅色调(类型色低透明度底 + 类型色文字);与 plain 同传时镂空生效

平台兼容性 ​

App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序
√ √ √ × × × ×

API ​

属性 ​

参数 说明 类型 默认值 可选值
text 标签文字(便捷写法,内容复杂时改用默认插槽;传了 text 插槽就让位) String "" -
type 标签类型(功能色调,决定底色/描边/文字色) String primary primary<br/>success<br/>warning<br/>error<br/>info
size 标签尺寸 String normal large<br/>normal<br/>small<br/>mini
plain 镂空:透明底,边框与文字取类型色;与 light 同传时镂空生效 Boolean false -
light 浅色调:类型色低透明度底 + 类型色文字(无边框);与 plain 同传时 plain 生效 Boolean false -
shape 形态单选:square 默认小圆角 / round 全圆角胶囊 / mark 标记形(右半圆左直角,贴边排版用) String "square" square<br/>round<br/>mark
closeable 显示关闭图标,点击派发 close 事件(组件不自行隐藏) Boolean false -
text-style 微调标签文字的行内样式,如 "font-weight:600"(页面 class 打不进组件内部) String "" 与 css 相同
custom-class 挂到根节点的额外 class(类需定义在组件样式表内) String "" -
custom-style 根节点行内样式,如 "margin-right:8px" 用于和其他标签排间距 String "" 与 css 相同

事件 ​

事件名 说明 回调参数
close 点击关闭图标时触发(组件不自行隐藏,由使用者在回调里移除标签) 事件对象

插槽 ​

插槽名 说明
default 标签内容(图标与文字自由组合);传了 text 属性时插槽让位

主题令牌 ​

令牌 默认值 说明
--n-tag-height 24px 常规档高度(lg/sm/mini 档同名后缀,见 variable.scss)
--n-tag-font-size 12px 常规档文字字号(各档位同名后缀)
--n-tag-padding-x 10px 常规档左右内边距(各档位同名后缀)
--n-tag-radius-square 8px 默认圆角
--n-tag-radius-circle 999px 胶囊圆角
--n-tag-close-gap 4px 文字与关闭图标的间距

$n-tag-radius-mark*(mark 半圆半径)与 $n-tag-light-alpha(浅色底透明度)只支持编译时覆盖(uni.scss 同名覆盖):前者须写进 border-radius 多值简写、后者须参与 rgba 合成,多值/合成里嵌运行时 var() 各端解析不可靠。

实现说明 ​

与参考实现对照的取舍(同类组件功能面取并集、冲突从使用者视角择优融合)

机制 参考做法 本库做法 分歧理由
配色形态 三态单 prop(dark/light/plain)或镂空布尔 实底默认 + plain / light 布尔 与全库布尔风格一致(n-button plain 同款);镂空与浅色同传时镂空优先(描边是更强的显式意图)
浅色底 类型色固定透明度合成 rgba($n-color-*, $n-tag-light-alpha) 编译期合成 rgba 与运行时 var() 无法叠加;文字色仍走运行时令牌
图标 图标名 prop(内部渲染固定尺寸) 默认插槽 + n-icon 自由组合 插槽是超集(图标名/色/字号/位置全可控);标签宽度随内容收缩,纯图标插槽无方形声明需求
关闭行为 点击即自隐藏(内部隐藏态/show prop) 只派发 close 事件,不自行隐藏 显式优于隐式;v-for 场景回调里闭包捕获条目定位,比 index 载荷类型安全
关闭热区 热区即图标盒(约 10~16px) 通高 ×(字形 + 6px 右向扩展),字形视觉位置不变 点击容错(高度方向收益最大);扩展量受最小尺寸档右内边距约束,防越出根节点被 App 端裁剪
超长文字 单行省略(nowrap + ellipsis) max-lines(App)+ 省略号 CSS 双通道 App 端走 max-lines 组件属性(lines 属性已废弃,绑了告警)、Web 端框架不消费行数属性由样式兜底(n-text 同款分治);标签是单行元素为品类约定,插槽内容的宽度约束由使用者管理
mark 半圆 单侧圆角标记形态 border-radius 右侧两角取半径、左侧归零(半径 = 高度一半,按档位) 纯圆角实现平台一致;贴边角标场景由使用者在容器上定位标签
尺寸档位 无档位(字号 rpx 直传)或两三档 四档(large/normal/small/mini),高度/字号/内边距成套 行内标签与按钮同构的档位心智;单值字号 prop 会破坏高度档位
自定义色 bgColor / color / borderColor / closeColor 单值 props type 预设 + custom-style / text-style 行内通道 三通道是本库统一定制哲学;行内可一次改多个属性,预设之外的色值同一条通道直达;插槽内容无法继承组件墨色,需要与组件对齐时导出函数 tagInkColor(type, plain, light) 取同源色
细边框 0.5px 毛细边框开关 不收 0.5px 跨端渲染不一致(Web 端非整像素发虚),1px 是全端安全值
点击事件 click(index) 可点选标签 不收 可点选的数据标签物种归 n-data-tag(单选/多选/禁用/互斥全能力),本组件保持纯标注
间距与缩放 margin 四向 / gutter / width / scaleRatio props custom-style 一通道 行内样式超集,避免 prop 膨胀;成组标签间距 readme 示例即此做法
关闭图标内外位 / 关闭色 单参考源有、行为无法核实 不收 加密发行源内部行为不可考;需要完全自定义关闭区时用插槽自建(与该参考源演示页同款做法)

记录 · 思考 · 创作