🔥 CSS Selector 란?
🔥 기본 Selector
🔥 CSS Selector 조합
🔥 복합 Selector(Combinator)
🔥 가상 클래스(Pseudo-Class Selector)
🔥 UI 요소 상태 셀렉터(UI Element States Pseudo-Class)
🔥 구조화된 가상 클래스 셀렉터(Structured Pseudo-Class)
🔥 부정 셀렉터(Negation Pseudo-Class)
🔥 유효성 체크 셀렉터(Validity Pseudo-Class)
🔥 가상 요소 셀렉터(Preudo-Element Selector)
*{ 속성:값; 속성:값; 속성:값; }
✍🏻 css
*{ margin : 0; padding : 0; border : none; box-sizing: border-box; }
태그명{ 속성:값; 속성:값; 속성:값; }
#id명{ 속성:값; 속성:값; 속성:값; }
.class명{ 속성:값; 속성:값; 속성:값;}
[attr]{}
[attr="value"]{}
a[attr^="value"]{}
a[attr$="value"]{}
a[attr*="value"]{}
.클래스명.클래스명
으로 나열함#id명
으로 연이어 작성 ✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> h1.bkg-blue.color-red#basic-bd { background-color: blue; color: red; border: 10px; } </style> </head> <body> <h1 class="bkg-blue color-red" id="basic-bd">Hello CSS</h1> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> h1 { color: black; } div span { color: royalblue; background-color: mediumaquamarine; border: 15px; } </style> </head> <body> <div> <h1>Hi CSS</h1> <p> <span>Lorem ipsum dolor sit,</span> amet consectetur adipisicing elit. <span>Ad quod maiores rerum officia libero rem modi fuga molestiae consectetur sunt facere nisi,</span> suscipit ratione et distinctio autem molestias vitae deleniti? </p> </div> </body> </html>
>
로 표시✍🏻 html
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8" /> <style> h1 { color: black; } h1 > span { color: royalblue; background-color: mediumaquamarine; border: 15px; } </style> </head> <body> <div> <h1>Hi CSS</h1> <p> <h1><span>I'm not child</span></h1> <span>Lorem ipsum dolor sit,</span> amet consectetur adipisicing elit. <span>Ad quod maiores rerum officia libero rem modi fuga molestiae consectetur sunt facere nisi,</span> suscipit ratione et distinctio autem molestias vitae deleniti? </p> </div> </body> </html>
+
로 표시~
로 표시✍🏻 html
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8" /> <style> h1 { color: black; } h1 + h2 { color: royalblue; background-color: mediumaquamarine; border: 15px; } p ~ span { color: yellow; background-color: gray; border: 15px; } </style> </head> <body> <div> <h1>I'm h1</h1> <h2>I'm direct brothers of h1</h2> <h2>I'm not direct brothers of h1</h2> <p>I'm P</p> <span>I'm brothers of p</span> <div> Accusamus recusandae error, tempora nihil quo facere temporibus quos consequuntur optio pariatur ad modi, odio, officiis eius voluptatibus praesentium voluptate harum? <span>Doloribus!</span> </div> <span>I'm brothers of p</span> <h2>I'm not direct brothers of h1</h2> </div> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8" /> <style> a:link { color: red; } a:visited { color: blue; } a:hover { color: green; } a:active { color: white; background-color: tomato; } input:focus { background-color: tomato; } </style> </head> <body> <div> <h1>Hi Presudo-Class Selector</h1> <a href="https://www.google.com/">Google</a> <form action="ab.html" method="get"> <input type="text" id="id" name="id" /><br /> <input type="submit" value="Submit" /> </form> </div> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> input[type="radio"]:indeterminate + span { color: red; } input[type="radio"]:checked + span { color: orange; } input[type="checkbox"]:enabled + span { color: blue; } input[type="checkbox"]:disabled + span { color: green; } </style> </head> <body> <div> <h1>Hi UI Element States Pseudo-Class</h1> <a href="https://www.google.com/">Google</a> <form action="ab.html/" method="get"> <input type="radio" value="item1" name="item" /><span>item1</span><br /> <input type="radio" value="item2" name="item" /><span>item2</span><br /> <input type="checkbox" value="check1" name="check" /><span>check1</span><br /> <input type="checkbox" value="check2" name="check" disabled /><span>check2</span><br /> <input type="text" id="data" name="data" /><br /> <input type="submit" value="Submit" /> </form> </div> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> p:first-child { color: red; } p:last-child { color: blue; } p:nth-child(2) { color: green; } p:nth-last-child(3) { color: brown; } </style> </head> <body> <div> <h1>Hi Structured Pseudo-Class</h1> <div> <p>This is first-child</p> <p>This is <span>2th-child</span></p> <p>This is 3th-child</p> <p>This is 4th-child</p> <p>This is 5th-child</p> <p>This is last-child</p> </div> </div> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> p:first-of-type { color: red; } p:last-of-type { color: blue; } p:nth-of-type(2) { color: green; } p:nth-of-last-type(3) { color: brown; } </style> </head> <body> <div> <h1>Hi Structured Pseudo-Class</h1> <div> <h2>kimchi</h2> <p>This is first-child</p> <p>This is <span>2th-child</span></p> <p>This is 3th-child</p> <h2>pizza</h2> <p>This is 4th-child</p> <p>This is 5th-child</p> <h2>hot-dog</h2> <p>This is last-child</p> </div> </div> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> h2:not(.without-h2) { color: tomato; background-color: bisque; padding: 10px; } </style> </head> <body> <h2>Hi Negation Pseudo-Class!</h2> <h2 class="without-h2">It is h2 without applied.</h2> <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.</p> <p> Reiciendis eligendi, repudiandae dicta iste aspernatur commodi? Pariatur officiis debitis obcaecati quo sed quae voluptate quaerat. Obcaecati unde voluptatum quae. Quis, voluptatibus? </p> </body> </html>
✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> input[type="text"]:invalid { background-color: tomato; } input[type="text"]:valid { background-color: skyblue; } </style> </head> <body> <h1>I'm Validity Pseudo-Class</h1> <h2>CSS is cool.</h2> <form action="ab.html"> <input type="text" id="id" name="id" required /> <input type="submit" /> </form> <br /> <form action="cd.html"> <input type="text" id="id" name="id" required /> <input type="submit" /> </form> </body> </html>
pattern="[0-9]{6}
👈 숫자 6자리를 입력해야 유효함✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> input[type="text"]:invalid { background-color: tomato; } input[type="text"]:valid { background-color: skyblue; } </style> </head> <body> <h1>I'm Validity Pseudo-Class</h1> <h2>Pattern</h2> <form action="ab.html"> <input type="text" id="number" name="number" pattern="[0-9]{6}" required /> <input type="submit" /> </form> <br /> <form action="cd.html"> <input type="text" id="number" name="number" pattern="[0-9]{6}" required /> <input type="submit" /> </form> </body> </html>
::first-letter
: 요소의 첫글자 선택::first-line
: 요소의 첫 라인(줄) 선택(block 요소에만 적용 가능)::after
: 요소 뒤에 위치하는 공간 선택, content 속성과 함께 사용::before
: 요소 앞에 위치하는 공간 선택, content 속성과 함께 사용::selection
: 요소에서 드래그한 부분 선택✍🏻 html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <style> h3::before { content: "🍎 "; color: whitesmoke; } h3::after { content: " 🍌"; color: whitesmoke; } p::first-letter { font-size: 2em; font-weight: 500; } p::first-line { color: darkorange; font-size: 1.2em; } p::selection { background-color: mediumpurple; } </style> </head> <body> <h3>Apple on the left, Banana on the right</h3> <p> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Cupiditate rerum eum modi. Consequuntur quam eos impedit aspernatur voluptates nesciunt quod est magni debitis et? Sequi deserunt consequuntur doloremque velit adipisci. Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ab suscipit quidem reiciendis, optio voluptate illo maxime asperiores rem eum fugit voluptatum eos, repudiandae ipsa at debitis impedit harum error quod! Lorem, ipsum dolor sit amet consectetur adipisicing elit. Cupiditate rerum eum modi. Consequuntur quam eos impedit aspernatur voluptates nesciunt quod est magni debitis et? Sequi deserunt consequuntur doloremque velit adipisci. Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ab suscipit quidem reiciendis, optio voluptate illo maxime asperiores rem eum fugit voluptatum eos, repudiandae ipsa at debitis impedit harum error quod! Lorem, ipsum dolor sit amet consectetur adipisicing elit. Cupiditate rerum eum modi. Consequuntur quam eos impedit aspernatur voluptates nesciunt quod est magni debitis et? Sequi deserunt consequuntur doloremque velit adipisci. Lorem ipsum dolor, sit amet consectetur adipisicing elit. Ab suscipit quidem reiciendis, optio voluptate illo maxime asperiores rem eum fugit voluptatum eos, repudiandae ipsa at debitis impedit harum error quod! </p> </body> </html>