📜  滚动 vuejs 上的固定标题 - Javascript (1)

📅  最后修改于: 2023-12-03 15:11:08.946000             🧑  作者: Mango

滚动 Vue.js 上的固定标题

在网页设计中,很多时候我们需要将某个元素固定在页面上,而且随着页面滚动,它依然在同一个位置。这种效果可以通过 Vue.js 来实现。本文将介绍如何在 Vue.js 项目中实现固定标题,并且让它随着页面滚动而滚动。

实现思路

要实现固定标题,我们需要将原来在HTML中的标题放在一个固定的容器里。容器需要有固定的高度,这样在页面滚动时,容器就会滚动而文字会保持不变。为了让标题随着页面一起滚动,我们可以监听窗口滚动事件。当窗口滚动时,动态修改容器的top值,从而实现标题的滚动效果。

代码实现

首先,在HTML文件中添加一个包含标题的容器。容器需要有一个固定的高度和CSS position属性设置为fixed。代码如下:

<div class="header-container">
  <h1 class="header-title">页面标题</h1>
</div>

接下来,我们来实现 Vue.js 组件。首先需要在组件的生命周期钩子函数中注册滚动事件监听器,并在事件回调函数中设置容器的样式。代码如下:

<template>
  <div class="header-container" :style="{ top: titleTop + 'px' }">
    <h1 class="header-title">页面标题</h1>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        titleTop: 0
      }
    },
    mounted() {
      window.addEventListener('scroll', this.onScroll)
    },
    beforeDestroy() {
      window.removeEventListener('scroll', this.onScroll)
    },
    methods: {
      onScroll() {
        this.titleTop = window.pageYOffset
      }
    }
  }
</script>

这里我们使用了计算属性来获取容器的top值。在onScroll方法中,我们设置计算属性titleTop为窗口的pageYOffset值。

最后,我们还需要添加CSS样式来设置容器和标题的样式。代码如下:

.header-container {
  position: fixed;
  height: 70px;
  width: 100%;
  z-index: 999;
  background-color: #fff;
  box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1);
}

.header-title {
  font-size: 24px;
  color: #333;
  margin: 0;
  padding: 20px;
}

这里我们设置了容器的高度为70px,并且设置了一个阴影效果。标题的样式可以根据需要自行调整。

总结

本文介绍了如何使用 Vue.js 实现固定标题随页面滚动的效果。我们需要将标题放在一个固定的容器中,并监听窗口滚动事件,来动态修改容器的top值。这样就可以实现标题固定在页面上,并且随着页面一起滚动的效果。