スクロールしてNavbarの変更の背景色を反応
現在、私はクライアントのための新しいウェブサイトを開発しています.私は、ウェブサイトを構築するために、gatsbyjsとstrapi cmsを使用しています.
このチュートリアルでは、GatsByJSによるNavbarのスムーズなスクロールの背景とロゴの変更をどのように構築するかを説明します.
必要条件: usestate ()の知識はフックを反応させます.
useAffect ()の知識はフックを反応させます.
コンポーネントを作成します.
私の場合、私はNavbarのすべてのスタイルが生きる
コンポーネントのボイラープレートを準備し、USENTとUseEffectフックをインポートした後、NavbarをFalseの値を持つ初期状態としてNavbarと呼び、関数を2番目の要素として状態を更新します.
そして、私が私のnavbarの高さである私のケースで、66 px以上に等しいページをスクロールするとき、私がChangebackgroundによって呼ばれる関数を作成して、状態Navbarの値をtrueにセットします.これはウィンドウの助けを借りて行われます.scrolly関数.私は私たちのNavbarの高さ(66 px)の値に従ってこの66 px値を使用しました.それ以外の場合、状態値はfalseのままです.
https://github.com/cesareuseche
このチュートリアルでは、GatsByJSによるNavbarのスムーズなスクロールの背景とロゴの変更をどのように構築するかを説明します.
必要条件:
コンポーネントを作成します.
私の場合、私はNavbarのすべてのスタイルが生きる
Navbar.js
のコンポーネントとNavbar.js
ファイルを作成しました.コンポーネントのボイラープレートを準備し、USENTとUseEffectフックをインポートした後、NavbarをFalseの値を持つ初期状態としてNavbarと呼び、関数を2番目の要素として状態を更新します.
そして、私が私のnavbarの高さである私のケースで、66 px以上に等しいページをスクロールするとき、私がChangebackgroundによって呼ばれる関数を作成して、状態Navbarの値をtrueにセットします.これはウィンドウの助けを借りて行われます.scrolly関数.私は私たちのNavbarの高さ(66 px)の値に従ってこの66 px値を使用しました.それ以外の場合、状態値はfalseのままです.
/navbar scroll changeBackground function
const changeBackground = () => {
console.log(window.scrollY)
if (window.scrollY >= 66) {
setNavbar(true)
} else {
setNavbar(false)
}
}
Navbarの背景色の変更のレンダリングを作成するには、ChangeBackground関数とChangeBackground関数を渡すイベントリスナーを渡します.useEffect(() => {
changeLogo()
// adding the event when scroll change Logo
window.addEventListener("scroll", changeLogo)
})
最後に、次のようにNavbarタグクラス名に条件付きステートメントを追加する必要があります. <nav className={navbar ? "navbar active" : "navbar"}>
私は、これがあなたを助けることを望みます、あなたがあなたのNavbarロゴで同じことをしたいならば、私は下で私の全部のNavbar構成要素をつけている時から、それを見ることができます.コーディングを維持、学習を続ける!import React, { useState, useEffect } from "react"
// importing navbar styles
import "../assets/css/navbar.css"
import logo from "../assets/images/logo.svg"
import logoBlue from "../assets/images/logo-blue.svg"
// responsive menu toggle icon
import { FaAlignRight } from "react-icons/fa"
// all the navbar links coming from the links constants
import pageLinks from "../constants/links"
// Link from gatsby
import { Link } from "gatsby"
const Navbar = () => {
//navbar scroll when active state
const [navbar, setNavbar] = useState(false)
//logo scroll when active
const [navbarLogo, setNavbarLogo] = useState(logo)
//navbar scroll changeBackground function
const changeBackground = () => {
console.log(window.scrollY)
if (window.scrollY >= 66) {
setNavbar(true)
} else {
setNavbar(false)
}
}
useEffect(() => {
changeBackground()
// adding the event when scroll change background
window.addEventListener("scroll", changeBackground)
})
//logo scroll function
const changeLogo = () => {
if (window.scrollY >= 60) {
setNavbarLogo(logoBlue)
} else {
setNavbarLogo(logo)
}
}
useEffect(() => {
changeLogo()
// adding the event when scroll change Logo
window.addEventListener("scroll", changeLogo)
})
return (
<nav className={navbar ? "navbar active" : "navbar"}>
<div className="nav-center">
<div className="nav-header">
<Link to="/">
<img src={navbarLogo} alt="logo" />
</Link>
<button type="button" className="toggle-btn">
<FaAlignRight />
</button>
</div>
<div className="nav-links">
{pageLinks.map(links => {
return (
<Link key={links.id} to={links.url}>
{links.text}
</Link>
)
})}
</div>
</div>
</nav>
)
}
export default Navbar
Githubの上で私に続いてくださいhttps://github.com/cesareuseche
Reference
この問題について(スクロールしてNavbarの変更の背景色を反応), 我々は、より多くの情報をここで見つけました https://dev.to/cesareuseche/react-navbar-change-background-color-on-scroll-react-js-gatsby-2a39テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol