需求: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这个类名起作用
判断它所在位置的高度是否大于或等于可视区的高度。如果条件成立,使用动画效果跳转到取得的位置处