vue中遇到scrollIntoView无效问题及解决

 更新时间:2023年05月19日 09:56:40   作者:°折月煮酒  
这篇文章主要介绍了vue中遇到scrollIntoView无效问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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',
      }) // 回到顶部
    },

scrollIntoView在vue里失效---kalrry

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

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' , 默认 ‘auto'
block:定义垂直方向的对齐, “start / center / end / nearest”。默认为 “start”。
inline 定义水平方向的对齐, “start / center / end / nearest”。默认为 “nearest”

问题

按照js标准选择元素方式,scrollIntoView在vue里失效

原因

该方法需在页面完全加载后才能生效

解决

方法一:

利用setTimeout方法

    setTimeout(function(){
        document.getElementById(target).scrollIntoView();
     },100)

方法二:

运用vue中的this.$nextTick方法

    this.$nextTick(()=>{
    //对象方式设置滚动状态
       document.querySelector("#01commonly").scrollIntoView({
          block: 'end',
          behavior: 'smooth'
        })
    })

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue+element开发使用el-select不能回显的处理方案

    vue+element开发使用el-select不能回显的处理方案

    这篇文章主要介绍了vue+element开发使用el-select不能回显的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • uniapp实现APP、小程序与webview页面间通讯的实现步骤

    uniapp实现APP、小程序与webview页面间通讯的实现步骤

    这篇文章主要介绍了uniapp实现APP、小程序与webview页面间通讯的实现步骤,在Uniapp开发的APP或小程序页面中嵌入一个H5网页,并实现H5页面与APP之间的数据传递,需要的朋友可以参考下
    2025-01-01
  • vue2中如何自定义组件的v-model

    vue2中如何自定义组件的v-model

    这篇文章主要介绍了vue2中如何自定义组件的v-model,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue实现一个矩形标记区域(rectangle marker)的方法

    vue实现一个矩形标记区域(rectangle marker)的方法

    这篇文章主要介绍了vue实现一个矩形标记区域 rectangle marker的方法,帮助大家实现区域标记功能,感兴趣的朋友可以了解下
    2020-10-10
  • vue 实现Web端的定位功能 获取经纬度

    vue 实现Web端的定位功能 获取经纬度

    这篇文章主要介绍了vue 实现Web端的定位功能获取经纬度,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Vue使用axios出现options请求方法

    Vue使用axios出现options请求方法

    这篇文章主要介绍了Vue使用axios出现options请求,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • vue-router 源码之实现一个简单的 vue-router

    vue-router 源码之实现一个简单的 vue-router

    这篇文章主要介绍了vue-router 源码之实现一个简单的 vue-router,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Element Breadcrumb 面包屑的使用方法

    Element Breadcrumb 面包屑的使用方法

    这篇文章主要介绍了Element Breadcrumb 面包屑的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 3分钟读懂移动端rem使用方法(推荐)

    3分钟读懂移动端rem使用方法(推荐)

    这篇文章主要介绍了rem使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 解决vue修改数据页面不重新渲染问题

    解决vue修改数据页面不重新渲染问题

    这篇文章详细介绍了vue渲染机制和如何解决数据修改页面不刷新问题的多种方法,想了解更多的小伙伴可以借鉴阅读
    2023-03-03

最新评论