我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue项目中实现描点跳转scrollIntoView的案例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue项目中实现描点跳转scrollIntoView的案例

Vue实现描点跳转scrollIntoView

方式一:使用a标签#id形式

<a href="#about" rel="external nofollow" >联系我们</a>
 
<div id="about">
    跳转内容
</div>

方式二:scrollIntoView

//需要让页面滑动到指定位置
//首先给元素添加id属性或其他可以获取元素的属性
//通过scrollIntoView方法实现页面跳转
document.getElementById(id).scrollIntoView({ behavior: "smooth" });
 
element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop); // Boolean型参数
element.scrollIntoView(scrollIntoViewOptions); // Object型参数
 
//可选
alignToTop:boolean值类型
true:默认值。元素的顶端将和其所在滚动区的可视区域的顶端对齐。相应的 scrollIntoViewOptions: {block: "start", inline: "nearest"}。
false:元素的底端将和其所在滚动区的可视区域的底端对齐。相应的scrollIntoViewOptions: {block: "end", inline: "nearest"}。
 
//可选
scrollIntoViewOptions :
behavior :定义动画过渡效果,值为auto或smooth。
block :定义垂直方向的对齐,值为start/center/end/nearest。
inline :定义水平方向的对齐,值为start/center/end/nearest。
 
//实例
element.scrollIntoView({behavior: "smooth", block: "end", inline: "nearest"});

使用

<a @click="goButtom">联系我们</a>
 
methods: {
    // 跳转到页面
    goButtom() {
      document.getElementById("about").scrollIntoView({
        behavior: "smooth", // 平滑过渡
        block: "start", // 上边框与视窗顶部平齐。默认值
      });
    },
},
 
 
------------------------------------------二------------------------------------------
 
<div id="pronbit" ref="pronbit">需要移动到的位置</div>
 
//选中id
document.getElementById(e).scrollIntoView({
    behavior: "smooth",  // 平滑过渡
    block:    "start"  // 上边框与视窗顶部平齐。默认值
});
// 选中ref
this.$refs.pronbit.scrollIntoView({
    behavior: "smooth",  // 平滑过渡
    block:    "start"  // 上边框与视窗顶部平齐。默认值
});
 
//要是放在mounted()里执行使用
this.$refs.pronbit.scrollIntoView();//不然只执行一次刷新了也一样
 
//禁止scrollIntoView
this.$refs.pronbit.scrollIntoView(false);

vue遇到scrollIntoView无效问题

官方文档写的简单

Element 接口的scrollIntoView()方法会滚动元素的父容器,使被调用scrollIntoView()的元素对用户可见。

语法:

element.scrollIntoView(); // 等同于element.scrollIntoView(true)
element.scrollIntoView(alignToTop);// Boolean型参数
element.scrollIntoView(scrollIntoViewOptions);// Object型参数

首先容器滚动,然后document.geyElementById或者document.querySelector 获取指定元素,最够元素调用scrollIntoView.

参数

alignToTop可选

一个Boolean值:

  • 如果为true,元素的顶端将和其所在滚动区的可视区域的顶端对齐。相应的 scrollIntoViewOptions: {block: "start", inline: "nearest"}。这是这个参数的默认值。
  • 如果为false,元素的底端将和其所在滚动区的可视区域的底端对齐。相应的scrollIntoViewOptions: {block: "end", inline: "nearest"}。

scrollIntoViewOptions 可选

一个包含下列属性的对象:

behavior 可选

  • 定义动画过渡效果, "auto"或 "smooth"之一。默认为"auto"。

block 可选

  • 定义垂直方向的对齐,"start","center","end", 或 "nearest"之一。默认为 “start”。

inline 可选

  • 定义水平方向的对齐, "start", "center","end", 或 "nearest"之一。默认为 “nearest”。
  • 实际在vue项目中遇到,当通过点击事件调用子组件的元素滚动到可视区域时怎样都无效。
  • 最终发现,这个方法还有一个限制:需要页面完全加载后再调用
  • 这样,在vue中可以使用$nextTick函数,确保页面已渲染完成在去调scrollIntoView使滚动到可视区域

实现代码如下

父组件:

showDatePicker(){
  if (this.$refs.pickers) {
        this.$nextTick(() => {
          this.$refs.pickers.showCurrentDate()
        })
      }

子组件:

  showCurrentDate() {
      this.$el.querySelector('.active').scrollIntoView({
        block: 'start',
      }) // 回到顶部
    },

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue项目中实现描点跳转scrollIntoView的案例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Vue项目中如何实现带参跳转功能

这篇文章主要介绍Vue项目中如何实现带参跳转功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!页面介绍:主页面:name —> shishengzuotanhuichaxun此页面表格中的数据均通过接口从后端获取数组
2023-06-14

编程热搜

目录