VueJS:如何在滚动位置后动态更改 CSS 类

Posted

技术标签:

【中文标题】VueJS:如何在滚动位置后动态更改 CSS 类【英文标题】:VueJS: How to dynamically change a CSS class after a scroll position 【发布时间】:2017-04-27 00:30:59 【问题描述】:

我正在使用 vueJs 和 bootstrap 创建一个 webapp。我想change CSS class一个元素经过一定量的滚动后,有没有一些vue方法可以做到这一点。

我想要以下内容:

<div :class="classA: scrollPosition < 100, classB: scrollPosition > 100">
</div>

我发现的一个选项是使用vue-scroll,这似乎很有希望,但not working。

还有其他的本地方法可以达到同样的效果吗?

【问题讨论】:

jsbin.com/mecekohete/1/edit?html,js,output 对你有用吗? @BelminBedak 如果 vue 没有提供任何开箱即用的东西,这将起作用,可能它没有,请将此作为答案发布。 【参考方案1】:

你可以试试这样

const app = new Vue(
  
  el: '#app',
  
  data: 
    scrollPosition: null
  ,
  
  methods: 
    updateScroll() 
      this.scrollPosition = window.scrollY
    
  ,
  
  mounted() 
    window.addEventListener('scroll', this.updateScroll);
  
  
)

您还应该考虑在组件被销毁时移除事件监听器,以防止泄漏:

destroy() 
  window.removeEventListener('scroll', this.updateScroll)

【讨论】:

我相信 destroyed () ... 对 Vue 2 有效,但在 Vue 3 中这已被 unmounted () ... 取代

以上是关于VueJS:如何在滚动位置后动态更改 CSS 类的主要内容,如果未能解决你的问题,请参考以下文章

如何在VueJS中将动态鼠标滚动值作为道具传递

如何在css中把一组静态图片改成动态滚动的图片

vuejs 为网格内的列表项设置动画

如何在 SWIFT 中更改 ViewController 后保留集合视图滚动位置

CSS3。 VueJS。动态过渡背景渐变

vuejs在不使用history的情况下,回退返回到之前滚动的位置