表格和树结构双向锚点

该博客介绍了如何实现在左侧树形结构中点击节点时,右侧表格滚动到对应数据行,并高亮显示。同时,当表格滑动时,树形结构会自动高亮与当前行匹配的节点。主要涉及的技术包括Vue的el-tree组件和el-table组件,通过事件监听和数据处理实现了双向同步效果。
摘要由CSDN通过智能技术生成
左边为树,右边为表格。
功能介绍:左边点击树结构对应结点的时候,会跳转到表格对应锚点的位置的数据;右边滑动表格时,鼠标落在表格的哪一行,对应的树结构锚点会高亮。
1.点击树,表格滑动到对应锚点
<el-tree v-loading="loading"
         class="deptTree"
         ref="deptTree"
         highlight-current
         :data="catalogueList"
         accordion
         @node-click="nodeClick"
         :expand-on-click-node="false"
         check-strictly
         :props="deptTree.mapping"
         :node-key="deptTree.mapping.nodeKey"
         :default-expand-all="true">
           <span class="custom-tree-node" slot-scope="{ node }">
            <div style="float: left">
                <span>{{ node.label }}</span>
              </div>
            </span>
        </el-tree>
	//节点点击事件
    nodeClick(data) {
      const selected = this.tableData.find(item => item.index === data.code);
      this.searchMember(selected);
    },
    // 跳转表格指定位置
    searchMember(data) {
      // 遍历表格数据,获取查询的数据
      if (this.tableData && this.tableData.length > 0) {
        // eslint-disable-next-line no-plusplus
        for (let i = 0; i < this.tableData.length; i++) {
          const item = this.tableData[i];
          // 判断查询的数据是否存在,存在则进行定位操作         
           if (item.index === data.index) {
           //需要找到$refs里的bodyWrapper这个属性
            this.$refs.table.getElTable().bodyWrapper.scrollTop = 52 * (i - 1);
            this.$refs.table.setCurrentRow(item);
            break;
          }
        }
      }
    }
2.滑动表格,滑动到的位置的对应锚点的树节点会高亮显示
//el-table中的这个方法
@cell-mouse-enter="enter"
	//遍历树结构
    enter(val) {
      this.enterVal(this.catalogueList, val);
    },
    enterVal(Array, val) {
      Array.forEach(ele => {
        if (val.index === ele.code) {
        	//发现对应锚点,则高亮
          this.$refs.deptTree.setCurrentKey(ele);
        }
        if (ele.children) {
          this.enterVal(ele.children, val);
        }
      });
    }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue锚点定位双向滚动是一种实现在页面中点击锚点链接时,页面能够滚动对应位置的功能。这个功能可以通过监听滚动事件和使用ref属性来实现。首先,在左边的内容模块中给每个模块添加一个ref属性和相同的class类名,以便获取对应的DOM元素。然后,在内容区域添加滑动事件@scroll="handleScroll",当内容区域滑动时触发handleScroll方法。接下来,在右边的锚点链接中添加点击事件@click="goAnchor('anchor-' + index, index)",当点击锚点链接时,调用goAnchor方法获取对应的DOM元素。在goAnchor方法中,可以使用scrollIntoView方法将对应的DOM元素滚动到可视区域内实现双向滚动效果。这样,当点击锚点链接时,页面会滚动对应的位置。 #### 引用[.reference_title] - *1* [vue:实现锚点双向滚动/文章章节联动滚动效果](https://blog.csdn.net/qq_36604536/article/details/126936016)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue 双向锚点实现 简易版(scrollIntoView)](https://blog.csdn.net/weixin_47978760/article/details/127808313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值