본문 바로가기
웹(web)/프론트엔드-css

css 셀렉터 기본설명(css3 selector basic)

by 바코94 2020. 5. 3.

selector {(property : value;)+ }에서 selector 부분을 살펴보도록 한다.

 

 우리는 앞으로 ".class > #id + p ~ div" 와 같은 selector를 보고 어떤 것을 의미하는지 이해하면 되는 것이다. .class, #id, p, div가 들어가는 부분은 uni_selector라 지칭하고 >, +, ~ 와 같은 것을 op라고 지칭하도록 하겠다. 앞으로 css 문법을 보고 이해가 안 된다면 uni_selector를 모르거나 op를 모르는 것이라 보면 될 것이다. 추가 문법 등은 이 구조 하에서 추가하면 될 것이다. manual을 보지 않고 임의로 정한 방식이니 우선 이 글을 통해 이해하고 매뉴얼을 통해 정리하는 것을 추천한다. 

 

 개인적으로 간단히 정리해보면 selector는 다음과 같은 syntax를 같는다. 초반에 css를 접했을 때 많이 나오는 문법들만 추린 것이다. 대략적인 구조를 보고 insight를 얻기를 바란다. 

 

selector_list : selector [, selector] 

selector : uni_selector [op uni_selector] 

op : ' ' | '>' | '+' | '~' 등 

uni_selector : tag selector | class selector | id selector

 

 

1. uni_selector

1.1.tag

p{}: p 태그를 가리키게 된다. p 태그가 나오면 선택을 하는 방식이다. 모든 p태그를 가리킨다 볼 수 있다.

1.2 class

.class1{}:  태그 속성이<class="class1">로 되어있는 태그를 가리키게 된다. 

1.3 id

#p_id1{}:  태그 속성이 <id="p_id1">와 같이 id 값을 설정해둔 태그를 가리키게 된다. id는 unique한 값으로 설정해야 한다.

1.4 attribute

[class="class1"]: 태그의 속성 중에 class 속성이 있고 그 값이 "class1"인 것을 가리키게 된다.

1.5 universal 

* : 모든 요소를 가리킨다.

ns|* : namespace ns에 있는 모든 요소를 가리킨다.

 

2. op

2.1 ' ' (띄어쓰기)

div p{}: 이 방식을 사용하면 아래 예시에서 ~에 있는 p 태그에 모두 적용한다. 

<div>

    ~

</div>

 

2.2 '>'

div > p{}: '>' 기호를 사용하면 div의 바로 한 단계 아래에 있는 p 태그만 적용된다. 아래 예시에서 어떤  p에 적용되는지 예상해보자.

<div>

    <p>p1</p>

    <div> <p>p2</p></div>

<div>

 

 예시에서는 p1과 p2에 모두 적용된다. 왜냐하면 p태그이면서 부모 태그가 div이면 되기 때문이다. 이 말은 즉, 모든 p에 대해서 div가 부모인지를 체크하고 적용하는 과정이라는 것이다. 제일 상위에 있는 div에 적용하는 것이 아닌 것이다.

 

2.3 '~'

div ~ p 

같은 level 중에서 div 뒤에 나오는 모든 p에 적용된다.

 

2.4 '+' 

div + p

같은 level 중에서 div 바로 뒤에 나오면서 p인 태그이면 적용된다.

응용하면 p+p와 같이 쓸 수 있다. 즉 첫 번째 p태그를 제외하고 모두 선택할 수 있다. 

또한 다음과 같은 코드에서 p+p를 사용하면 어떻게 될까? p의 같은 레벨이면서 바로 뒤에 있는 p인 태그에 적용되므로 p2, p3, p4에 적용된다. 다양한 응용이 가능할 것이다.

<div>

<p>p1<p/>

<p>p2<p/>

<p>p3<p/>

<p>p4<p/>

</div>

 

 위의 설명 정도를 제대로 알고 구조를 익히고 있으면 selector를 한눈에 볼 수 있다. 마우스가 올라간 태그를 찾거나 태그의 마지막 child를 찾는 것은 어떻게 할 수 있을까? 이 부분은 이후 글에서 정리하도록 한다.

 

 

 

syntax manual 사이트

https://developer.mozilla.org/en-US/docs/Web/CSS/Reference

'웹(web) > 프론트엔드-css' 카테고리의 다른 글

CSS Height and Width  (0) 2020.05.05
css3 박스 모델의 통찰(css3 box model insight)  (0) 2020.05.04
박스 모델  (0) 2020.05.03
Inline element vs Block element 비교  (0) 2020.05.02
css code structure(css 코드 구조)  (0) 2020.05.02