개발자

tailwindCss ::before ::after 어떻게 사용하시나요??

2024년 02월 12일조회 718

안녕하세요. 질문있습니다.
 nextjs14 + tailwindCss 구조의 프로젝트를 진행중입니다.
 ::before와 ::after를 사용할 일이 많은데, tailwind에서 before 사용할 때 속성 하나하나에 before:*를 작성하는 방법 말고
 조금 더 편한 방법 없을까요??

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

백승훈님의 프로필 사진

자주 사용하는 스타일에 대해서 컴포넌트 커스터마이즈를 통해 이를 구현할 수 있습니다. Props를 사용하여 컴포넌트 커스터마이즈: React 컴포넌트에서 props를 사용하여 가상 요소의 스타일을 동적으로 변경할 수 있도록 합니다. 이 방법은 컴포넌트 재사용성을 높이고, 다양한 상황에서의 스타일 변화를 쉽게 관리할 수 있게 해줍니다. 혹은 굳이 after와 before를 사용하지 않고 분리하는 방법이 있습니다. https://tailwindcss.com/docs/hover-focus-and-other-states#before-and-after 요소 안에 요소가 있는 것을 2개의 요소으로 분리하는 항목을 보시면 됩니다.

1// 컴포넌트 분리
2import React from 'react';
3
4// 사용자 지정 Button 컴포넌트
5const Button = ({ children, color = 'blue', size = 'medium' }) => {
6  // 버튼의 클래스 이름을 동적으로 생성합니다.
7  const baseClass = "relative inline-block text-white font-bold py-2 px-4 rounded";
8  const colorClass = `bg-${color}-500 hover:bg-${color}-700`;
9  const sizeClass = size === 'large' ? 'text-lg' : 'text-sm';
10
11  return (
12    <button className={`${baseClass} ${colorClass} ${sizeClass} before:bg-${color}-300 after:bg-${color}-700`}>
13      {children}
14    </button>
15  );
16};
17
18export default Button;
19
20// 하부 요소 분리
21// 이전
22  <span class="before:block before:absolute before:-inset-1 before:-skew-y-3 before:bg-pink-500 relative inline-block">
23    <span class="relative text-white">annoyed</span>
24  </span>
25
26//이후
27  <span class="relative">
28    <span class="block absolute -inset-1 -skew-y-3 bg-pink-500" aria-hidden="true"></span>
29    <span class="relative text-white">annoyed</span>
30  </span>

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2024년 02월 12일

Tailwind CSS는 ::before와 ::after 가상 요소를 직접 지원하지 않습니다. 즉, 이를 사용하기 위해서는 사용자 정의 CSS나 Tailwind CSS의 @apply 기능을 사용하여 작성해야 합니다. 하지만 최근에 Tailwind CSS v2.1에서 JIT(Just-In-Time) 컴파일러가 소개되었습니다. 이 JIT 컴파일러는 개발자가 필요로 하는 모든 스타일을 런타임에 생성하므로, 이를 활용하면 동적으로 다양한 스타일을 적용할 수 있게 됩니다. 따라서 ::before와 ::after 같은 가상 선택자를 더 효율적으로 관리할 수 있습니다. JIT 모드에서는 `before`, `after` 클래스와 함께 `content` 유틸리티 클래스를 사용하여 `::before` 와 `::after` 을 쉽게 표현할 수 있습니다. 예시: ```css <div className="relative before:block before:bg-red-500 before:w-10 ...">Hello world</div> ``` 위 코드는 다음과 같이 번역됩니다. ```css .relative::before { display: block; background-color: var(--color-red-500); width: 2.5rem; } ``` 이 방법말고도 공식 Tailwind CSS 문서의 Plugins 섹션을 참조하여, 자신만의 플러그인을 만들어 사용하는 방법도 있습니다. 이렇게 하면 필요한 기능을 직접 구현하여 사용할 수 있습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!