Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- React
- npm library
- useState
- 마이크 권한 요청
- window.scrollY
- next.js
- useQuery
- 웹 애니메이션
- typescript
- nextauth
- svg style
- flutter
- npm module
- recoil
- Lottie web
- useSWRImmutable
- CJS
- NEXT
- useSwr
- react-icons
- 웹 디자인
- es module
- 백틱
- 템플릿 리터럴
- 동적 디자인
- npm publish
- useCallback()
- python
- github login
- Tailwind CSS
Archives
- Today
- Total
김재욱의 이모저모
Netflix 클론코딩 기록 남기기 (7) - Tailwind CSS를 통한 동적 디자인 본문
728x90
예를 들어 어떤 버튼을 클릭할 때마다 노란색, 파란색으로 배경이 변해야 하는 경우가 있다고 하자. 그러면 나는 이때까지는 JS의 도움을 통해서 혹은 react에서 관리하는 state를 css-in-js 코드로 넘겨주어 css에서 해당 state 따라 배경색이 지정되도록 코드를 작성했다 ( 사실 주로 후자의 경우를 선호했다. ) 이번에 처음으로 Tailwind CSS를 활용하면서 좋은 기능을 알 수 있었다. 배경색과 같은 CSS코드 즉 디자인 코드를 동적으로 조절하기 쉬운 방법이 있다는 것을 알 수 있었다!
아래와 같은 코드를 통해 위 상단바의 디자인 코드를 작성할 수 있었다.
const TOP_OFFSET = 66;
const Navbar = () => {
const [backgroundvisible, setBackgroundVisible] = useState(false);
useEffect(() => {
const handleScroll = () => {
if (window.scrollY >= TOP_OFFSET) {
setBackgroundVisible(true);
} else {
setBackgroundVisible(false);
}
};
window.addEventListener('scroll', handleScroll);
return () => {
window.removeEventListener('scroll', handleScroll);
}
}, []);
return (
<div className={`${backgroundvisible ? 'bg-zinc-900' : ''}`}></div>
);
};
export default Navbar;
window에서의 scroll좌표는 우리가 학생때 보던 xy좌표축과는 방향이 다르게 y축이 밑으로 갈수록 커진다. 그래서 나는 scroll값이 지정한 TOP_OFFSET 값보다 크다면 배경값을 지정해 주었고, 아니라면 배경이 생기도록 하였다. 위에서 <div> 태그 안에 작성한 간단한 Tailwind CSS 코드를 통하여 디자인을 동적으로 조절할 수 있다!!
728x90
'Front-end' 카테고리의 다른 글
npm에 라이브러리 배포하기! (0) | 2023.11.09 |
---|---|
Netflix 클론코딩 기록 남기기 (8) - useSWR을 통한 데이터 불러오기 (0) | 2023.11.07 |
Netflix 클론코딩 기록 남기기 (6) - 백틱과 작은 따옴표 (0) | 2023.11.05 |
Netflix 클론코딩 기록 남기기 (5) - google, github 인증 로그인 (1) | 2023.11.01 |
Netflix 클론코딩 기록 남기기 (4) - Prisma + mongoDB (0) | 2023.11.01 |