当前位置: 首页 > wzjs >正文

汽车保养网站模板seo引擎优化平台培训

汽车保养网站模板,seo引擎优化平台培训,住房和城乡建设部政务服务官网,山西今日疫情最新情况需求:现在需要两个表格,为了方便对比左右的数据,需要其中一边的表格滚动时,另一边的表格也跟着一起滚动,并且保持滚动位置的一致性。具体如下图所示。 实现步骤: 确保两个表格的宽度一致:如果两…

需求:现在需要两个表格,为了方便对比左右的数据,需要其中一边的表格滚动时,另一边的表格也跟着一起滚动,并且保持滚动位置的一致性。具体如下图所示。

实现步骤:

  1. 确保两个表格的宽度一致:如果两个表格的宽度不一致,可能会导致滚动条的位置不同步。确保两个表格的宽度相同(数据内容超出表格行的宽度可以省略显示)或根据需要调整。

  2. 使用相同的滚动容器:确保两个表格的滚动容器具有相同的高度,这样它们的滚动行为才会同步。

  3. 同步滚动事件:在两个表格上监听滚动事件,并在事件触发时同步另一个表格的滚动位置。

HTML结构:

创建一个包含两个表格的容器,然后给容器一个固定的高度(因为要实现滚动必须要内容超过高度了才会滚动)。

<template><div class="container-box"><div class="flex table-box"><!-- 左边表格 --><div class="left-table" ref="leftTableWrapper"><el-table:data="LeftTableData"borderref="leftTableRef"style="width: 100%"height="100%":fit="true"header-row-class-name="header-row":cell-style="{'font-size': '12px',color: '#666666',height: '40px',}"><template #empty><div class="custom-empty"><el-empty:image="`${$global.imageBaseUrl}/ledger/billProcessing/icon_nodata.png`"description="暂无数据"/></div></template><el-table-columnlabel="表头1"prop="left1"align="center"min-width="150"/><el-table-columnlabel="表头2"prop="left2"align="center"width="100"/></el-table></div><!-- 右边表格 --><div class="right-table" ref="rightTableWrapper"><el-table:data="rightTableData"borderref="rightTableRef"style="width: 100%"height="100%":fit="true"header-row-class-name="header-row":cell-style="{'font-size': '12px',color: '#666666',height: '40px',}"><template #empty><div class="custom-empty"><el-empty:image="`${$global.imageBaseUrl}/ledger/billProcessing/icon_nodata.png`"description="暂无数据"/></div></template><el-table-columnlabel="表头1"prop="right1"align="center"min-width="150"/><el-table-columnlabel="表头2"prop="right2"align="center"width="100"/></el-table></div></div></div>
</template>

JavaScript逻辑:

  • 模拟左右表格的数据,初始设置100条。

  • 在两个表格上监听滚动事件,并在事件触发时同步另一个表格的滚动位置。

  • 使用nextTick确保DOM更新完成后再同步滚动位置。

  • setupTableScrollSync 函数通过获取 el-table 的 body 容器,给左右表格的滚动事件绑定同步逻辑,避免循环触发(用 isSyncingScroll 标记)。

<script lang="ts" setup>
interface tableInfo {left1?: stringleft2?: stringright1?: stringright2?: string
}
let LeftTableData = ref<tableInfo[]>([])
let rightTableData = ref<tableInfo[]>([])
const leftTableRef = ref()
const rightTableRef = ref()
const leftTableWrapper = ref()
const rightTableWrapper = ref()onMounted(() => {for (let index = 0; index < 100; index++) {let obj = {left1: `表${index + 1}`,left2: `表${index + 1}-1`,}let obj2 = {right1: `表${index + 1}`,right2: `表${index + 1}-1`,}LeftTableData.value.push(obj)rightTableData.value.push(obj2)}// 表格滚动同步nextTick(() => {setupTableScrollSync()})
})// 滚动同步实现
let isSyncingScroll = falsefunction setupTableScrollSync() {// 获取表格body的滚动容器const getTableBodyWrapper = (tableRef: any) => {// el-table exposes $el, then .querySelector('.el-scrollbar__wrap')// 兼容 el-table 2.x/3.xif (!tableRef?.value) return null// 先找新版classlet body = tableRef.value.$el.querySelector('.el-scrollbar__wrap')if (!body) {// 旧版classbody = tableRef.value.$el.querySelector('.el-table__body-wrapper')}return body}const leftBody = getTableBodyWrapper(leftTableRef)const rightBody = getTableBodyWrapper(rightTableRef)if (!leftBody || !rightBody) return// 解绑旧的监听,防止重复leftBody.onscroll = nullrightBody.onscroll = nullleftBody.onscroll = (e: Event) => {if (isSyncingScroll) returnisSyncingScroll = truerightBody.scrollTop = leftBody.scrollTopisSyncingScroll = false}rightBody.onscroll = (e: Event) => {if (isSyncingScroll) returnisSyncingScroll = trueleftBody.scrollTop = rightBody.scrollTopisSyncingScroll = false}
}
</script>

 CSS 样式:

<style lang="scss" scoped>
.container-box {background-color: #fff;border-radius: 4px;margin: 16px;height: calc(100vh - 100px);padding: 24px;.table-box {height: calc(100% - 465px);.left-table {margin-right: 16px;}.left-table,.right-table {:deep(.header-row th) {background-color: #f5f5f5;text-align: center;}}}
}
</style>

想要实现表格同步滚动,其实还有一个办法,就是用一个表格来实现(前提是数据是放在一个数组里的) ,然后中间想要空隙,通过CSS样式为表格的某些行或列添加间隔,这种方法实现简单,无需处理滚动逻辑。如果需要真正的固定列+滚动列效果,推荐用两个表格来实现;如果只是视觉分隔,一个表格来实现更简单。

http://www.dtcms.com/wzjs/19389.html

相关文章:

  • 湖南正规竞价优化服务优化的近义词
  • 做网站如何宣传百度快照优化的优势是什么
  • 池州网站制作优化seo外包方案
  • 网站外链建设实例百度关键词自然排名优化公司
  • 外链网站有哪些制作网站的基本步骤
  • 深圳网站制作 公司数据分析师需要学哪些课程
  • php做音乐网站兔子bt樱桃搜索磁力天堂
  • 从公众角度审视政府的网站建设北京seo服务商找行者seo
  • 什么是网站建设与优化百度关键词怎么优化
  • 网站建设需要提供的资料文档优化大师如何删掉多余的学生
  • 涂料网站模板seo点击工具帮你火21星热情
  • 怎样做淘宝的导购网站推广深圳门户网站
  • 注册网站是什么意思广告宣传网站
  • 接任务做兼职的的网站外贸推广平台有哪几个
  • 广告设计模板网站关键词投放
  • 镇江网站设计多少钱企业网站开发制作
  • 济南企业营销型网站建设抖音的商业营销手段
  • app案例网站关键词优化软件排行
  • 做网站首页ps分辨率多少百度人工服务热线24小时
  • 阿里巴巴国际站跨境电商平台四川自助seo建站
  • 怎么看网站谁做的如何制作一个网页链接
  • 出售企业网站备案资料网站seo推广多少钱
  • 做网销的网站优化网站性能监测
  • 和镜像网站做友链友链大全
  • 北京网站优化公司哪里稳定重庆百度竞价推广
  • 钉钉企业注册流程七台河网站seo
  • 外贸流程中有哪些主体单位邯郸seo推广
  • 020网站建设和维护费用日本搜索引擎naver入口
  • 贵州省城市建设厅网站营销网络是什么
  • 网页设计工作目标seo网站排名优化公司哪家好