[CSS] CSS Selector

HannahhhΒ·2022λ…„ 6μ›” 30일
0

CSS3

λͺ©λ‘ 보기
8/11

πŸ” CSS Selector


πŸ‘€ κΈ°λ³Έ μ…€λ ‰ν„°


βœ” 전체 μ…€λ ‰ν„°

*{ } : λ¬Έμ„œμ˜ λͺ¨λ“  μš”μ†Œλ₯Ό 선택

/* border-box μ˜ˆμ‹œ */
* {
  box-sizing: border-box;
}

βœ” νƒœκ·Έ μ…€λ ‰ν„°(κ·Έλ£Ή μ…€λ ‰ν„°)

tag { }: 같은 νƒœκ·Έλͺ…을 가진 λͺ¨λ“  μš”μ†Œ 선택(볡수 선택 κ°€λŠ₯)

h1 { }
div { }

section, h1 { }

βœ” id μ…€λ ‰ν„°

#id{ } : ν•΄λ‹Ή idλ₯Ό 가진 μš”μ†Œλ₯Ό 선택


βœ” class μ…€λ ‰ν„°

.class{ } : 같은 classλ₯Ό 가진 λͺ¨λ“  μš”μ†Œλ₯Ό 선택

<λ¬Έμ„œ λΆ„ν•  ν›„ , id class selector 링크걸기>

βœ” attribute μ…€λ ‰ν„°

tag[attribute] { } : 같은 속성을 가진 μš”μ†Œλ₯Ό 선택

a[href] { }
p[id="only"] { }
p[class~="out"] { }
p[class|="out"] { }
section[id^="sect"] { }
div[class$="2"] { }
div[class*="w"] { }



πŸ‘€ μžμ‹/후손/ν˜•μ œ μ…€λ ‰ν„°


βœ” μžμ‹ μ…€λ ‰ν„°

μš”μ†Œ > μ•„λž˜ μš”μ†Œ { }:첫 번째둜 μž…λ ₯ν•œ μš”μ†Œμ˜ λ°”λ‘œ μ•„λž˜ μžμ‹μΈ μš”μ†Œλ₯Ό 선택

Example) <header>λ°”λ‘œ μ•„λž˜μ— μžˆλŠ” 두 개의 pλŠ” μ„ νƒλ˜μ§€λ§Œ <span>의 μžμ‹μΈ pλŠ” μ„ νƒλ˜μ§€ μ•ŠλŠ”λ‹€.

header > p { }
<header>
	<p> <!-- 선택 -->
		<span>
			<p></p>
		</span>
	</p>
	<p> <!-- 선택 -->
		<span>
			<p></p>
		</span>
	</p>
</header>

βœ” 후손 μ…€λ ‰ν„°

μš”μ†Œ μš”μ†Œ { }:첫 번째둜 μž…λ ₯ν•œ μš”μ†Œμ˜ 후손을 선택.

Example) <header>의 μžμ‹μΈ <p>뿐만 μ•„λ‹ˆλΌ <span>의 μžμ‹μΈ <p>κΉŒμ§€ λͺ¨λ‘ 선택

header p {}
<header>
	<p><!-- 선택 -->
		<span>
			<p><!-- !!선택!! -->
			</p>
		</span>
	</p>
	<p><!-- 선택 -->
		<span>
			<p><!-- !!선택!! -->
			</p>
		</span>
	</p>
</header>

βœ” ν˜•μ œ μ…€λ ‰ν„°

μš”μ†Œ ~ μš”μ†Œ { }: 같은 λΆ€λͺ¨ μš”μ†Œλ₯Ό κ³΅μœ ν•˜λ©΄μ„œ, 첫 번째 μž…λ ₯ν•œ μš”μ†Œ 뒀에 μ˜€λŠ” 두 번째 μž…λ ₯ν•œ μš”μ†Œλ₯Ό λͺ¨λ‘ 선택

Example) <section>뒀에 μžˆλŠ” 3개의<p> λͺ¨λ‘ 선택

section ~ p { }
<header>
	<section></section>
	<p></p> <!-- 선택 -->
	<p></p> <!-- 선택 -->
	<p></p> <!-- 선택 -->
</header>

βœ” 인접 ν˜•μ œ μ…€λ ‰ν„°

μš”μ†Œ + μš”μ†Œ { }: 같은 λΆ€λͺ¨λ₯Ό κ³΅μœ ν•˜λ©΄μ„œ, 첫 번째 μž…λ ₯ν•œ μš”μ†Œ λ°”λ‘œ 뒀에 μ˜€λŠ” 두 번째 μž…λ ₯ν•œ μš”μ†Œλ₯Ό 선택

Example) <section>뒀에 μžˆλŠ” 3개의 <p>쀑 첫 번째 <p> 선택

section + p { }
<header>
	<section></section>
	<p></p> <!-- 선택 -->
	<p></p>
	<p></p>
</header>



πŸ‘€ 기타 μ…€λ ‰ν„°

μ„ νƒμž:μ˜μ‚¬ν΄λž˜μŠ€μ΄λ¦„ {속성: 속성값;}

βœ” 가상 클래슀 μ…€λ ‰ν„°(dynamic pseudo-classes)

