{ ๊น๐พ์ CSS๋ ์ฌ๋ฐ๋ค } #2 - Selectors
๐์์, ํด๋์ค, ID ์ ํ์ (Type, Class & ID Selector)
Type Selector
p {
color: #212529;
}
blockquote {
background-color: #e0e0e0;
}
p {
color: #212529;
}
blockquote {
background-color: #e0e0e0;
}
HTML์ ํ๊ทธ ์์ฒด๋ฅผ ์ง์ ์ ์ผ๋ก ์ง์นญํ๋ ๊ฑฐ๋ค. ์์ ์ ํ์๋ผ๊ณ ํ๋ค.
Class Selector
<div class="box"> <!-- ... --> </div> <div class="box"> <!-- ... --> </div> <div class="box"> <!-- ... --> </div>
๋จ ํ๋ฒ์ ์คํ์ผ๋ง ์ ์ธ์ผ๋ก ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ๋์์ ์คํ์ผ๋ง ํ ์ ์์ด ๊ต์ฅํ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค.
<div class="box-0 box-1 box-2"> <!-- ... --> </div> .box-0.box-1 .box-0.box-2 .box-1.box-2 .box-0.box-1.box-2
ํ ์์์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ์ ์ธํ ์ ์๋ค. ๊ณต๋ฐฑ์์ด ๋ถ์ด ์์ผ๋ฉด ํ๋์ ์ ํ์๊ฐ ๋๊ธฐ ๋๋ฌธ์ ๊ณต๋ฐฑ์ด ํ์ํ๋ค.
ID Seletor
<div id="leesaerom"> <h1> Hello </h1> </div>
#leesaerom { background: #0066ff; }
๋จ ํ๋๋ง ์ ํํด์ ์คํ์ผ๋ง ํ ์ ์๋ค.
๐์์, ์์, ํ์ ์ ํ์ (Child, Descendant & Sibling Combinators)
Child Combinator
<section>
<h1>Selectors</h1>
<ul>
<li>
<h1>Child Combinator</h1>
<p>
Lorem, ipsum dolor.
</p>
</li>
<li>
<h1>Child Combinator</h1>
<p>
Lorem, ipsum dolor.
</p>
</li>
</ul>
</section>
section > h1 {
color: #ff4949;
}
<section>
<h1>Selectors</h1>
<ul>
<li>
<h1>Child Combinator</h1>
<p>
Lorem, ipsum dolor.
</p>
</li>
<li>
<h1>Child Combinator</h1>
<p>
Lorem, ipsum dolor.
</p>
</li>
</ul>
</section>
section > h1 {
color: #ff4949;
}
parent > child
: ๋ถ๋ชจ ํ๊ทธ ์์ ์๋ ์์์ ์ ํํ๋ค.
<section>
์์ <h1>
๊ณผ <ul>
๋ก ๊ตฌ์ฑ ๋์ด ์์ง๋ง CSS ํ์ผ์์ <section>
์์ <h1>
์ง์ ๋์ด ์์ด์ Selectors
์ ๋นจ๊ฐ์์ผ๋ก ํํ๋๋ค.
Descendant Combinator
<section> <h1>Selectors</h1> <ul> <li> <h1>Child Combinator</h1> <p> Lorem, ipsum dolor. </p> </li> <li> <h1>Child Combinator</h1> <p> Lorem, ipsum dolor. </p> </li> </ul> </section>
section h1 { color: #ff4949; }
parent descendant
: ๋ถ๋ชจ ํ๊ทธ ์์ ์๋ ๋ชจ๋ ์์์ ์ ํํ๋ค.
<section>
์์ ๋ชจ๋ ์์์ <h1>
์ ์ ํํด์ ๋นจ๊ฐ์์ผ๋ก ํํ๋๋ค.
Sibling Combinator
<section> <h1>Sibling combinators</h1> <ol> <li>Do something</li> <li class="active">Do something else</li> <li>Create something</li> <li>Create somthing else</li> <li>Make something</li> <li>Make something else</li> </ol> </section>
// parent + sibling .active { font-weight: 700; } .active + li { color: #ff4949; }
- parent + sibling
: ๋ถ๋ชจ ํ๊ทธ ๋ค์ ํ๊ทธ๋ฅผ ์ ํํ๋ค.
active
๊ธฐ์ค์ผ๋ก ๋ค์์ธ <li>
์ ํํด์ ๋นจ๊ฐ์์ผ๋ก ํํํ๋ค.
.active { font-weight: 700; } // parent ~ sibling .active ~ li { color: #0066ff; }
parent ~ sibling
: ๋ถ๋ชจ ํ๊ทธ ๋ค์ ๋ชจ๋ ํ๊ทธ๋ฅผ ์ ํํ๋ค.
active
๊ธฐ์ค์ผ๋ก ๋ค์์ ์ค๋ ๋ชจ๋ <li>
์ ํํด์ ํ๋์์ผ๋ก ํํํ๋ค.
๐๊ตฌ์กฐ์ ๊ฐ์ ํด๋์ค ์ ํ์ (Structual Pseudo-classes)
<section>
<h1>Structual Pseudo Class</h1>
<ol>
<li>Do something</li>
<li>Do something else</li>
<li>Create something</li>
<li>Create somthing else</li>
<li>Make something</li>
<li>Make something else</li>
</ol>
</section>
li:first-child {
color: #0066ff;
}
li:last-child {
color: #ffc82c;
}
li:nth-child(3) {
color: #ff4949;
}
<section>
<h1>Structual Pseudo Class</h1>
<ol>
<li>Do something</li>
<li>Do something else</li>
<li>Create something</li>
<li>Create somthing else</li>
<li>Make something</li>
<li>Make something else</li>
</ol>
</section>
li:first-child {
color: #0066ff;
}
li:last-child {
color: #ffc82c;
}
li:nth-child(3) {
color: #ff4949;
}
๊ฐ์ ํด๋์ค๋ ์ด๋ค ์ํ๋ ์ด๋ค ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ์ฌ์ฉํ ์ ์๋ ํด๋์ค์ด๋ค.
element:first-child
: ํ๊ทธ ์ค์ ์ฒซ๋ฒ์งธ ํ๊ทธ๋ฅผ ์ ํํ๋ค.element:last-child
: ํ๊ทธ ์ค์ ๋ง์ง๋ง ํ๊ทธ๋ฅผ ์ ํํ๋ค.element:nth-child(n)
: ์ฑ๊ทธ ์ค์ n๋ฒ์งธ ํ๊ทธ๋ฅผ ์ ํํ๋ค.
๐๋์ ๊ฐ์ ํด๋์ค ์ ํ์ (User Action Pseudo-classes)
<section>
<h1>User Action Pseudo Class</h1>
<a href="#">Youtube Channel</a>
<input type="email" placeholder="Enter your email"/>
</section>
a:hover {
background-color: #7e5bef;
}
a:active {
background-color: #592dea;
}
input {
outline: none;
box-shadow: none;
}
input:focus {
border-color: #1fb6ff;
}
input:active {
border-color: #009eeb;
}
<section>
<h1>User Action Pseudo Class</h1>
<a href="#">Youtube Channel</a>
<input type="email" placeholder="Enter your email"/>
</section>
a:hover {
background-color: #7e5bef;
}
a:active {
background-color: #592dea;
}
input {
outline: none;
box-shadow: none;
}
input:focus {
border-color: #1fb6ff;
}
input:active {
border-color: #009eeb;
}
์ ์ ์ ์ก์ ์ ๋ฐ๋ผ์ ๋ฐ์ํ๋ ์ ํ์์ด๋ค.
element:hover
: ์ด๋ค ์์๋ฅผ ๋ง์ฐ์ค๋ฅผ ๊ฐ๋ค ๋์ ๋ ์ํ๋ฅผ ํํํ๋ค.element:active
: ์ด๋ค ์์๋ฅผ ๋ง์ฐ์ค ํด๋ฆญ ํ์์๋ ๋ณํ๋ค.element:focus
:input
์ ์์ฑํ ์ ์๋ ์ํ๊ฐ ๋์์์ ์๋ ค์ค๋ ๋ณํ๋ค.
focus
์ active
๋ ์๋ฐํ ๋งํ๋ฉด ๋ค๋ฅธ ์ํ์ด๊ธด ํ์ง๋ง focus
๋ active
๋ฅผ ํฌํจ์ ํ๋ ์์ฃผ ๋ฏธ๋ฌํ ๊ด๊ณ์ด๋ค.
focus
: ์์๊ฐ ํฌ์ปค์ค ๋์์ ๋ (active ์ํ๋ ํฌ์ปค์ค ์ํ์ ์ผ๋ถ)active
: ์์๋ฅผ ๋ง์ฐ์ค๋ก ํด๋ฆญํ๋ ์ฐฐ๋์ ์๊ฐ
focus
์ํ์ผ ๋์ ์คํ์ผ์ ๊ธฐ๋ณธ์ผ๋ก ๊น๊ณ active
์ํ์ผ ๋ ์ถ๊ฐ๋ก ์คํ์ผ์ ์ถ๊ฐํด์ ๋ฎ์ด์ค๋ค.
๐CSS ์ ํ์ ์ฌ๋ฆผํฝ
p {
color: blue;
}
p {
color: hotpink;
}
p {
color: blue;
}
p {
color: hotpink;
}
CSS๋ ๋์ค์ ์ ์ธ๋ ์ ํ์์ ์คํ์ผ๋ง์ด ์ด์ ์ ์ ์ธ๋ ์ ํ์๋ฅผ ๋ฎ์ด๋ฒ๋ฆฐ๋ค. ๊ทธ ์ด์ ๋ Cascading Style Sheet์ Cascading ๋๋ฌธ์ด๋ค.
CSS ์ ํ์ ์ฐ์ ์์
- ID
- Class, Pseudo-class
- Type
<p id="text" class="a b c d e f g h i j k l m n o"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Libero, ducimus? </p>
#text { color: #0066ff; } .a.b.c.d.e.f.g.h.i.j.k.l.m.n.o { color: #ff4949; }
Rule Breakers (๋น์ถ์ฒ)
Inline Style
<p id="text" class="a b c d e f g h i j k l m n o" style="color: #ffc82c;"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Libero, ducimus? </p>
#text { color: #0066ff; } .a.b.c.d.e.f.g.h.i.j.k.l.m.n.o { color: #ff4949; }
์ด์ฌํ ์คํ์ผ์ ํ๋๋ผ๋ inline style
์ ๊ฐ๋ ฅํด์ inline style
์ด ์ฐ์ ์์๋ค.
!important
<p id="text" class="a b c d e f g h i j k l m n o" style="color: #ffc82c;"> Lorem ipsum dolor, sit amet consectetur adipisicing elit. Libero, ducimus? </p>
#text { color: #0066ff; } .a.b.c.d.e.f.g.h.i.j.k.l.m.n.o { color: #ff4949; } p { color: #ff4949 !important; }
inline style
๋ณด๋ค !important
๊ฐ ๋ ๊ฐ๋ ฅํ๋ค.
์ต์ข ์ ์ผ๋ก ์ฐ์ ์์๋
!important
(๋น์ถ์ฒ) >Inline Style
(๋น์ถ์ฒ) >ID
>Class
,Pseudo-class
>Type
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ({ ๊น๐พ์ CSS๋ ์ฌ๋ฐ๋ค } #2 - Selectors), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@dev-leesaerom/๊น์-CSS๋-์ฌ๋ฐ๋ค-1-Selectors์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค