踩坑scrollIntoView

本文详细介绍了Element.scrollIntoView()方法的使用方式及注意事项,包括如何让元素滚动到浏览器窗口的可视区域内,不同参数的含义及应用场景,并给出了具体的React示例。
部署运行你感兴趣的模型镜像

踩坑scrollIntoView

Element.scrollIntoView() 方法让当前的元素滚动到浏览器窗口的可视区域内

页面(容器)可滚动时才有用!

element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); //布尔参数
element.scrollIntoView(scrollIntoViewOptions); //对象参数
alignToTop[可选],目前之前这个参数得到了良好的支持
true元素的顶部将对齐到可滚动祖先的可见区域的顶部。对应于scrollIntoViewOptions: {block: "start", inline: "nearest"}。这是默认值
false元素的底部将与可滚动祖先的可见区域的底部对齐。对应于scrollIntoViewOptions: {block: "end", inline: "nearest"}
scrollIntoViewOptions[可选],目前这个参数浏览器对它的支持并不好,可以查看下文兼容性详情
behavior[可选]定义过渡动画。"auto","instant""smooth"。默认为"auto"
block[可选] "start""center""end""nearest"。默认为"center"
inline[可选] "start""center""end""nearest"。默认为"nearest"
应用场景
  • URL中hash标记的进化
  • 聊天窗口滚动显示最新的消息
  • 往一个列表添加item后滚动显示最新的添加的item
  • 回到顶部(#)
  • 滚动到指定位置(#xxx)
存在的问题

1】如果 父级有 滚动条 ,爷爷也有滚动条,那么会导致 都会动

2】react中使用的问题

想要实现的效果是:左边的列表切换时自动定位,而且右边的消息也需要自动定位

useEffect(() => {
  document
    ?.getElementById('select_item_true')
    ?.scrollIntoView({ behavior: 'smooth', block: 'center' })
  document
    ?.getElementById('badCase_true')
    ?.scrollIntoView({ behavior: 'smooth', block: 'center' })
}, [selectInfo])

在这里插入图片描述

通过setTimeout解决上面问题:

useEffect(() => {
  document
    ?.getElementById('select_item_true')
    ?.scrollIntoView({ behavior: 'smooth', block: 'center' })
  setTimeout(() => {
    document
      ?.getElementById('badCase_true')
      ?.scrollIntoView({ behavior: 'smooth', block: 'center' })
  }, 300)
}, [selectInfo])

在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Qwen3-8B

Qwen3-8B

文本生成
Qwen3

Qwen3 是 Qwen 系列中的最新一代大型语言模型,提供了一整套密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3 在推理、指令执行、代理能力和多语言支持方面取得了突破性进展

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值