TinyVue v3.19.0 正式发布!Tree 组件终于支持虚拟滚动啦!UI 也升级啦,更更符合现代审美~

news/2024/11/13 8:37:09/文章来源:https://www.cnblogs.com/kagol/p/18537677

你好,我是 Kagol,个人公众号:前端开源星球

我们非常高兴地宣布,2024年10月28日,TinyVue 发布了 v3.19.0 🎉。

本次 3.19.0 版本主要有以下重大变更:

  • 所有组件全面升级到 OpenTiny Design 新设计规范,UI 更美观、更符合现代审美。
  • 增加 VirtualTree 虚拟树组件。
  • 增加 VirtualScrollBox 虚拟化容器组件。
  • 增加 Sticky 粘性布局组件。

详细的 Release Notes 请参考:https://github.com/opentiny/tiny-vue/releases/tag/v3.19.0

本次版本共有16位贡献者参与开发,其中 Nowitzki41 / Simon-He95 / BWrong 是新朋友👏

  • Nowitzki41 - 新增贡献者✨
  • Simon-He95 - 新增贡献者✨
  • BWrong - 新增贡献者✨
  • shenjunjian
  • kagol
  • zzcr
  • gimmyhehe
  • GaoNeng-wWw
  • wuyiping0628
  • gweesin
  • James-9696
  • chenxi-20
  • MomoPoppy
  • AcWrong02
  • Davont
  • Youyou-smiles

也感谢新老朋友们对 TinyVue 的辛苦付出!

你可以更新 @opentiny/vue@3.19.0 进行体验!

我们一起来看看都有哪些更新吧!

全面升级新 UI,更符合现代审美

自从 TinyVue 组件库去年开源以来,一直有小伙伴反馈我们的 UI 不够美观,风格陈旧,不太满足现阶段审美。

于是我们花了大量时间对组件 UI 进行优化,全面适配了 OpenTiny Design 新设计规范,并终于在 v3.19.0 正式发布!

整体效果如下:

如果你安装 v3.19.0 版本的 TinyVue 组件库,默认效果就是新设计规范。

# 安装依赖
npm i @opentiny/vue@3.19.0
<script setup lang="ts">
// 引入 TinyVue 的组件
import { TinyButton, TinyAlert } from '@opentiny/vue'
</script><template><div><tiny-button>取消</tiny-button><tiny-button type="primary">确定</tiny-button></div><tiny-alert description="TinyVue 是一套跨端、跨框架的企业级 UI 组件库,支持 Vue 2 和 Vue 3,支持 PC 端和移动端。"></tiny-alert>
</template>

效果图:

新旧 UI 的效果对比,可以阅读以下文章:

  • 焕然一新!TinyVue 组件库 UI 大升级,更符合现代的审美!

增加 VirtualTree 虚拟树组件

说到 Tree 组件的虚拟滚动,还要回到2023年7月12日开发者 zouzhixiang 提交的一个 issue:✨ [Feature]: tree树形控件能增加虚拟滚动功能吗? #317。

现在 Tree 组件终于支持上虚拟滚动功能了!🎉🎉🎉

我们一起来体验下吧!

只需要配置下数据源和高度即可。

<script setup>
import { computed } from 'vue'
import { TinyVirtualTree } from '@opentiny/vue'const treeOp = computed(() => ({nodeKey: 'label',data: data5.value
}))<template><tiny-virtual-treeheight="600":tree-op="treeOp"></tiny-virtual-tree>
</template>

效果如下:

更多 VirtualTree 组件的功能,欢迎到 TinyVue 官网进行体验:https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/virtual-tree

增加 VirtualScrollBox 虚拟化容器组件

我们不仅实现了 Tree 的虚拟滚动,还抽取了一个通用的虚拟滚动组件,可以将该组件用在任意列表类的场景,让大数据列表拥有虚拟滚动的能力,我们以表格组件为例,实现一个水平和垂直方向都能虚拟滚动的表格。

