【资料图】
公司展示大屏需要写滚动表格,通过滚动播放数据,自己随便摸了一个基于动画的自动滚动表格
根据每行的大小和设置的每行滚动时间设置滚动位置,动态添加动画,并把数组第一项移动到最后一项,并订阅该动画结束的事件,在结束时循环执行该操作。
{{ props.titleMapping?.get(item) ?? item }} {{ Object.keys(item.data).includes(key) ? item.data[key] ? item.data[key] : props.undefinedPlaceholder : props.undefinedPlaceholder }} <script setup lang="ts">import BaseBox from "./BaseBox.vue";import { defineProps, withDefaults, onMounted, computed, ref, watch,} from "vue";const props = withDefaults( defineProps<{ // 属性名翻译为标题,默认值 属性名列表 titleMapping?: Map; // 列宽,与 grid-template-columns 格式,默认值 repeat(${props.displayTitles?.length ?? Object.keys(props.list[0]).length}, 1fr) columnSizes?: string; // 列表 list: Array; // 展示哪些标题,默认值 全部展示 displayTitles?: Array; // 走完每一行的时间,默认值 2300 ms interval?: number; // 是否显示标题行,默认值 true noTitle?: Boolean; // 属性无参数时替换为某字符串,默认值 -- undefinedPlaceholder?: string; // 鼠标进入时暂停,默认值 true pauseWhenMouseEnter?: Boolean; }>(), { interval: 2300, noTitle: false, undefinedPlaceholder: "--", pauseWhenMouseEnter: false, });const innerList = ref>( props.list.map((item, index) => ({ id: index, data: item })));const container = ref();onMounted(() => { animate(true);});// 监控数据列表更新watch( () => props.list, () => { innerList.value = props.list.map((item, index) => ({ id: index, data: item, })); });// 计算列大小const columnSize = computed(() => { return ( props.columnSizes ?? `repeat(${ props.displayTitles?.length ?? Object.keys(props.list[0]).length }, 1fr)` );});// 进行动画const animation = ref();const animate = (isStart = false) => { // 计算动画高度 let height = 0; if (!isStart) { height = -container.value!.children[1].getBoundingClientRect().height; // 移动数组第一个到最后一个 let temp = innerList.value.shift(); innerList.value.push(temp!); } else { height = -container.value!.children[0].getBoundingClientRect().height; } // 进行动画 animation.value = container.value!.animate( [ { top: `${height}px`, }, ], { duration: props.interval, iterations: 1, } ); // 监听动画完成后,重新开始动画 animation.value.addEventListener("finish", () => animate(false));};</script>
X 关闭
2021年北向资金流入超4300亿元 外资热情拥抱中国资产
尽管面临疫情反复等多重不利因素,外资在2...北交所董事长徐明:北交所成立以来股票平均上涨98.9%
北京证券交易所董事长徐明8日表示,北交所...宁吉喆:2021年中国GDP将连续第二年超百万亿元
中国国家发改委副主任兼中国国家统计局...中国黄金消费市场渐回暖 “古法金”饰品获年轻消费者青睐
2022世界珠宝发展大会正在海口举行。8日在...观察:中国首条民营控股高铁开通之“时”与“势”
杭台高铁首趟列车即将发车。张煜欢摄1月8...中国生态环境保护实现“十四五”起步之年良好开局
中国生态环境部7日在北京召开2022年全国...人社部发布信用管理师国家职业技能标准
近日,人力资源和社会保障部对外发布了《...云南永善佛滩顺河梯级电站全面推进建设
日前,云南省永善县顺河村举行了佛滩顺河...中老铁路的背后 “税务专车”一路同行
2021年12月3日中老铁路正式开通运营,仅需...杭州拉开了推动共同富裕变革的扎实探索 擦亮共享发展成果的底色
2021年,杭州拉开了推动共同富裕变革性实践的扎实探索。一年多来,...Copyright © 2015-2022 青年建筑工程网版权所有 备案号:皖ICP备2022009963号-20 联系邮箱:39 60 291 42@qq.com