공부기록/CSS
[tailwind] utility클래스의 우선순위 적용문제
Jenner
2024. 3. 1. 20:08
문제 상황 :
현재 페이지의 path별로 nav바에 스타일을 적용하는 중이다.
util 클래스인 nav-hover를 path에 따라 return하여 적용하였으나 스타일이 적용되지 않았다.
아래는 nav바의 목록이다.
<ul className="flex h-[72px] items-center justify-between gap-1">
<Button href="/add" className={`${isFocused('add')} nav-button`}>
<li>추가</li>
</Button>
<Button href="/search" className={`${isFocused('search')} nav-button`}>
<li>검색</li>
</Button>
<Button href="/food" className={`${isFocused('food')} nav-button`}>
<li>식재료</li>
</Button>
<Button href="/receipt" className={`${isFocused('receipt')} nav-button`}>
<li>영수증</li>
</Button>
</ul>
문제의 원인 :
next에서 제공하고 있던 전역 css스타일
문제는 위의 layout.css파일에서 [type='button']인 것들이 모두 적용되고 있었다.
layout.css파일의 위치는
다음과 같았다. 실제로 해당 파일의 위치에 들어가보니 해당 스타일이 적용되어 있었다.
css우선순위
출처 :
Specifishity :: Specificity with Fish
specifishity.com
아래로 내려갈 수록 우선순위가 높다.
내가 적용 한 것은 클래스 선택자였다.
@layer components {
.nav-button {
@apply hover:nav-hover h-[72px] w-[91px] rounded-tl-[7px];
}
}
클래스 선택자는 속성 선택자보다 우선순위가 낮다.
그러므로 [type='button']에서 적용되어있는
background-color:transparent스타일이
우선순위가 높게 적용되었던 것이다.
해결방법
element.class로 명시하여 스타일을 구체화하고 우선순위를 높였다.
button.nav-button {
@apply hover:nav-hover h-[72px] w-[91px] rounded-tl-[7px];
}