<template><tiny-virtual-scroll-box v-bind="config"><template #default="{ params: { viewRows, viewCols, isScrollX, isScrollY, isTop, isBottom, isLeft, isRight } }"><divv-for="viewRow in viewRows":key="viewRow.key":style="viewRow.style":class="rowClass({ viewRow, isScrollY, isTop, isBottom })"><divv-for="viewCol in viewCols":key="viewCol.key":style="colStyle({ viewRow, viewCol })":class="colClass({ viewCol, isScrollX, isLeft, isRight })"><div class="vs-grid-cell">{{ viewRow.info.raw + ',' + viewCol.info.raw }}</div></div></div></template></tiny-virtual-scroll-box>
</template><script setup>
import { reactive } from 'vue'
import { TinyVirtualScrollBox } from '@opentiny/vue'const genColumn = (total) => {const columns = []const columnSizes = []for (let i = 1; i <= total; i++) {columns.push(`c-${i}`)// 列宽在 120 到 180columnSizes.push(Math.round(120 + Math.random() * 60))}return { columns, columnSizes }
}const genRow = (total) => {const rows = []const rowSizes = []for (let i = 1; i <= total; i++) {rows.push(`r-${i}`)// 行高在 24 到 36rowSizes.push(Math.round(24 + Math.random() * 12))}return { rows, rowSizes }
}// 生成 10000 列
const { columns, columnSizes } = genColumn(10000)
// 生成 20000 行
const { rows, rowSizes } = genRow(20000)const config = reactive({width: 900,height: 400,rowBuffer: 120,columnBuffer: 240,columns,columnSizes,rows,rowSizes,fixedColumns: [[0], [1]],fixedRows: [[0], [1]],spanConfig: [[3, 3, 2, 2]]
})const rowClass = ({ viewRow, isScrollY, isTop, isBottom }) => {return {[viewRow.key]: true,'vs-row': true,'vs-fixed-top-last': viewRow.info.startLast && !isTop && isScrollY,'vs-fixed-bottom-first': viewRow.info.endFirst && !isBottom && isScrollY,'vs-is-last-row': viewRow.info.isLast}
}
const colClass = ({ viewCol, isScrollX, isLeft, isRight }) => {return {[viewCol.key]: true,'vs-cell': true,'vs-fixed-left-last': viewCol.info.startLast && !isLeft && isScrollX,'vs-fixed-right-first': viewCol.info.endFirst && !isRight && isScrollX,'vs-is-last-col': viewCol.info.isLast}
}
const colStyle = ({ viewRow, viewCol }) => {return { height: viewRow.style.height, ...viewCol.style }
}
</script><style scoped>
/* 样式部分省略 */
</style>

效果如下:

虚拟树也可以结合 VirtualScrollBox + Tree 组件进行实现,具体代码可以参考以下链接:

https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/virtual-scroll-box#tree

更多 VirtualScrollBox 组件的功能,欢迎到 TinyVue 官网进行体验:https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/virtual-scroll-box

增加 Sticky 粘性布局组件

Sticky 组件与 CSS 中 position: sticky 属性实现的效果一致,当组件在屏幕范围内时,会按照正常的布局排列,当组件滚出屏幕范围时,始终会固定在屏幕顶部。

“吸顶”效果在某些场景下能够有效提升网页的可用性和用户体验。

  1. 导航栏:Sticky 组件常用于固定页面顶部的导航栏。当用户滚动页面时,导航栏会保持在视口的顶部,方便用户随时访问其他页面链接。这种设计提升了用户体验,尤其是在内容较长的页面中。
  2. 文章标题:在长篇文章中,可以将章节标题设置为 Sticky。当用户滚动到该章节时,标题会固定在视口顶部,帮助用户更好地了解当前阅读的位置和内容结构。

使用起来也非常简单,只需要把需要“吸顶”的元素用 Sticky 组件包裹起来就行。

<tiny-sticky><h2>🎉TinyVue v3.19.0 正式发布,全面升级到新设计规范,让 UI 更符合现代审美,并增加虚拟树、粘性布局等3个新组件~</h2>
</tiny-sticky>

默认是“吸顶”的,还可以配置“吸底”,设置偏移量、层级等。

  • offset:偏移距离,默认为 0px
  • position:吸附位置,可选值有 top(默认) / bottom
  • z-index:元素层级,默认为 100

效果如下:

更多 Sticky 组件的功能,欢迎到 TinyVue 官网进行体验:https://opentiny.design/tiny-vue/zh-CN/smb-theme/components/sticky

联系我们

GitHub:https://github.com/opentiny/tiny-vue(欢迎 Star ⭐)

官网:https://opentiny.design/tiny-vue

B站:https://space.bilibili.com/15284299

个人博客:https://kagol.github.io/blogs

小助手微信:opentiny-official

公众号:OpenTiny

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/830459.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

macOS nginx 编译安装教程

nginx 有多种安装方式 方式一:可以通过包管理器(homebrew)安装,安装较为简单brew install nginx 即可,使用方式查看brew info nginx 方式二:通过源码编译的方式,本篇主要介绍这种安装方式 源码编译安装 1、打卡官方下载页面 https://nginx.org/en/download.html 选择稳定…

财务知识-计提

什么是计提?为什么要计提,常见的计提分录

还在搞传统爬虫吗?2025年用人工智能轻松抓取几乎所有网站

今天,我将介绍一种简单的方法,帮助大家从各种网站上收集数据,搭建一个能够像人在浏览器中操作的网页爬虫。这种爬虫甚至可以在 Upwork 等平台上独立完成一些网页抓取的自由职业任务。 自2024年以来,随着 AI 的发展,网页抓取发生了巨大的变化。以前,大公司如亚马逊或沃尔玛…

终端仿真软件:SecureCRT macOS+Windows电脑安装包

SecureCRT是一款广受好评的终端仿真软件,专为IT专业人员设计。它支持SSH、Telnet、RLogin等多种协议,提供安全的远程访问功能。用户可以通过该软件安全地连接到远程服务器,进行命令行操作、文件传输等任务。SecureCRT还具备脚本自动化、会话管理、多窗口操作等核心功能,其稳…

输入法双拼方案哪个好?

简单介绍下各个方案常见的双拼方案有:小鹤双拼、微软双拼、自然码等,智能 ABC,拼音加加,紫光双拼,国标双拼,甚至可以自定义方案。 本文会简单介绍下各个方案,让读者参考。 ‍ 各输入法支持情况 有位 UP 主做了一张图:可以几乎所有输入法都支持微软双拼,此外小鹤双拼和…

从精准表达到成交绝技,解锁业绩飙升的钥匙

众多人误以为,销售仅凭口才出众便能驾轻就熟,实则不然。关键在于能否精准表达,字字珠玑,直击客户心扉。销售精英实为卓越的交流大师,其衡量标尺在于能否有效说服并触动顾客。面对形形色色的顾客,我们需灵活调整语言风格,即便是同一商品,也应采用多样化的介绍方式。接下…

苹果专用解压缩:BetterZip 5 中文注册安装版(含注册码)

BetterZip 5是一款专为Mac用户设计的压缩与解压软件。它支持多种主流压缩格式,如ZIP、RAR、7-Zip等,并具备文件预览、编辑与加密功能。用户无需解压整个文件即可预览内容,提高了工作效率。同时,它还提供了AES-256加密保护,确保数据安全。BetterZip 5界面简洁直观,易于上手…

新手入门Java自动化测试的利器:Selenium WebDriver

今天我们将深入探讨一款强大的Java自动化测试工具——Selenium WebDriver。在正式介绍Selenium WebDriver之前,让我们首先对Selenium本身进行简要概述,以便更好地理解其背景和功能。 官方学习网站:https://www.selenium.dev/ Selenium 是一个开源的自动化测试框架,WebDrive…

鸿蒙NEXT开发案例:转盘

【1】引言(完整代码在最后面) 在鸿蒙NEXT系统中,开发一个有趣且实用的转盘应用不仅可以提升用户体验,还能展示鸿蒙系统的强大功能。本文将详细介绍如何使用鸿蒙NEXT系统开发一个转盘应用,涵盖从组件定义到用户交互的完整过程。 【2】环境准备 电脑系统:windows 10 开发工…

VMware Tanzu CLI 1.5.0 - VMware Kubernetes 发新版的命令行工具

VMware Tanzu CLI 1.5.0 - VMware Kubernetes 发新版的命令行工具VMware Tanzu CLI 1.5.0 - VMware Kubernetes 发新版的命令行工具 VMware 构建、签名和支持的开源 Kubernetes 容器编排平台的完整分发版 请访问原文链接:https://sysin.org/blog/vmware-tanzu-cli/ 查看最新版…

读数据工程之道:设计和构建健壮的数据系统33未来

未来1. 未来 1.1. 运营的优先级和最佳实践与技术可能会改变,但生命周期的主要阶段会在许多年内保持不变 1.2. 随着组织以新的方式利用数据,将需要新的基础、系统和工作流来满足这些需求 1.3. 如果工具变得更容易使用,数据工程师就会向价值链上游移动,专注于更高级别的工作 …