μš”μ†Œμ˜ μƒνƒœ 정보에 κΈ°λ°˜ν•΄ μš”μ†Œλ₯Ό 선택

a:link { }    /* μ‚¬μš©μžκ°€ λ°©λ¬Έν•˜μ§€ μ•Šμ€ <a>μš”μ†Œλ₯Ό 선택 */
a:visited { } /* μ‚¬μš©μžκ°€ λ°©λ¬Έν•œ <a>μš”μ†Œλ₯Ό 선택. */
a:hover { }   /* 마우슀λ₯Ό <a>μš”μ†Œ μœ„μ— μ˜¬λ Έμ„ λ•Œ 선택 */
a:active { }  /* <a>μš”μ†Œκ°€ 클릭된 μƒνƒœμΌ λ•Œ 선택 */
a:focus { }   /* <a>μš”μ†Œμ— ν¬μ»€μŠ€κ°€ 듀어와 μžˆμ„ λ•Œ 선택 */

βœ” UI μš”μ†Œ μƒνƒœ μ…€λ ‰ν„°(UI element states pseudo-classes)

input:checked + span { }  /*<input>μš”μ†Œ μ€‘μ—μ„œ 체크 μƒνƒœμ˜ <input>μš”μ†Œλ₯Ό 선택 */
input:enabled + span { }  /*μ‚¬μš© κ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œ 선택 */
input:disabled + span { } /*μ‚¬μš© λΆˆκ°€λŠ₯ν•œ μƒνƒœμΌ λ•Œ 선택 */

βœ” ꡬ쑰 가상 클래슀 μ…€λ ‰ν„°(structural pseudo-classes)

p:first-child { }                      /* p μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, 첫 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택*/
ul > li:last-child { }                 /* ul의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, λ§ˆμ§€λ§‰ μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ li인 것을 선택 */
ul > li:nth-child(n) { }               /* ul의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, n번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ li인 것을 선택*/
section > p:nth-child(2n+1) { }        /* section의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, ν™€μˆ˜ 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ p인 것을 선택 */
ul > li:first-child { }                /* ul의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, 첫번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ li인 것을 선택 */
li:last-child { }                      /* li μ—˜λ¦¬λ¨ΌνŠΈ 쀑 λ§ˆμ§€λ§‰ μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택 */
div > div:nth-child(4) { }             /* div의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, λ„€ 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ div인 것을 선택 */
div:nth-last-child(2) { }              /* div의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, λ§ˆμ§€λ§‰μ—μ„œ 두 번째 μ—˜λ¦¬λ¨ΌνŠΈκ°€ div인 것을 선택 */
section > p:nth-last-child(2n + 1) { } /* section의 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, λ§ˆμ§€λ§‰μ—μ„œ ν™€μˆ˜ 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ p인 것을 선택 */
p:first-of-type { }                    /* p μ—˜λ¦¬λ¨ΌνŠΈμ˜ ν˜•μ œ μ—˜λ¦¬λ¨ΌνŠΈ 쀑 첫 번째 p μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택(first-childμ™€λŠ” λ‹€λ₯΄κ²Œ 첫 번째 μžμ‹ μ—˜λ¦¬λ¨ΌνŠΈκ°€ μ•„λ‹Œ, 처음 λ“±μž₯ν•˜λŠ” pλ₯Ό 선택) */
div:last-of-type { }                   /* div μ—˜λ¦¬λ¨ΌνŠΈμ˜ ν˜•μ œ μ—˜λ¦¬λ¨ΌνŠΈ 쀑 λ§ˆμ§€λ§‰ div μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택 */
ul:nth-of-type(2) { }                  /* p μ—˜λ¦¬λ¨ΌνŠΈμ˜ ν˜•μ œ μ—˜λ¦¬λ¨ΌνŠΈ 쀑 두 번째 p μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택 */
p:nth-last-of-type(1) { }              /* p μ—˜λ¦¬λ¨ΌνŠΈμ˜ ν˜•μ œ μ—˜λ¦¬λ¨ΌνŠΈ 쀑 λ§ˆμ§€λ§‰μ—μ„œ 첫 번째 p μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택 */

βœ” λΆ€μ • μ…€λ ‰ν„°

input:not([type="password"]) { }       /* p μ—˜λ¦¬λ¨ΌνŠΈ μ€‘μ—μ„œ, idκ°€ only인 μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό μ œμ™Έν•˜κ³  λͺ¨λ‘ 선택 */
div:not(:nth-of-type(2)) { }           /* div μ—˜λ¦¬λ¨ΌνŠΈμ˜ ν˜•μ œ μ—˜λ¦¬λ¨ΌνŠΈ 쀑 두 번째 div μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό μ œμ™Έν•œ λͺ¨λ“  div μ—˜λ¦¬λ¨ΌνŠΈλ₯Ό 선택 */

βœ” μ •ν•©μ„± 확인 μ…€λ ‰ν„°

input[type="text"]:valid { }
input[type="text"]:invalid { }



Reference: μ½”λ“œμŠ€ν…Œμ΄μΈ 

0개의 λŒ“κΈ€