1. ๊ฐ์
style๋ฅผ ์ ์ฉ ํ๊ณ ์ํ๋ HTML์์๋ฅผ ํน์ ํ ํ์๊ฐ ์๋ค. ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด ์
๋ ํฐ/์ ํ์(Selector)์ด๋ค. style๋ฅผ ์ ์ฉํ๊ณ ์ํ๋ HTML ์์๋ฅผ ์
๋ ํฐ๋ก ํน์ ํ๊ณ ์ ํ๋ ์์์ ์คํ์ผ์ ์ ์ํ๋ ๊ฒ. ๋ณต์๊ฐ์ ์
๋ ํฐ๋ฅผ ์ฐ์ํ์ฌ ์ง์ ํ ์ ์์ผ๋ฉฐ ์ผํ(,)๋ก ๊ตฌ๋ถํจ.
ํ๊ทธ(tag): <p></p>
์ ๊ฐ์ ํ๊ทธ ์์ฒด
์์(element): <p>hello world</p>
์์ <p>
ํ๊ทธ ๋ฐ ๋ด๋ถ ๋ถ๋ถ์ ๋ชจ๋ ํฌํจ
<p>
ํ๊ทธ๋ฅผ ์ ์ฉํ ์คํ์ผ์ด๋ผ๋ ํํ์ ์ณ์ง ์์. p์์์ ์ ์ฉํ๋ ์คํ์ผ๋ก ํํํ๋ ๊ฒ์ด ์ณ๋ฐ๋ฆ.
2. ์ ์ฒด ์
๋ ํฐ(Universal Selector)
์ ์ฒด ์
๋ ํฐ๋ ์คํ์ผ์ ๋ฌธ์์ ๋ชจ๋ ์์์ ์ ์ฉํ ๋ ์ฌ์ฉ. html ์์๋ฅผ ํฌํจํ ์์๊ฐ ์ ํ๋จ.(head ์์๋ ํฌํจ)
๊ธฐ๋ณธํ * {์์ฑ: ๊ฐ;}
Copy ...
< head >
< style >
/* ๋ชจ๋ ์์๋ฅผ ์ ํ */
* {
color : red ;
}
</ style >
</ head >
< body >
< h1 >Welcome my TIL</ h1 >
< p >๋ฐ๊ฐ์ต๋๋ค.</ p >
< span >์๋
ํ์ธ์.</ span >
</ body >
3. ํ๊ทธ/ํ์
์
๋ ํฐ(Type Selector)
ํ๊ทธ ์
๋ ํฐ๋ ํน์ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ ์์์ ์คํ์ผ์ ์ ์ฉ. ํ๊ทธ ์ ํ์๋ฅผ ์ฌ์ฉํด ์คํ์ผ์ ์ง์ ํ๋ฉด ํด๋น ํ๊ทธ๋ฅผ ์ฌ์ฉํ ๋ชจ๋ ์์์ ์ ์ฉ.
๊ธฐ๋ณธํ ํ๊ทธ๋ช
{ ์คํ์ผ ๊ท์น }
Copy < head >
< style >
/* ๋ชจ๋ p ํ๊ทธ ์์๋ฅผ ์ ํ */
p {
color : red ;
}
</ style >
</ head >
< body >
< h1 >Welcome my TIL</ h1 >
< p >๋ฐ๊ฐ์ต๋๋ค.</ p >
< p >์๋์ ๋ด์ฉ์ ๋ณด์ธ์.</ p >
< span >์๋
ํ์ธ์.</ span >
</ body >
4. ID ์
๋ ํฐ(ID Selector)
id ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์ง์ ํ์ฌ ์ผ์นํ๋ ์์๋ฅผ ์ ํ. id ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์ค๋ณต๋ ์ ์๋ ์ ์ผํ ๊ฐ์ด๋ฏ๋ก ์ฃผ๋ก ๋ฌธ์์ ๋ ์ด์์๊ณผ ๊ด๋ จ๋ ์คํ์ผ์ ์ง์ ํ๋๋ฐ ์ฌ์ฉ.
๊ธฐ๋ณธํ #id ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ { ์คํ์ผ ๊ท์น }
Copy < head >
< style >
/* id ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด header์ธ ์์๋ฅผ ์ ํ */
#header {
color : red ;
}
</ style >
</ head >
< body >
< header id = "header" >
< h1 >Welcome my TIL</ h1 >
< p >๋ฐ๊ฐ์ต๋๋ค.</ p >
< p >์๋์ ๋ด์ฉ์ ๋ณด์ธ์.</ p >
< span >์๋
ํ์ธ์.</ span >
</ header >
</ body >
5. ํด๋์ค ์
๋ ํฐ(Class Selector)
class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์ง์ ํ์ฌ ์ผ์นํ๋ ์์๋ฅผ ์ ํ. class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์ค๋ณต๋ ์ ์์.
๊ธฐ๋ณธํ .class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ { ์คํ์ผ ๊ท์น }
Copy < head >
< style >
/* ๋ชจ๋ p ํ๊ทธ ์์๋ฅผ ์ ํ */
p {
background-color : black ;
}
/* class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด text1์ธ ๋ชจ๋ ์์๋ฅผ ์ ํ */
.text1 {
color : yellow ;
}
/* class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด text2์ธ ๋ชจ๋ ์์๋ฅผ ์ ํ */
.text2 {
color : #fff ;
}
/* class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด text-large์ธ ๋ชจ๋ ์์๋ฅผ ์ ํ */
.text-large {
font-size : 200 % ;
}
/* class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด text-center์ธ ๋ชจ๋ ์์๋ฅผ ์ ํ */
.text-center {
text-align : center ;
}
</ style >
</ head >
< body >
< header id = "header" >
< h1 >Welcome my TIL</ h1 >
< p class = "text1 text-large" >๋ฐ๊ฐ์ต๋๋ค.</ p >
< p class = "text1 text-center" >์๋์ ๋ด์ฉ์ ๋ณด์ธ์.</ p >
< p class = "text2 text-large text-center" >์๋์ ๋ด์ฉ์ ๋ณด์ธ์.</ p >
< span >์๋
ํ์ธ์.</ span >
</ header >
</ body >
HTML์์์ class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ฌ๋ฌ ๊ฐ ์ง์ ํ ์ ์์. ์์ ๊ฐ์ด ํด๋์ค ์
๋ ํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ๋ฆฌ ์คํ์ผ์ ์ ์ํด ๋๊ณ , HTML์์๋ ์ด๋ฏธ ์ ์๋์ด ์๋ ํด๋์ค๋ฅผ ์ง์ ํ๋ ๊ฒ์ผ๋ก ํ์ํ ์คํ์ผ์ ์ง์ ํ ์ ์์. ์ด๋ ์ฌ์ฌ์ฉ ์ ์ธก๋ฉด์์ ์ ์ฉํจ.
Tailwind Css์ ๊ฐ๋
์ด์ง ์์๊น? ์ถ๋ค.
๊ณต์๋ฌธ์
6. ์ดํธ๋ฆฌ๋ทฐํธ ์
๋ ํฐ(Attribute Selector)
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ๋ ๋ชจ๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ] { ์คํ์ผ ๊ท์น }
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ์ง๋ฉฐ ์ง์ ๋ ๊ฐ๊ณผ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ด ์ผ์นํ๋ ๋ชจ๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ="๊ฐ"] { ์คํ์ผ ๊ท์น }
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ์ด (๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋) ๋จ์ด๋ก ํฌํจํ๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ~="๊ฐ"] { ์คํ์ผ ๊ท์น }
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ์ ๊ฐ๊ณผ ์ผ์นํ๊ฑฐ๋ ์ง์ ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ ๋ค ์ฐ์ด์ ํ์ดํฐ("๊ฐ-")์ผ๋ก ์์ํ๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ|="๊ฐ"] { ์คํ์ผ ๊ท์น }
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ผ๋ก ์์ํ๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ^="๊ฐ"] { ์คํ์ผ ๊ท์น }
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ผ๋ก ๋๋๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ$="๊ฐ"] { ์คํ์ผ ๊ท์น }
์ง์ ๋ ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ํฌํจํ๋ ์์๋ฅผ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐ[์ดํธ๋ฆฌ๋ทฐํธ*="๊ฐ"] { ์คํ์ผ ๊ท์น }
Copy < head >
< style >
/* a ์์ ์ค์ href ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ๋ ๋ชจ๋ ์์ */
a [ href ] {
color : red ;
}
/* a ์์ ์ค์ target ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด "_blank"์ธ ๋ชจ๋ ์์ */
a [ target = "_blank" ] {
font-size : 28 px ;
}
/* h1 ์์ ์ค์ title ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ "first"๋ฅผ ๋จ์ด๋ฅผ ํฌํจํ๋ ์์ */
h1 [ title ~= "first" ] {
color : blue ;
}
/* h1 ์์ ์ค์ lang ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด "en"๊ณผ ์ผ์นํ๊ฑฐ๋ "en-"๋ก ์์ํ๋ ์์ */
h1 [ lang |= "en" ] {
background-color : yellow ;
}
/* a ์์ ์ค์ href ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด "https://"๋ก ์์ํ๋ ์์ */
a [ href ^= "https://" ]
{
font-weight : 700 ;
}
/* a ์์ ์ค์ href ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด ".html"๋ก ๋๋๋ ์์ */
a [ href $= ".html" ] {
color : green ;
}
/* h1 ์์ ์ค์์ class ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ "test"๋ฅผ ํฌํจํ๋ ์์ */
h1 [ class *= "test" ] {
font-style : italic ;
}
</ style >
</ head >
< body >
< header id = "header" >
< a href = "https://www.poiemaweb.com" >poiemaweb.com</ a >< br />
< a href = "https://www.google.com" target = "_blank" >google.com</ a >< br />
< a href = "https://www.naver.com" target = "_top" >naver.com</ a >< br />
< a href = "http://www.test.com" target = "_top" >test.com</ a >
< h1 title = "heading first" lang = "en" class = "first_test" >Heading first</ h1 >
< h1 title = "heading-first" lang = "en-us" class = "second" >Heading-first</ h1 >
< h1 title = "heading second" lang = "en-gb" class = "test" >Heading second</ h1 >
< h1 title = "heading third" lang = "us" class = "second_test" >Heading third</ h1 >
< h1 title = "heading third" lang = "no" >Heading third</ h1 >
< a href = "test.html" >test.html</ a >< br />
< a href = "test.jsp" >test.jsp</ a >
</ header >
</ body >
7. ๋ณตํฉ ์
๋ ํฐ (Combinator)
7-1. ํ์ ์
๋ ํฐ (Descendant Combinator)
์์ ์ 1 level ์์์ ์ํ๋ ์์๋ฅผ ๋ถ๋ชจ ์์, 1 level ํ์์ ์ํ๋ ์์๋ฅผ ์์ ์์(์์ ์์)๋ผ ํจ. ์์ ๋ณด๋ค n level ํ์์ ์ํ๋ ์ํ๋ ์์๋ ํ์ ์์(ํ์ ์์)๋ผ ํจ.
Copy < body >
< div >
< h2 >๋๋ ์์์ด๋ฉด์ ํ์์ด์์.</ h2 >
< p >๋๋ ์์์ด๋ฉด์ ํ์์ด์์.</ p >
< span >
< p >๋๋ ํ์์ด์์.</ p >
</ span >
</ div >
</ body >
๊ธฐ๋ณธํ ์
๋ ํฐA ์
๋ ํฐB { ์คํ์ผ ๊ท์น }
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* div ์์์ ํ์์์ ์ค p ์์ */
div p {
color : red ;
}
</ style >
</ head >
< body >
< h1 >Heading</ h1 >
< div >
< p >paragraph 1</ p >
< p >paragraph 2</ p >
< span >< p >paragraph 3</ p ></ span >
</ div >
< p >paragraph 4</ p >
</ body >
</ html >
paragraph 4๋ฅผ ์ ์ธํ ๋๋จธ์ง ๊ฒ๋ค์ ์คํ์ผ์ด ์ ์ฉ๋จ.
7-2. ์์ ์
๋ ํฐ (Child Combinator)
์์ ์
๋ ํฐ๋ ์
๋ ํฐA์ ๋ชจ๋ ์์ ์์ ์ค ์
๋ ํฐB์ ์ผ์นํ๋ ์์๋ฅผ ์ ํ. ํ์์ ์๋.
๊ธฐ๋ณธํ ์
๋ ํฐA > ์
๋ ํฐB { ์คํ์ผ ๊ท์น }
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* div ์์์ ์์์์ ์ค p ์์ */
div > p {
color : red ;
}
</ style >
</ head >
< body >
< h1 >Heading</ h1 >
< div >
< p >paragraph 1</ p >
< p >paragraph 2</ p >
< span >< p >paragraph 3</ p ></ span >
</ div >
< p >paragraph 4</ p >
</ body >
</ html >
paragraph 1, 2๋ง ์คํ์ผ์ด ์ ์ฉ๋จ.
7-3. ํ์ (๋์) ์
๋ ํฐ (Sibling Combinator)
ํ์ (๋์) ์
๋ ํฐ๋ ํ์ ๊ด๊ณ(๋์ ๊ด๊ณ)์์ ๋ค์ ์์นํ๋ ์์๋ฅผ ์ ํํ ๋ ์ฌ์ฉํ๋ค.
7-3-1. ์ธ์ ํ์ ์
๋ ํฐ (Adjacent Sibling Combinator)
์
๋ ํฐA์ ํ์ ์์ ์ค ์
๋ ํฐA ๋ฐ๋ก ๋ค ์ ์์นํ๋ ์
๋ ํฐB ์์๋ฅผ ์ ํ. A์ B์ฌ์ด์ ๋ค๋ฅธ ์์๊ฐ ์กด์ฌํ๋ฉด ์ ํ๋์ง ์์.
๊ธฐ๋ณธํ ์
๋ ํฐA + ์
๋ ํฐB { ์คํ์ผ ๊ท์น }
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* p ์์์ ํ์ ์์ ์ค์ p ์์ ๋ฐ๋ก ๋ค์ ์์นํ๋ ul ์์๋ฅผ ์ ํํ๋ค. */
p + ul {
color : red ;
}
</ style >
</ head >
< body >
< div >A div element.</ div >
< ul >
< li >Coffee</ li >
< li >Tea</ li >
< li >Milk</ li >
</ ul >
< p >The first paragraph.</ p >
<!-- ์๋์ ul์์(ํ์์์ ํฌํจ)๊ฐ ์คํ์ผ์ด ์ ์ฉ๋๋ค. -->
< ul >
< li >Coffee</ li >
< li >Tea</ li >
< li >Milk</ li >
</ ul >
< h2 >Another list</ h2 >
< ul >
< li >Coffee</ li >
< li >Tea</ li >
< li >Milk</ li >
</ ul >
</ body >
</ html >
7-3-2. ์ผ๋ฐ ํ์ ์
๋ ํฐ (General Sibling Combinator)
์
๋ ํฐA์ ํ์ ์์ ์ค ์
๋ ํฐA ๋ค์ ์์นํ๋ ์
๋ ํฐB ์์๋ฅผ ๋ชจ๋ ์ ํ
๊ธฐ๋ณธํ ์
๋ ํฐA ~ ์
๋ ํฐB { ์คํ์ผ ๊ท์น }
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* p ์์์ ํ์ ์์ ์ค์ p ์์ ๋ค์ ์์นํ๋ ul ์์๋ฅผ ๋ชจ๋ ์ ํํ๋ค. */
p ~ ul {
color : red ;
}
</ style >
</ head >
< body >
< div >A div element.</ div >
< ul >
< li >Coffee</ li >
< li >Tea</ li >
< li >Milk</ li >
</ ul >
< p >The first paragraph.</ p >
<!-- ์๋์ ul์์(ํ์์์ ํฌํจ)๊ฐ ์คํ์ผ์ด ์ ์ฉ๋๋ค. -->
< ul >
< li >Coffee</ li >
< li >Tea</ li >
< li >Milk</ li >
</ ul >
< h2 >Another list</ h2 >
<!-- ์๋์ ul์์(ํ์์์ ํฌํจ)๊ฐ ์คํ์ผ์ด ์ ์ฉ๋๋ค. -->
< ul >
< li >Coffee</ li >
< li >Tea</ li >
< li >Milk</ li >
</ ul >
</ body >
</ html >
8. ๊ฐ์ ํด๋์ค ์
๋ ํฐ (Pseudo-Class Selector)
๊ฐ์ ํด๋์ค๋ ์์์ ํน์ ์ํ์ ๋ฐ๋ผ ์คํ์ผ์ ์ ์ํ ๋ ์ฌ์ฉ.
๋ง์ฐ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋
๋งํฌ๋ฅผ ๋ฐฉ๋ฌธํ์ ๋์ ์์ง ๋ฐฉ๋ฌธํ์ง ์์์ ๋
ํฌ์ปค์ค๊ฐ ๋ค์ด์ ์์ ๋
์ด๋ฌํ ํน์ ์ํ์๋ ์๋ ํด๋์ค๊ฐ ์กด์ฌํ์ง ์์ง๋ง ๊ฐ์ ํด๋์ค๋ฅผ ์์๋ก ์ง์ ํ์ฌ ์ ํํ๋ ๋ฐฉ๋ฒ
๊ฐ์ ํด๋์ค๋ ๋ง์นจํ(.) ๋์ ์ฝ๋ก (:)์ ์ฌ์ฉ, ๊ฐ์ ํด๋์ค๋ ๋ฏธ๋ฆฌ ์ ์๋ ์ด๋ฆ์ด ์๊ธฐ ๋๋ฌธ์ ์์์ ์ด๋ฆ์ ์ฌ์ฉํ ์ ์์.
์ฌ์ฉ๋ฒ ์
๋ ํฐ:๊ฐ์ํด๋์ค { ํด๋์ค ๊ท์น }
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* a ์์๊ฐ hover ์ํ์ผ ๋ */
a :hover {
color : red ;
}
/* input ์์๊ฐ focus ์ํ์ผ ๋ */
input :focus {
background-color : yellow ;
}
</ style >
</ head >
< body >
< a href = "#" >Hover me</ a >< br />< br />
< input type = "text" placeholder = "focus me" />
</ body >
</ html >
8-1. ๋งํฌ ์
๋ ํฐ (Link pseudo-classes), ๋์ ์
๋ ํฐ (User action pseudo-classes)
์
๋ ํฐ๊ฐ ๋ฐฉ๋ฌธํ์ง ์๋ ๋งํฌ์ผ ๋
์
๋ ํฐ๊ฐ ๋ฐฉ๋ฌธํ ๋งํฌ์ผ ๋
์
๋ ํฐ๊ฐ ๋ง์ฐ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋
์
๋ ํฐ๊ฐ ํด๋ฆญ๋ ์ํ์ผ ๋
์
๋ ํฐ์ ํฌ์ปค์ค๊ฐ ๋ค์ด์ ์์ ๋
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* a ์์๊ฐ ๋ฐฉ๋ฌธํ์ง ์์ ๋งํฌ์ผ ๋ */
a :link {
color : red ;
}
/* a ์์๊ฐ ๋ฐฉ๋ฌธํ ๋งํฌ์ผ ๋ */
a :visited {
color : blue ;
}
/* a ์์์ ๋ง์ฐ์ค๊ฐ ์ฌ๋ผ์ ์์ ๋ */
a :hover {
font-weight : 700 ;
}
/* a ์์๊ฐ ํด๋ฆญ๋ ์ํ์ผ ๋ */
a :active {
color : green ;
}
/* text input ์์์ password input ์์์ ํฌ์ปค์ค๊ฐ ๋ค์ด์ ์์ ๋ */
input [ type = "text" ] :focus ,
input [ type = "password" ] :focus {
color : red ;
}
</ style >
</ head >
< body >
< a href = "#" target = "_blank" >This is a link</ a >< br />
< input type = "text" value = "I'll be red when focused" />< br />
< input type = "password" value = "I'll be red when focused" />
</ body >
</ html >
8-2. UI ์์ ์ํ ์
๋ ํฐ (UI element states pseudo-classes)
์
๋ ํฐ๊ฐ ์ฒดํฌ ์ํ์ผ ๋
์
๋ ํฐ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ์ผ ๋
์
๋ ํฐ๊ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ์ํ์ผ ๋
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* input ์์๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ์ํ์ผ ๋, input ์์ ๋ฐ๋ก ๋ค์ ์์นํ๋ ์ธ์ ํ์ span ์์๋ฅผ ์ ํ */
input :enabled + span {
color : red ;
}
/* input ์์๊ฐ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ ์ํ์ผ ๋, input ์์ ๋ฐ๋ก ๋ค์ ์์นํ๋ ์ธ์ ํ์ span ์์๋ฅผ ์ ํ */
input :disabled + span {
color : blue ;
}
/* input ์์๊ฐ ์ฒดํฌ ์ํ์ผ ๋, input ์์ ๋ฐ๋ก ๋ค์ ์์นํ๋ ์ธ์ ํ์ span ์์๋ฅผ ์ ํ */
input :checked + span {
color : red ;
}
</ style >
</ head >
< body >
< input type = "radio" checked = "checked" value = "male" name = "gender" />
< span >Male</ span >< br />
< input type = "radio" value = "female" name = "gender" /> < span >Female</ span
>< br />
< input type = "radio" value = "neuter" name = "gender" disabled />
< span >Neuter</ span >
< hr />
< input type = "checkbox" checked = "checked" value = "bicycle" />
< span >I have a bicycle</ span >< br />
< input type = "checkbox" value = "car" /> < span >I have a car</ span >< br />
< input type = "checkbox" value = "motorcycle" disabled />
< span >I have a motorcycle</ span >
</ body >
</ html >
8-3. ๊ตฌ์กฐ ๊ฐ์ ํด๋์ค ์
๋ ํฐ (Structural pseudo-classes)
์
๋ ํฐ์ ํด๋นํ๋ ๋ชจ๋ ์์ ์ค ์ฒซ๋ฒ์งธ ์์์ธ ์์๋ฅผ ์ ํ, ํ์ ์์ ์ค ์ ์ผ ์ฒซ ์์๋ฅผ ์ ํ
์
๋ ํฐ์ ํด๋นํ๋ ๋ชจ๋ ์์ ์ค ๋ง์ง๋ง ์์์ธ ์์๋ฅผ ์ ํ, ํ์ ์์ ์ค ์ ์ผ ๋ง์ง๋ง ์์๋ฅผ ์ ํ
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* p ์์ ์ค์์ ์ฒซ๋ฒ์งธ ์์์ ์ ํ */
p :first-child {
color : red ;
}
/* p ์์ ์ค์์ ๋ง์ง๋ง ์์์ ์ ํ */
/* body ์์์ ๋๋ฒ์งธ p ์์๋ ๋ง์ง๋ง ์์ ์์๊ฐ ์๋๋ค.
body ์์์ ๋ง์ง๋ง ์์ ์์๋ div ์์์ด๋ค. */
p :last-child {
color : blue ;
}
</ style >
</ head >
< body >
< p >This paragraph is the first child of its parent (body).</ p >
< h1 >Welcome to My Homepage</ h1 >
< p >This text isn't selected: it's not last child.</ p >
< div >
< p >This paragraph is the first child of its parent (div).</ p >
< p >This paragraph is not the first child of its parent.</ p >
</ div >
</ body >
</ html >
์
๋ ํฐ์ ํด๋นํ๋ ๋ชจ๋ ์์ ์ค ์์์ n๋ฒ์งธ ์์์ธ ์์๋ฅผ ์ ํ
์
๋ ํฐ์ ํด๋นํ๋ ๋ชจ๋ ์์ ์ค ๋ค์์ n๋ฒ์งธ ์์์ธ ์์๋ฅผ ์ ํ
์
๋ ํฐ์ ํด๋นํ๋ ์์์ ๋ถ๋ชจ ์์์ ์์ ์์ ์ค ์ฒซ๋ฒ์งธ ๋ฑ์ฅํ๋ ์์๋ฅผ ์ ํ
์
๋ ํฐ์ ํด๋นํ๋ ์์์ ๋ถ๋ชจ ์์์ ์์ ์์ ์ค ๋ง์ง๋ง์ ๋ฑ์ฅํ๋ ์์๋ฅผ ์ ํ
์
๋ ํฐ์ ํด๋นํ๋ ์์์ ๋ถ๋ชจ ์์์ ์์ ์์ ์ค ์์์ n๋ฒ์งธ ๋ฑ์ฅํ๋ ์์๋ฅผ ์ ํ
์
๋ ํฐ์ ํด๋นํ๋ ์์์ ๋ถ๋ชจ ์์์ ์์ ์์ ์ค ๋ค์์ n๋ฒ์งธ ๋ฑ์ฅํ๋ ์์๋ฅผ ์ ํ
๊ตฌ์กฐ ๊ฐ์ ์
๋ ํฐ๋ ์๊ฐ๋ณด๋ค ๊ตฌ๋ณํ๊ธฐ๊ฐ ์ด๋ ต๋ค. ์ฌ๋ฌ๋ฒ ์ฐ๋ฉด์ ์ต์ํด์ง๋๋ก ๋
ธ๋ ฅํ๊ธฐ
๊ฐ๊ฐ์ ๊ตฌ์กฐ ๊ฐ์ ์
๋ ํฐ๋ง๋ค ํน์ง์ด ์๋ค. ๋ชจ๋ ๋ค๋ฅด๋ฏ๋ก ์ํฉ์ ๋ง๊ฒ ๊ณ ๋ฏผํ๋ฉฐ ์ฌ์ฉํ๊ธฐ
์ํฉ์ ๋ฐ๋ผ์๋ ๊ฐ์ ์์๋ฅผ ์ ํํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
8-4. ๋ถ์ ์
๋ ํฐ (Negation pseudo-class)
์
๋ ํฐ์ ํด๋นํ์ง ์๋ ๋ชจ๋ ์์๋ฅผ ์ ํ
์ฌ์ฉ๋ฒ :not(์
๋ ํฐ) { ์คํ์ผ ๊ท์น }
Copy <! DOCTYPE html >
< head >
< style >
/* input ์์ ์ค์์ type ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ด password๊ฐ ์๋ ์์๋ฅผ ์ ํ */
input :not ([ type = "password" ]) {
color : red ;
}
</ style >
</ head >
< body >
< input type = "text" value = "Text input" />
< input type = "email" value = "email input" />
< input type = "password" value = "Password input" />
</ body >
Copy <! DOCTYPE html >
< head >
< style >
div {
max-width : 300 px ;
padding : 10 px ;
margin-bottom : 10 px ;
}
/* div ์์ ์ค์์ 1, 4, 7...๋ฒ์งธ ๋ฑ์ฅํ๋ ์์๊ฐ ์๋ ์์๋ง์ ์ ํ */
/* 1, 4, 7... : ๊ณต์ฐจ๊ฐ 3์ธ ๋ฑ์ฐจ์์ด */
div :not ( :nth-child ( 3n + 1 )) {
color : red ;
}
/* div ์์ ์ค์์ 4๋ฒ์งธ ์ดํ ๋ฑ์ฅํ๋ ์์๊ฐ ์๋ ์์๋ง์ ์ ํ */
div :not ( :nth-of-type ( n + 4 )) {
background-color : yellow ;
}
</ style >
</ head >
< body >
< div >1</ div >
< div >2</ div >
< div >3</ div >
< div >4</ div >
< div >5</ div >
< div >6</ div >
< div >7</ div >
</ body >
์์ ๊ฒฝ์ฐ nth-child()
๊ณผ nth-of-type()
์ค ์๋ฌด๊ฑฐ๋ ์ฌ์ฉํด๋ ๊ฐ์ ์์๋ค์ด ์ ํ๋๋ค.
8-5. ์ ํฉ์ฑ ์ฒดํฌ ์
๋ ํฐ (validity pseudo-class)
์ ํฉ์ฑ ๊ฒ์ฆ์ด ์ฑ๊ณตํ input ์์ ๋๋ form ์์๋ฅผ ์ ํํ๋ค.
์ ํฉ์ฑ ๊ฒ์ฆ์ด ์คํจํ input ์์ ๋๋ form ์์๋ฅผ ์ ํํ๋ค.
Copy <! DOCTYPE html >
< html >
< head >
< style >
/* ์ ํฉ์ฑ ๊ฒ์ฆ์ ์ฑ๊ณตํ ๊ฒฝ์ฐ */
input [ type = "text" ] :valid {
background-color : white ;
}
/* ์ ํฉ์ฑ ๊ฒ์ฆ์ ์คํจํ ๊ฒฝ์ฐ */
input [ type = "text" ] :invalid {
background-color : red ;
}
</ style >
</ head >
< body >
< label
>์
๋ ฅ๊ฐ์ด ๋ฐ๋์ ํ์
< input type = "text" required />
</ label >
</ body >
</ html >
9. ๊ฐ์ ์์ ์
๋ ํฐ (Pseudo-Element Selector)
๊ฐ์ ์์๋ ์์์ ํน์ ๋ถ๋ถ์ ์คํ์ผ์ ์ ์ฉํ๊ธฐ ์ํ์ฌ ์ฌ์ฉ
์์ ์ฝํ
์ธ ์ ์ฒซ๊ธ์ ๋๋ ์ฒซ์ค
์์ ์ฝ์ฒธ์ธ ์ ์ ๋๋ ๋ค
์ฌ์ฉ๋ฒ ์
๋ ํฐ::pseudo-element { ์คํ์ผ ๊ท์น}
์ฝํ
์ธ ์ ์ฒซ๊ธ์๋ฅผ ์ ํ
์ฝํ
์ธ ์ ์ฒซ์ค์ ์ ํ, ๋ธ๋ก ์์์๋ง ์ ์ฉ
์ฝํ
์ธ ์ ๋ค์ ์์นํ๋ ๊ณต๊ฐ์ ์ ํ, ์ผ๋ฐ์ ์ผ๋ก content
ํ๋กํผํฐ์ ํจ๊ป ์ฌ์ฉ
์ฝํ
์ธ ์ ์์ ์์นํ๋ ๊ณต๊ฐ์ ์ ํ, ์ผ๋ฐ์ ์ผ๋ก content
ํ๋กํผํฐ์ ํจ๊ป ์ฌ์ฉ
๋๋๊ทธ ํ ์ฝํ
์ธ ๋ฅผ ์ ํ, iOS Safari ๋ฑ ์ผ๋ถ ๋ธ๋ผ์ฐ์ ์์๋ ๋์ํ์ง ์์
Copy <! DOCTYPE html >
< head >
< style >
/* p ์์ ์ฝํ
์ธ ์ ์ฒซ๊ธ์๋ฅผ ์ ํ */
p ::first-letter {
font-size : 40 px ;
}
/* p ์์ ์ฝํ
์ธ ์ ์ฒซ์ค์ ์ ํ */
p ::first-line {
color : blue ;
}
/* h1 ์์ ์ฝํ
์ธ ์ ์ ๊ณต๊ฐ์ content ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์ฝ์
*/
h1 ::after {
content : "HELLO!! " ;
color : red ;
}
/* h1 ์์ ์ฝํ
์ธ ์ ๋ฃ ๊ณต๊ฐ์ content ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ์ฝ์
*/
h1 ::before {
content : " WORLD!!" ;
color : green ;
}
/* p ์์ ์ค ๋๋๊ทธํ ์ฝํ
์ธ ๋ฅผ ์ ํ */
p ::selection {
background : yellow ;
}
</ style >
</ head >
< body >
< h1 >์ ๋ชฉ์
๋๋ค.</ h1 >
< p >
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Explicabo illum
sunt distinctio sed, tempore,< br />
repellat rerum et ea laborum voluptatum! Quisquam error fugiat debitis
maiores officiis, tenetur ullam amet in!
</ p >
</ body >
์ฐธ๊ณ
poiemaweb 2-2 ์
๋ ํฐ
๋์ - HTML + CSS + ์๋ฐ์คํฌ๋ฆฝํธ ์น ํ์ค์ ์ ์
๐
๐
2022-07-10