【问题标题】:change background-color of navbar when scroll event with vuejs使用 vuejs 滚动事件时更改导航栏的背景颜色
【发布时间】:2020-05-11 14:57:50
【问题描述】:

如何在使用 Vuejs 滚动事件时更改导航栏的背景颜色。我使用这个答案How to change css while scrolling in Vue 尝试了 V-scroll 事件 这是代码,但它不起作用?

<nav v-scroll="handleScroll">
        <div class="logo">
          <img src="../assets/images/logo.png" alt="logo" />
          <button id="mobBtn" @click="displayList">
            <i class="fas fa-bars"></i>
          </button>
        </div>

        <ul class="navlist" id="mobList">
          <li>
            <a href>Home</a>
          </li>
          <li>
            <a href>About</a>
          </li>
          <li>
            <a href>Blog</a>
          </li>
          <li>
            <a href>Contact</a>
          </li>
        </ul>
      </nav>
<script>
export default {
  name: "Header",
  data: {},
  methods: {
  handleScroll: function (evt, el) {
    alert("Dddd")
      if (window.scrollY > 50) {
        el.setAttribute(
          'style',
          'background-color: red;'
        )
      }
      return window.scrollY > 100
    }
};
</script>

【问题讨论】:

标签: vue.js background-color


【解决方案1】:

将事件侦听器添加到您的窗口,并将新数据分配给您的数据模型,并在滚动事件启动时更新它的值。见下面的代码

日期模型

data: {
    scrollPosition: null
},

方法

methods: {
    updateScroll() {
       this.scrollPosition = window.scrollY
    }
}

固定挂钩

mounted() {
    window.addEventListener('scroll', this.updateScroll);
}

现在,在你的情况下,把它放在你的导航栏中

<nav :class="{change_color: scrollPosition > 50}">
      ...
      ...
</nav>

并将 css 放入你的 change_color 类

<style scoped>
   .change_color {
       background-color:red
   }
</style

【讨论】:

  • 这对于在滚动时将 Vuetify (v-app-bar) 从一种颜色更改为另一种颜色非常有效。非常感谢!!但是,我确实使用了计算属性来更新该组件的“颜色”属性: appBarColor() { return this.scrollPosition > 10 ? 'rgba(255,255,255,1)' : 'rgba(255,255,255,.5)';当页面滚动时,这有效地将应用栏颜色从半透明变为纯白色。超级酷!
猜你喜欢
  • 2017-12-27
  • 2017-04-30
  • 2020-04-18
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多