使用航点滚动时如何更改固定导航菜单上的背景色JS ES6

如何解决使用航点滚动时如何更改固定导航菜单上的背景色JS ES6

当有人使用航点滚动导航菜单时,我试图更改其导航菜单的背景颜色。问题是,它没有用。因为“我认为”,是因为我看了哪个视频教程过时了?还是我的代码似乎有问题?我看了10次代码,就像我几乎有个交叉眼。

这是我观看的视频教程的最终代码

import $ from 'jquery';
import waypoints from '../../../../node_modules/waypoints/lib/noframework.waypoints';

class StickyHeader {
    constructor() {
        this.siteHeader = $(".site-header");
        this.headerTriggerElement = $(".large-hero__title");
        this.createHeaderWaypoint();
    }

    createHeaderWaypoint() {
        var that = this;
        new Waypoint({
            element: this.headerTriggerElement,handler: function() {
                that.siteHeader.addClass("site-header--dark");
            }
        });
    }
}

export default StickyHeader;

enter image description here

如果有人可以帮助我,我将不胜感激。 这是我的App.js

import MobileMenu from './modules/MobileMenu';
import RevealOnScroll from './modules/RevealOnScroll';
import $ from 'jquery';
import StickyHeader from './modules/StickyHeader';

var mobileMenu = new MobileMenu();
var revealOnScroll($(".feature-item"),"85%");
var revealOnScroll($(".testimonial"),"60%");
var stickyHeader = new StickyHeader();

解决方法

如果您想报废航点插件,则可以使用香草javascript做到这一点,只需使用每个元素的WholeText = input("Add The Text: ") WordSplitUp = [] WordSplitUp.extend(WholeText) IndividualLetters = WordSplitUp ( a,b,c,d,e ) = str(IndividualLetters).split() print(a)

getBoundingClientRect
class StickyHeader {
  constructor() {
    var that = this;
    this.siteHeader = document.querySelector(".site-header");
    this.headerTriggerElement = document.querySelector(".large-hero__title");
    window.addEventListener('scroll',function() {
      that.createHeaderWaypoint();
    });
  }

  createHeaderWaypoint() {
    var that = this;
    var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

    var headPosition = this.siteHeader.getBoundingClientRect();
    var screenPosition = this.headerTriggerElement.getBoundingClientRect();

    if (headPosition.bottom >= screenPosition.top) {
      this.siteHeader.classList.add("active");
    } else {
      this.siteHeader.classList.remove("active");
    }
  }
}

temp = new StickyHeader();
html,body {
  height: 100px;
}

body {
  padding: 0;
  margin: 0;
}

.site-header {
  background: red;
  height: 100px;
  position: fixed;
  top: 0;
  width: 100%;
}

.large-hero__title {
  background: blue;
  height: 100px;
  margin: 1400px 0;
}

.site-header.active {
  background: black
}

,

看起来您正在将jQuery与Waypoints.js的版本组合在一起,而该版本并不适合jQuery。

目前,您正在使用jQuery选择元素,这将以jQuery对象的形式为您提供结果

$(".site-header");
// This will result in:
{
  0: <div class=".site-header">...</div>
}

但是element构造函数上的Waypoint属性期望使用元素而不是对象。因此,您可以使用document.querySelector通过Vanilla JavaScript选择元素。

也请使用classList.add而不是addClass,因为您现在正在处理纯JS元素而不是jQuery对象。

import waypoints from '../../../../node_modules/waypoints/lib/noframework.waypoints';

class StickyHeader {
    constructor() {
        this.siteHeader = document.querySelector('.site-header');
        this.headerTriggerElement = document.querySelector('.large-hero__title');
        this.createHeaderWaypoint();
    }

    createHeaderWaypoint() {
        var that = this;
        new Waypoint({
            element: this.headerTriggerElement,handler: function() {
                that.siteHeader.classList.add("site-header--dark");
            }
        });
    }
}

export default StickyHeader;

或者使用框架的jQuery变体并像这样使用它。

var $siteHeader = $(".site-header");
var $headerTriggerElement = $(".large-hero__title");

$headerTriggerElement.waypoint({
  handler: function() {
    $siteHeader.addClass("site-header--dark");
  }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?