关于在弹出框中做点击按钮定位至某一位置的功能

今天做了一个功能,在弹出框中做一个点击上面的标签按钮可以定位到下面的位置

上图

 

 

 

 

 

 

复制代码
 <el-select
      style="width: 100px"
      v-model="data.cname"
      popper-class="selectStyle"
      size="small"
      placeholder="请选择"
    >
      <div style="height:70px">
        <el-input v-model="input" size="mini" placeholder="请输入内容" />
        <!--循环遍历下拉框中的按钮-->
        <el-button v-for="(it,i) in selectData" :key="i" @click="jumpClick('#group'+i)" size="mini">{{it.label}}</el-button>
      </div>

      <div  style="overflow: auto;height: 340px">
        <el-option-group
          v-for="(group,index) in selectData"
          :id="'group'+index"   // 给位置放id
          :key="group.label"
          :label="group.label"
        >
          <el-option
            v-for="item in group.options"
            :key="item.id"
            :label="item.cname"
            :value="item.id"
          />

        </el-option-group>
      </div>

    </el-select>
复制代码

数据格式参考elementui的select

复制代码
 searchDom(){
      let dom
      // 循环获取所有的弹框
      for (let j = 0; j <document.querySelectorAll('.selectStyle').length ; j++) {
        // 获取所有的style  getComputedStyle()这个方法可以获取dom元素的所有样式,具体用法可以百度一下
        var divclass= getComputedStyle(document.querySelectorAll('.selectStyle')[j])
        // 寻找显示的那个弹框
        if(divclass.display=='block'){
          dom = document.querySelectorAll('.selectStyle')[j]
        }
      }
      return dom
    },
    // 点击跳转至当前锚点
    jumpClick(i){

      let dom
      dom = this.searchDom()
      // 在弹框的dom中寻找id
      dom.querySelector(i).scrollIntoView(true)
    },
复制代码

因为弹出框是在dom结构外,body结构内的,而且每打开一个弹框都会在body增加一个dom,

所以主要问题是如何获取显示弹框的dom,一开始走了弯路,想要在dom树种删除dom,结果失败了,因为没法保证删除时机,

后来思考寻找这每个弹出框dom的不同点,

显示的弹框的dom样式上的display为block,隐藏的为none,所以以这个为突破口。获取所有的弹出框(这边给弹出框加上了自定义类名)。

然后遍历获取每个弹出框的样式,并判断它的display样式是否为block(显示),

如果为(block)显示则就是我们要找的弹出框,然后在获取弹框内的做标记的id的dom,最后再用 scrollIntoView(true)滚动过去

 

posted @   Harry宗  阅读(138)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示