【问题标题】:Change Navbar to fixed in Scroll using VueJS使用 VueJS 将导航栏更改为在滚动中固定
【发布时间】:2020-08-05 15:46:57
【问题描述】:

我有一个简单的问题如何使用 Vue 创建一个固定的滚动导航栏

我创建了一个 jQuery 代码,但我想迁移到 Vue

我在名为 navbar.js 的文件中将我的代码更新为 Vue JS

jQuery 代码

$(document).ready(function fixedHeader() {

    var windows = $(window);
    var screenSize = windows.width();
    var sticky = $('#f-navbar');
    var $html = $('html');
    var $body = $('body');

    windows.on('scroll', function () {
        var scroll = windows.scrollTop();
        var headerHeight = sticky.height();

        if (screenSize >= 320) {
            if (scroll < headerHeight) {
                sticky.removeClass('is-sticky');
            } else {
                sticky.addClass('is-sticky');
            }
        }
    });
});

Vue JS 代码

const navbar = new Vue({
    el: '#f-navbar',
    data: function fixedHeader() {
        return {
            stickyNavbar: {
                isSticky: false
            }
        }
    },
    mounted() {

    },
    methods: {
        handleScrolling () {

        }
    }
});

HTML 代码

<nav id="f-navbar" class="navbar navbar-custom navbar-expand-lg navbar-light bg-white"
     v-bind:class="stickyNavbar"></nav>

【问题讨论】:

    标签: html jquery css vue.js


    【解决方案1】:

    $(document).ready 类似于 Vue 的 mounted 钩子,但适用于组件。

    在你的 Navbar.vue &lt;script&gt;

    mounted() {
        window.addEventListener('resize', this.getWindowWidth);
      },
    data() {
        return {
          screenSize: 0,
        };
      },
      methods: {
        getWindowWidth() {
          this.screenSize= window.innerWidth;
        },
      },
    

    在您的 &lt;template&gt; 获取 NavBar 组件,

    根据您的情况分配您的:class

    &lt;nav :class="{'is-sticky': screenSize == 320}"&gt;

    更新:is-sticky 类仅在 scrollPosition = 320 的窗口宽度大小时显示。

    【讨论】:

    • 我想要固定的导航栏类只在屏幕尺寸为 320 的滚动中
    • 哦,我的错,我以为你想要 scrollY(滚动条高度),让我来更新屏幕尺寸
    • 好了,让我知道你需要什么。几乎window + resize 事件都可以工作,因为 Vue 是 Javascript。干杯
    • 您可以查看 jQuery 代码,将导航栏更改为在使用特定调整屏幕尺寸 320 滚动时将导航栏更改为固定,然后返回到默认导航栏为 0,这正是我需要的
    • @Hammouda Houssam 请重新检查我的第一个回复,它已在我的工作中进行了更新和测试。如果解决,请标记为“已回答”。干杯
    猜你喜欢
    • 2018-02-03
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2014-06-11
    • 1970-01-01
    相关资源
    最近更新 更多