打开弹窗树数据多的情况下,自动滚到定位项 vue+tree+定位+scroll滚动

26 篇文章 8 订阅

需求:echarts的x轴添加点击事件,打开弹窗里面是颗树。不仅要自动定位还要定位项始终在可视范围内。
因为数据多的时候,我们要滑动鼠标下拉才能看到最下面的内容。现在的需求就是不管点击哪一项打开弹窗,都要立马就能看见。

 <el-tree
              ref="usertree"
              :data="treeData"
              :filter-node-method="filterNode1"
              @node-click="onSelect1"
              :props="replaceFied1"
              :default-expanded-keys="defaultSelectedKeys"
              node-key="fPkGroupId"
              :highlight-current="true"
              id="fPkGroupId"
            />

在获取树数据的方法里,比较重要的一点是获取选中项的样式名。

     let that = this
 if (that.$refs.usertree) {
            that.$nextTick(() => {
              if (that.treeData && that.treeData.length > 0) {
                that.$refs.usertree.setCurrentKey(that.defaultSelectedKeys[0])
              }
              setTimeout(() => {
                let treeSize1 = $('.treeSize1')
                let parentHeight = $('.treeSize1').height() - 80                             
                let dom = $('.is-current')
              
                if (dom.position().top >= parentHeight) {
                  treeSize1.animate(
                    {
                      scrollTop: dom.position().top
                    },
                    500
                  )
                }
              })
            })
          }
 .treeSize1 {
      position: relative;
      height: 300px;
      overflow: hidden;
      overflow-y: auto;
      // /*menu内置滚动条*/
      &::-webkit-scrollbar {
        width: 0px; /*滚动条宽度,设置宽度不起效果*/
        height: 0px; /*滚动条高度,设置高度不起效果*/
      }
      // /*menu内置滚动条*/
      &::-webkit-scrollbar-track {
        background-color: transparent; /*滚动条的背景颜色*/
      }
      // /*menu内置滚动条*/
      &::-webkit-scrollbar-thumb {
        background-color: transparent; /*滚动条的背景颜色*/
      }
      scrollbar-color: transparent transparent;
      scrollbar-width: thin;     
    }

找选中项的样式名,首先选中项会有选中颜色,在控制台的Elements中找到这一项,经过尝试发现只有.is-current这个类名起作用
在这里插入图片描述
判断它所在位置的高度是否大于或等于可视区的高度。如果条件成立,使用动画效果跳转到取得的位置处

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值