vue.js - Nuxt/Vue/Bootstrap-vue 在滚动时收缩导航栏
问题描述
用 Nuxt 学习 Vue。想要根据页面滚动位置更改导航栏类。
这是我必须使用的:
``` default.vue
<template lang="pug">
div(v-on:scroll="shrinkNav", v-on:click="shrinkNav")
b-navbar.text-center(toggleable="sm" type="light" sticky v-b-scrollspy)
#myNav.mx-auto.bg-white
b-navbar-toggle(target="nav_collapse")
b-navbar-brand.mx-auto(href="#")
| Example.org
b-collapse#nav_collapse.mx-auto(is-nav='')
b-navbar-nav(justified, style="min-width: 600px").vertical-center
b-nav-item.my-auto(href='#home') Home
b-nav-item.my-auto(href='/how') How
i.fab.fa-earlybirds.fa-2x.mt-2.mb-3
b-nav-item.my-auto(href='/values') Values
b-nav-item.my-auto(href='/join-us') Join Us
#content.container(v-on:scroll="shrinkNav", v-on:click="shrinkNav")
nuxt
nuxt
</template>
<script>
// resize navbar on scroll
export default {
methods: {
shrinkNav() {
var nav = document.getElementById('nav')
var content = document.getElementById('content')
if (nav && content) {
if(content.scrollTop >= 150) {
nav.classList.add('shrink')
} else {
nav.classList.remove('shrink')
}
}
console.log(document.documentElement.scrollTop || document.body.scrollTop)
}
}
}
</script>
```
shrinkNav
点击时运行两次,但滚动时没有。Vue/Nuxt 的方法是什么?
解决方案
在您的.vue 中:
<template>
部分:
<nav id="nav" class="navbar is-transparent is-fixed-top">
<script>
部分:
export default {
mounted() {
this.$nextTick(function(){
window.addEventListener("scroll", function(){
var navbar = document.getElementById("nav");
var nav_classes = navbar.classList;
if(document.documentElement.scrollTop >= 150) {
if (nav_classes.contains("shrink") === false) {
nav_classes.toggle("shrink");
}
}
else {
if (nav_classes.contains("shrink") === true) {
nav_classes.toggle("shrink");
}
}
})
})
},
}
推荐阅读
- java - 当我从 ArrayList 中删除一个对象时,指针会发生什么?
- javascript - 通过使用 Javascript 单击任意位置来关闭具有动态 ID 的弹出窗口
- polygon - 找出一个点在哪个多边形中
- mysql - Mysql查询根据列标准对行和列求和
- c - 使用 C 通过 CP2102 USB 将数据发送到 AVR 微控制器到串行设备
- tensorflow - 如何打印 TensorFlow 网络结构?
- google-colaboratory - 无法打开文件:data/obj.data 和 /bin/bash:./darknet:没有这样的文件或目录
- php - 从 php 生成的电子邮件 pdf 附件
- corda - 关于corda网络类型的cordapp示例的说明
- javascript - 选择单选按钮时获取文本字段的问题