본문 바로가기

HTML

[CSS] 선택자(selector)의 종류 및 우선순위

선택자란?

RuleSet의 요소 중 가장 앞단, { (왼쪽중괄호) 이전에 있는 요소
HTML의 특정 요소를 선택하여 스타일을 적용할 떄 사용
선택자는 HTML페이지 내부 특정 요소를 선택하여 선언블록 내용 적용

 

 

1.모든(전체)선택자

            [표현법]
            * {
                스타일속성 = "값";
                스타일속성 = "값";
            }
            => 모든 요소들을 다 선택하고자 할 때 사용


        

2.태그선택자

            [표현법]
            태그명 {
                스타일 속성 : 값 ;
                스타일 속성 : 값 ;
                
            }
        ==>현재 이 문서 내에 같은 태그들을 모두 선택할 때 사용
        

3.아이디선택자 (#아이디명)

            [표현법]
            #아이디명 {
                스타일 속성 : 값;
                스타일 속성 : 값;
            }

            => 해당 문서 내에서 특정 HTML요소 하나만을 선택하고자 할 때 사용
            단, 해당요소에 ID속성을 이용하여 고유한 아이디값이 부여되어있어야 함
            같은태그이더라도 부분적으로 다르게 스타일 부여시 사용하면 좋음
        

4. 클래스선택자(.클래스명)

        [표현법]
        .클래스명{
            스타일 속성 : 값;
            스타일 속성: 값;
            ....
        }
        ==> 이 문서안에서 여러개 요소를 선택하고 싶을 떄
        
        id, class : 모든태그에 공통적으로 사용가능한 속성
        id : 문서 내에 고유한 값으로 작성 (중복금지!)   
        class : 별명을 지어주는 속성, 여러개 작성 가능, 중복값 작성 가능

 

5. 속성선택자

스타일을 부여하고자 하는 요소 내에 작성되에 있는 속성을 이용해서 선택하는 방법
기본선택자 뒤에 []를 이용하여 속성과 속성값을 제시하여 선택하는 방법

        [표현법]
        선택자[속성=속성값]{스타일속성; 값; ....}  일치
        선택자[속성~=속성값]{스타일속성; 값; ....} 포함
        선택자[속성|=속성값]{스타일속성; 값; ....} 클래스시작(단어기준, -로 구분)
        선택자[속성^=속성값]{스타일속성; 값; ....} name시작(단어기준)
        선택자[속성$=속성값]{스타일속성; 값; ....} 끝
        선택자[속성*=속성값]{스타일속성; 값; ....} 포함(일반문자열)
    <ul>
        <li class="class1">클래스선택자1</li>
        <li class="test">클래스선택자2</li>
        <li class="class1 test">클래스선택자3</li> 
        <!-- 클래스를 여러개 작성하려면 " " 내부에 클래스명을 연달아 -->
        <li>클래스선택자4</li>
        <li class="class1">클래스선택자5</li>
    </ul>
	<div class="div-class" name="name1">div1</div>
    <div class="div-class" name="name2">div2</div>
    <div class="div-class" name="name3 name1">div3</div>
    <div class="di-class" name="name4">div4</div>

 

/* div요소중 name속성 값이 name1과 "일치"하는 요소에만 스타일 부여*/
div[name=name1]{
    background-color: darkblue;
}
/* div요소 중 name속성 값에 name1이 "포함"되어있는 요소만 스타일 부여 */
div[name~=name1]{
    background: orange;
}

/* name 은 단어기준, class는 그냥 문자 하나만 포함되어잇어도 됨 
  한 단어의 기준은 "-"!*/
/* div요소 중에서 class속성값에 i가 포함되어있는 요소만 스타일 부여 */
div[class*=i]{
   color: aliceblue;
   background-color: brown; 
} 

/* div 요소중에서 class속성값이 div로 "시작"하는 요소만 스타일 부여 */
div[class|= div]{
    color: chartreuse;
}

/* div요소중에서 name속성값이 name3으로 "시작"하는 요소만 스타일 부여 */
div[name^=name3]{
    background-color: lightcoral;
}

/* div요소중에서 class속성값이 ss로 끝나는 요소만 스타일 부여 */
div[class$=ss]{
    background-color: chartreuse;
}

/* class속성값이 div-class인 요소중에서도 name속성값이 
name3이 "포함"되어있는 요소 */
.div-class[name~=name3]{
    color: aliceblue;
}

6. 자식선택자 후손선택자

자식요소 : 바로 하위에 있는 요소들

        [표현법]
        - 자손선택자 (>)
         a > b {
            스타일속성 : 값;
         }
        - 후손선택자 ( )
         a  b {
            스타일속성 : 값;
         } 
    
/* id속성값이 test1 요소의 자손인 ul의 자손 li  */
#test1>ul>li{
    background-color: aqua;
} 

/* 후손선택자 a b: a요소의 후손 중에서 b요소들만 선택 */
#test1 li {
    color :darksalmon;
    background-color: brown;  
    /* 우선순위에 밀려 적용되지 않음, 후손선택자보다 자손선택자가 우선순위 높음 */
    
}

