Scrollを使用したタイトルバーの作成
私は上に固定された髪が好きです.しかし、タイトルのためにbody出力を減らすスペースはあまり好きではありません.(開放的な教会は閉鎖されている)ので、この2つの方向を反映するために、下に転がると透明になる頭を作りました.
事前に知っておくべき知識
まず、CS-In-JSとReact Hookの概念をある程度熟知してこそ、その位置づけに従いやすくなります.私はCS-In-JSのために感情を使いました.
感情の公式ドキュメント
React Hook公式ドキュメント
スクロールの現在位置を知る方法
if (window.pageYOffset > 0) {
// 스크롤이 아래로 내려갔을 때
} else {
// 스크롤이 가장 최상단에 있을 때
}
開発者モード実行console.log(window.pageYOffset)
を任意のページで開き、デジタル出力が表示されます.window.pageYOffset
は現在のスクロール位置を示し、0はスクロールが最上位にあり、スクロールが下に下がるほど数が大きくなることを示します.私はどうして転がる動作を知っていますか。
window.addEventListener('scroll', (event) => {
console.log('Scrolling...');
});
clickやmouseoverなどのイベントを検出する場合はtarget.addEventListener
を使用します.巻物も同じです.スクロールバーが移動するたびにスクロールするコードをテストします...この出力を確認できます.Hookを使用してスクロールを管理する
スクロールの方法とスクロールの現在の位置を知ることができました.では、これをよく利用して、スクロールが下に下がるかどうかを判断するstateを作成します.
const [isScroll, setIsScroll] = useState(false);
isScroll
は仮面リールが最上位にあり、isScroll
は真面リールがやや下向きである.useEffectの使用
useEffect(() => {
window.addEventListener('scroll', () => {
window.pageYOffset > 0 ?
setIsScroll(true) : setIsScroll(false)
});
}, [isScroll]);
この場合はisScroll
を覚えてから更新する場合です.ですから、useEffect(func, [isScroll])
の形にすればいいのです.感情を使ってCSSを作成する
isScroll
の値に従ってCSS値を調整し、スクロール時にアニメーションを追加できます.したがって,propsに基づいて値を調整できる感情を用いる.(もちろんstyled-componentも可能)isScrollの不透明度の設定
const Nav = styled.nav`
position: fixed; z-index: 1;
top: 0; right: 0; left: 0;
opacity: ${props => (props.isScroll ? "0.7" : "1")};
backdrop-filter: blur(30px);
padding: 0 20px;
background: #1c2022;
display: flex; align-items: center;
height: 40px;
transition: all 0.2s ease-in-out;
`;
不透明CSSプロパティ要素の不透明度を設定します.要素の後ろにある内容が非表示であるため、不透明度は透明度とは逆です.opacity
は、不透明度を設定するCSSプロパティです.以上のようにisScroll
がtrueの場合は0.7が透明になり、isScroll
がfalseの場合は1が不透明になる.すべてのコードを加算!
import React, { useEffect, useState } from "react";
import styled from "@emotion/styled";
const Nav = styled.nav`
position: fixed;
top: 0; right: 0; left: 0;
z-index: 1;
opacity: ${props => (props.isScroll ? "0.7" : "1")};
backdrop-filter: blur(30px);
padding: 0 20px;
background: #1c2022;
display: flex;
align-items: center;
height: 40px;
transition: all 0.2s ease-in-out;
`;
const Navbar = () => {
const [isScroll, setIsScroll] = useState(false);
useEffect(() => {
window.addEventListener('scroll', () => {
window.pageYOffset > 0 ?
setIsScroll(true) : setIsScroll(false)
});
}, [isScroll]);
return (
<div>
<Nav isScroll={isScroll} />
</div>
);
};
export default Navbar;
この位置決めで説明したアニメーションをスクロールするために必要な最小コードは以下の通りです.ここにお肉を貼ると頭が大きくなりますにこにこリファレンス
Reference
この問題について(Scrollを使用したタイトルバーの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@1998yuki0331/Animation-on-Scroll이-있는-헤더바-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol