본문 바로가기
CSS

[CSS] CSS 우선순위 새로 알게 된 점 정리

by 개발지망생 2023. 3. 3.

제로베이스 데일리 스크럼을 하던 중 팀원 중 한 분의 의문을 제기한 게 사건의 발단이었다. 그분이 제시한 의문은 굉장히 흥미로웠는데 css style을 attribute를 통해 주게 되었을 때 class로 준 스타일이 먹지 않는다는 의문이었다.

 

다음은 의문의 코드와 비슷한 맥락으로 재현한 전체 코드다.

 

전체 코드 예시)

<!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로 준 우선순위가 더 높을 거라 예상해 당연히 될 것이라 굳게 믿었다. 하지만, 늘 그렇듯 믿음은 배신당한다^.^

 

문제의 코드 결과 이미지

 

당연히 빨간색이라는 자신감을 처참히 뭉개고 시퍼런 아쿠아색을 뽐내고 있었다. 그래서 차근차근 단계를 밟아가 알아보기로 했다.

 

테스트 코드 예시)

<style>
    li {
        background-color: aqua;
    }

    .item2 {
        background-color: red;
    }
</style>

 

처음 시도한 것은 attribute 속성 없이 일반 tag style을  주었다. 그러자 우리가 알고 있던 지식이 틀리지 않았음은 확신하게 되었다.

 

attribute style없이 일반 tag로 구현한 코드 이미지

 

그리고 tag에 attribute로 style을 줄 경우 class보다 우선순위가 더 높아지는 게 아닐까란 한 가지 가설을 세웠다.

가설을 근거로 해결책으로 style을 주고 싶은 해당 class의 parent에 있는 class를 같이 가지고 와서 조금 더 셀렉터에 명시도를 줘 봤다.

 

해결책 코드 예시)

<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

댓글