7. 동위(같은레벨)선택자

동위관계(같은레벨)이 있는 특정 요소 선택시 사용

        [표현법]
        - a요소 바로뒤!!에 있는  b요소 단 하나만을 선택
        a+b {
            스타일속성 : 값 
            ...
        }

        - a요소 뒤에 있는 b요소를 모두다 선택
        a~b {
            스타일속성 : 값;
            ...
        }

 

/* id가 test2인 요소 뒤에 있는 div요소 하나만(바로뒤) 선택 */
#test2+div{
    background-color: forestgreen;
}

/* id가 test2인 요소 뒤에 있는 ul요소 하나만 선택 */
#test2+ul{
    background-color: blueviolet;
}
/* id가 test2인 요소 뒤에있는 모든 ul요소 선택 */
#test2~ul{
    background-color: gold;
}

 

8. 반응선택자

사용자의 움직임에 따라 선택 되거나 안되는 선택자

        [표현법]
        - 해당요소 클릭시 스타일 부여하는 방법
          선택자: active {
            스타일 속성 : 값;
            .....
          }
        - 해당 요소에 마우스가 올라가는 순간 스타일 부여
        선택자: hover{
            스타일속성 : 값;
        }
    

 

    <div id="active-test" class="area">active테스트</div>
    <br>
    <div id="hover-test" class="area">hover테스트</div>
.area{
    width : 100px;
    height: 100px;
    background-color: aqua;
}

#active-test:active {
    color: coral;
    background-color: lemonchiffon;
    cursor: pointer;
}
/*  active속성: 클릭하면 바뀜! */


#hover-test:hover{
    color:aliceblue;
    background-color: chocolate;
    cursor: pointer
}
/*  hover속성: 커서가 해당영역에 올라가는 순간 바뀜! */

 

9.상태선택자

요소의 상태에 따라서 선택되는 선택자

        1. checked 상태
        2. focus 상태
        3. enabled 상태
        4. disabled상태
       
        
        [표현법]
        1) checked 상태 요소들
        선택자: checked{
            스타일 속성 :값
            .....
        }
        2)foucus가 맞춰진 input요소 선택
        선택자: focus{
            스타일속성 : 값;
            ...

        }
         3) enabled: 칸이 활성화되어있는 상태선택자
        선택자:enabled{
            스타일 속성 : 값 ;
        }


        4) disabled: 칸이 비활성호되어있는 상태
        선택자: disabled{
            스타일 속성 : 값;
        }
  • checked
/* type = checkedbox 인것들 선택하기
-->화면에서 checkbox가 "체크"로바뀔 때 스타일이 바뀜 */
input[type="checkbox"]:checked{
    width: 20px;
    height: 20px;
}
 <!--(input[type=checkbox]+label)*3 -->
    <input type="checkbox" checked><label for="banana">바나나</label>
    <input type="checkbox"><label for="watermelon">수박</label>
    <input type="checkbox"><label for="mango">망고</label>


  • focus
/* focus, 해당 박스에 커서가 갈 때 박스의 색깔을 바꾸고 싶다면 */
input[name^=user]:focus{
    background-color: burlywood;
}
     아이디: <input type="text" name="userId" placeholder="아이디를 기입하세요">
    <br>
     비밀번호: <input type="password" name="userPwd" placeholder="비밀번호를 입력하세요">
    <br>
    <button>클릭가능</button>
    <button disabled>클릭불가능</button>

 


  • enabled/disabled
  <button>클릭가능</button>
  <button disabled>클릭불가능</button>
button:enabled{
    background-color: indianred;
}

button:disabled{
    background-color: lightseagreen;
}

 

 

 

 

선택자 우선순위

순위 선언방식 설명 예시
1 !important 우선순위 최상위 명령어.
속성값 바로 뒤에 넣는다.
p { color: red !important; }
2 inline style html 문서에서 tag 내에 style을 정의한 것 <p style="color: red">
3 id Selector tag 내에 id를 정의한 후, #id 으로 선택 <p id="title">제목</p>
#title { color: red; }
4 class Selector tag 내에 class를 정의한 후, .class 으로 선택 <p class="subtitle">부제목</p>
.subtitle { color: red; }
5 tag Selector tag 요소를 선택자로 사용 p { color: red; }
6 universal Selector asterisk(*)로 요소 전체를 선택 * { color: red; } 

 

 

!important 우선순위 1위
id 선택자 vs class 선택자 id 선택자 우선
class 선택자 vs 요소 선택자 class 선택자 우선
요소 선택자 vs 전체 선택자 요소 선택자 우선
class 선택자 vs 특정 요소의 class 선택자 특정 태그의 class 우선
ex) .title vs h1.title : h1.title가 더 구체적임
같은 class 선택자에 대한 css 순서상 나중이 우선
같은 요소 선택자에 대한 css 순서상 나중이 우선

 

Reference

https://parkgaebung.tistory.com/72