avatar

前端/antd锚点踩坑

最近使用了antd vue 版本的锚点功能,发现几个坑点。记录一下!

场景:
使用antd 抽屉页 ,在抽屉页中顶部固定锚点跳转连接

内容部分使用id来给予锚点标识

坑:

由于抽屉页,弹窗页的dom层级均是root根节点以外。滚动容器也不是默认的window。因此锚点不会生效。

必须手动指定滚动容器。

解决方案:
方案并不完美,但确实解决了我的需求问题。

锚点组件提供了一个属性getContainer 需要返回一个 htmlElement 用于绑定滚动容器,生效区间。

vue2中template内无法使用箭头函数,直接调用document 或者 jq的this.$el 来进行htmlElement 的返回

(上述这句话可能不严谨,但是我实验下来确实如此,有没有大神教教我怎么写?)

只好考虑定义一个方法来返回节点
:getContainer = this.getContainer

1
2
3
4
5
6
7
8
9
getContainer() {
let htmlElement
try {
htmlElement = this.$el.querySelector('.customerDrawer .ant-drawer-wrapper-body')
} catch (error) {
htmlElement = document.querySelector('.customerDrawer .ant-drawer-wrapper-body')
}
return htmlElement
}

这里使用try catch是因为 this.$el 可能还是undefine

文章作者: 小黑
文章链接: http://yoursite.com/2023/01/17/前端/antd锚点踩坑/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小黑的小站
打赏
  • 微信
    微信
  • 支付寶
    支付寶
2