
저는 Tailwind를 이용해 웹페이지를 구현할 때
동적인 스타일링을 구현하기 위해서 종종 삼항 연산자를 사용해왔습니다.
하지만 이 방법은 코드가 너무 지저분해진다는 문제가 있었습니다.
오늘은 그 문제를 해결해 줄 수 있는 classnames 라이브러리를 소개해 드리겠습니다.
classnames 라이브러리는 조건부로 CSS 클래스를 적용할 수 있게 해주는 JavaScript 라이브러리입니다.
여러 개의 CSS 클래스를 간편하게 결합하거나 특정 조건에 따라 클래스 이름을 동적으로 추가할 수 있습니다.
Tailwind 또는 CSS Modules와 많이 쓰인다고 합니다.
저는 오늘 tailwind와 같이 사용해보겠습니다.
npm i classnames
먼저 라이브러리를 설치해줍니다.
import React, { useState } from 'react';
import classNames from 'classnames'; // classnames 라이브러리 import
export function Example() {
const [isActive, setIsActive] = useState(false);
return (
<div className="p-4">
<button
onClick={() => setIsActive(!isActive)}
className={classNames(
'px-4 py-2 rounded', // 공통 스타일
{
'bg-blue-500 text-white': isActive, // true일 때
'bg-gray-300 text-black': !isActive, // false일 때
}
)}
>
{isActive ? '날 눌러줘~' : '누르지마..'} // text
</button>
</div>
);
}
이 코드는 제가 간단하게 작성해본 토글 버튼입니다.
누를 때마다 isActive 값이 true false로 바뀌면서 스타일이 바뀌게 됩니다.
이렇게 간단하게 조건부 스타일링을 깔끔하게 할 수 있는 classnames 라이브러리 입니다.
공통 스타일: 패딩, border-radius(둥근 모서리)
Active(true): 파랑 배경, 하얀 글씨
!isActive(false): 회색 배경, 검은 글씨
오늘은 제가 조건부 스타일링을 깔끔한 코드로 보여줄 수 있는 classnames 라이브러리를 소개 해봤습니다.
여러분들도 조건부 스타일링을 하다 코드가 더러워보이면 사용해보시면 좋을거 같습니다.🧹
그리고 제가 놓친 부분도 있을 수 있으니 참고 해보시면 좋을거 같습니다.
https://github.com/JedWatson/classnames
읽어주셔서 감사합니다!!
GitHub - JedWatson/classnames: A simple javascript utility for conditionally joining classNames together
A simple javascript utility for conditionally joining classNames together - JedWatson/classnames
github.com
| [CSS] 트랜지션(Transition) 공부해서 잘 사용하자!!🖌️ (0) | 2024.09.16 |
|---|---|
| [CSS] Tailwind CSS 그게 뭔데!!🎨 (7) | 2024.09.02 |
| [CSS] 반응형 웹에 대하여 (4) | 2024.07.26 |
| [CSS] position과 z-index 속성에 대하여 (3) | 2024.07.21 |