react、vue、jq页面滚动到指定元素-锚点

react、vue、jq页面滚动到指定元素-锚点

相对普通a标签的锚点跳转,没缓动效果,太生硬
推荐使用scrollIntoView()方法

最常见使用方式:

  const scrollToEle = (ele) => {
    let getEle = document.getElementById(ele);
    getEle && getEle.scrollIntoView({ behavior: 'smooth' });//建议判断元素是否存在 再执行滚动
  };

  //若页面(盒子)无法滚动,设置下页面(盒子)可滚动!
  //若无法滚动到页面最底端或最顶端,审查元素布局

调用:scrollToEle( 元素id )

参数说明

参数参数说明备注
behavior“auto”, “smooth”,"instant"之一。默认为 “auto”定义动画过渡效果一般用“smooth”
block“start”, “center”, “end”, 或 "nearest"之一,默认为 “start”定义垂直方向的对齐一般用不到
inline“start”, “center”, “end”, 或 "nearest"之一。默认为 “nearest”定义水平方向的对齐一般用不到

调用:

ele.scrollIntoView({behavior: "instant", block: "end", inline: "nearest"})

浏览器兼容性

在这里插入图片描述
参考文档:
https://developer.mozilla.org/zh-CN/docs/web/api/element/scrollintoview

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
React中设置锚点与普通的HTML页面类似,但需要注意一些细节。下面是在滚动的div中设置锚点的步骤: 1. 给需要设置锚点元素添加一个唯一的ref属性,例如: ```jsx <div ref={el => this.section1 = el}>这是第一部分的内容</div> <div ref={el => this.section2 = el}>这是第二部分的内容</div> <div ref={el => this.section3 = el}>这是第三部分的内容</div> ``` 2. 在页面中创建一个指向该元素锚点链接,例如: ```jsx <a href="#" onClick={() => this.scrollTo(this.section1)}>跳转到第一部分</a> <a href="#" onClick={() => this.scrollTo(this.section2)}>跳转到第二部分</a> <a href="#" onClick={() => this.scrollTo(this.section3)}>跳转到第三部分</a> ``` 注意,在React中,我们需要使用onClick事件来监听锚点链接的点击事件,而不是使用普通的<a>标签。 3. 在滚动的div组件中,使用ref属性引用该元素,并且监听scroll事件。然后,实现一个scrollTo方法,该方法可以将页面滚动指定元素的位置。 ```jsx class ScrollableDiv extends React.Component { scrollTo = (ref) => { if (ref) { ref.scrollIntoView({ behavior: "smooth" }); } } render() { return ( <div className="scrollable" onScroll={this.handleScroll}> <div ref={el => this.section1 = el}>这是第一部分的内容</div> <div ref={el => this.section2 = el}>这是第二部分的内容</div> <div ref={el => this.section3 = el}>这是第三部分的内容</div> </div> ); } } ``` 在该例子中,我们使用scrollIntoView方法将页面滚动指定元素的位置,并且将滚动的过程设置为平滑的。 这样,我们就可以在React中实现在滚动的div中设置锚点的功能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值