제로베이스 데일리 스크럼을 하던 중 팀원 중 한 분의 의문을 제기한 게 사건의 발단이었다. 그분이 제시한 의문은 굉장히 흥미로웠는데 css style을 attribute를 통해 주게 되었을 때 class로 준 스타일이 먹지 않는다는 의문이었다.
다음은 의문의 코드와 비슷한 맥락으로 재현한 전체 코드다.
전체 코드 예시)
HTML<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> li[class^=item] { background-color: aqua; } .item2 { background-color: red; } </style> </head> <body> <div class="box"> <ul class="list"> <li class="item1">안녕</li> <li class="item2">나는 </li> </ul> </div> </body> </html>
위 코드처럼 했을 때 우리 팀원들은 tag로 준 스타일의 우선순위 보다 class로 준 우선순위가 더 높을 거라 예상해 당연히 될 것이라 굳게 믿었다. 하지만, 늘 그렇듯 믿음은 배신당한다^.^

당연히 빨간색이라는 자신감을 처참히 뭉개고 시퍼런 아쿠아색을 뽐내고 있었다. 그래서 차근차근 단계를 밟아가 알아보기로 했다.
테스트 코드 예시)
CSS<style> li { background-color: aqua; } .item2 { background-color: red; } </style>
처음 시도한 것은 attribute 속성 없이 일반 tag style을 주었다. 그러자 우리가 알고 있던 지식이 틀리지 않았음은 확신하게 되었다.

그리고 tag에 attribute로 style을 줄 경우 class보다 우선순위가 더 높아지는 게 아닐까란 한 가지 가설을 세웠다.
가설을 근거로 해결책으로 style을 주고 싶은 해당 class의 parent에 있는 class를 같이 가지고 와서 조금 더 셀렉터에 명시도를 줘 봤다.
해결책 코드 예시)
CSS<style> li[class^=item] { background-color: aqua; } .list .item2 { background-color: red; } </style>
그 결과,

다행히 좋은 결과가 나와 이슈는 해결되었다.
다 같이 해결하느라 고생해 주신 팀원분들 감사합니다. 끝까지 파이팅!😆
'CSS' 카테고리의 다른 글
[CSS] CSS Attribute 선택자 정리 (0) | 2023.02.23 |
---|---|
[CSS] 자주 쓰이는 Scss 핵심 기능 (0) | 2023.02.14 |
[CSS] position 정리 (0) | 2023.02.13 |
[CSS] CSS Box Model (0) | 2023.02.13 |
[CSS] Grid 활용법 (0) | 2023.02.09 |
댓글