pnpm install
pnpm run dev
/* 生成指定数量的标签。 */
generateTags(numTags: number): TagsInter[]
/* 生成指定数量的新闻,并随机附加标签。 */
generateNews(numNews: number, tags: TagsInter[]): NewsInter[]
这是一个动态标签组件,适用于需要标签输入和筛选的应用场景。通过其简洁的界面和强大的功能,用户可以方便地选择、删除、查看和管理多个标签。
-
根据容器的宽度自动调整显示的标签数量。对于不能完全展示的标签,会自动隐藏,并通过 +n 按钮显示剩余标签的数量。用户可以点击 +n 按钮查看所有隐藏的标签,确保用户在有限空间内仍能清晰管理所有标签。
-
能够适应不同的屏幕尺寸,自动调整标签的展示方式,无论是在移动端还是桌面端都能保持最佳的显示效果。同时,组件在窗口大小或标签数量发生变化时,会自动更新显示的标签数量,确保始终提供流畅的用户体验。
-
组件通过 measureTextWidth 方法来模拟生成一个标签元素并测量其实际宽度。该方法将标签元素创建并隐藏在页面上,通过计算标签内容的宽度,获取其实际占用空间。在此基础上 updateDisplayedLabels 方法根据容器的可用宽度,逐个累加标签的宽度,判断当前容器中可以显示的标签数量,超出部分的标签则会折叠成`+n
-
使用了 VueUse 库中的 useElementBounding 方法来实时获取容器宽度变化,并结合 watchDebounced 对标签列表和容器宽度进行监控。通过防抖处理,减少不必要的计算和渲染,提高性能,确保组件在各种场景下都能迅速响应并更新显示。
pnpm run test