-css 선택자-스타일을 지정하려는 HTML요소를 선택한다.
-CSS selectors 종류
1. Simple selectors(name, id, class를 기준으로 선택한다.)
<!DOCTYPE html> <html> <head> <style> p { text-align: center; color: red; } </style> </head> <body> <p>Every paragraph will be affected by the style.</p> <p id="para1">Me too!</p> <p>And me!</p> </body> </html>
2. Combinator selectors (요소간의 측정관계를 기반으로 요소선택)
•Descendant Selector(space)
•Child Selector (>)
•Adjacent Sibling Selector (+)
•General Sibling Selector (~)
1)Descendant Selector(space): 지정된 요소의 하위 요소 모두 적용
<!DOCTYPE html> <html> <head> <style> div p { background-color: yellow; } </style> </head> <body> <h2>Descendant Selector</h2> <p>The descendant selector matches all elements that are descendants of a specified element.</p> <div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p> <section><p>Paragraph 3 in the div.</p></section> </div> <p>Paragraph 4. Not in a div.</p> <p>Paragraph 5. Not in a div.</p> </body> </html>
2)Child Selector(>): 지정된 요소의 하위 요소(자식) 모두 적용
<!DOCTYPE html> <html> <head> <style> div > p { background-color: yellow; } </style> </head> <body> <h2>Child Selector</h2> <p>The child selector (>) selects all elements that are the children of a specified element.</p> <div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p> <section> <!-- not Child but Descendant --> <p>Paragraph 3 in the div (inside a section element).</p> </section> <p>Paragraph 4 in the div.</p> </div> <p>Paragraph 5. Not in a div.</p> <p>Paragraph 6. Not in a div.</p> </body> </html>
3)Adjacent Sibling Selector (+): 지정된 요소 바로 밑에있는 형제 요소를 선택한다.
<!DOCTYPE html> <html> <head> <style> div + p { background-color: yellow; } </style> </head> <body> <h2>Adjacent Sibling Selector</h2> <p>The + selector is used to select an element that is directly after another specific element.</p> <p>The following example selects the first p element that are placed immediately after div elements:</p> <div> <p>Paragraph 1 in the div.</p> <p>Paragraph 2 in the div.</p> </div> <p>Paragraph 3. After a div.</p> <p>Paragraph 4. After a div.</p> <div> <p>Paragraph 5 in the div.</p> <p>Paragraph 6 in the div.</p> </div> <p>Paragraph 7. After a div.</p> <p>Paragraph 8. After a div.</p> </body> </html>
4)General Sibling Selector (~):지정된 요소 다음 형제인 모든요소를 선택한다.
<!DOCTYPE html> <html> <head> <style> div ~ p { background-color: yellow; } </style> </head> <body> <h2>General Sibling Selector</h2> <p>The general sibling selector (~) selects all elements that are next siblings of a specified element.</p> <p>Paragraph 1.</p> <div> <p>Paragraph 2.</p> </div> <p>Paragraph 3.</p> <code>Some code.</code> <p>Paragraph 4.</p> </body> </html>
3.Pseudo-class selectors: 요소의 특수한 상태를 정의한다.
selector:pseudo-class { property: value; }
1)Anchor Pseudo-classes
<!DOCTYPE html> <html> <head> <style> /* unvisited link */ a:link { color: red; } /* visited link */ a:visited { color: green; } /* mouse over link */ a:hover { color: hotpink; } /* selected link */ a:active { color: blue; } </style> </head> <body> <h2>Styling a link depending on state</h2> <p><b><a href="default.asp" target="_blank">This is a link</a></b></p> <p><b>Note:</b> a:hover MUST come after a:link and a:visited in the CSS definition in order to be effective.</p> <p><b>Note:</b> a:active MUST come after a:hover in the CSS definition in order to be effective.</p> </body> </html>
2)Hover on <div>
<!DOCTYPE html> <html> <head> <style> div { background-color: green; color: white; padding: 25px; text-align: center; } div:hover { background-color: blue; } </style> </head> <body> <p>Mouse over the div element below to change its background color:</p> <div>Mouse Over Me</div> </body> </html>
3)Simple Tooltip Hover
<!DOCTYPE html> <html> <head> <style> p { display: none; background-color: yellow; padding: 20px; } div:hover p { display: block; } </style> </head> <body> <div>Hover over this div element to show the p element <p>Tada! Here I am!</p> </div> </body> </html>
4)CSS – The :first-child Pseudo-class
<!DOCTYPE html> <html> <head> <style> p:first-child { color: blue; } </style> </head> <body> <p>This is some text.</p> <p>This is some text.</p> <div> <p>This is some text.</p> <p>This is some text.</p> </div> </body> </html>
4.CSS Pseudo-elements:요소의 지정된 부분에 스타일을 지정한다.
selector::pseudo-element { property: value; }
1)The ::first-line Pseudo-element
<!DOCTYPE html> <html> <head> <style> p::first-line { color: #ff0000; font-variant: small-caps; } </style> </head> <body> <p>You can use the ::first-line pseudo-element to add a special effect to the first line of a text. Some more text. And even more, and more, and more, and more, and more, and more, and more, and more, and more, and more, and more, and more.</p> </body> </html>
2)The ::first-letter Pseudo-element
<!DOCTYPE html> <html> <head> <style> p::first-letter { color: #ff0000; font-size: xx-large; } </style> </head> <body> <p>You can use the ::first-letter pseudo-element to add a special effect to the first character of a text!</p> </body> </html>
3)Pseudo-elements and HTML Classes
<!DOCTYPE html> <html> <head> <style> p.intro::first-letter { color: #ff0000; font-size: 200%; } </style> </head> <body> <p class="intro">This is an introduction.</p> <p>This is a paragraph with some text. A bit more text even.</p> </body> </html>
4)Multiple Pseudo-elements
<!DOCTYPE html> <html> <head> <style> p::first-letter { color: #ff0000; font-size: xx-large; } p::first-line { color: #0000ff; font-variant: small-caps; } </style> </head> <body> <p>You can combine the ::first-letter and ::first-line pseudo-elements to add a special effect to the first letter and the first line of a text!</p> </body> </html>
5)CSS – The ::before Pseudo-element
<!DOCTYPE html> <html> <head> <style> h1::before { content: url(smiley.gif); } </style> </head> <body> <h1>This is a heading</h1> <p>The ::before pseudo-element inserts content before the content of an element.</p> <h1>This is a heading</h1> </body> </html>
6)CSS – The ::after Pseudo-element
<!DOCTYPE html> <html> <head> <style> h1::after { content: url(smiley.gif); } </style> </head> <body> <h1>This is a heading</h1> <p>The ::after pseudo-element inserts content after the content of an element.</p> <h1>This is a heading</h1> </body> </html>
7)CSS – The ::marker Pseudo-element
<!DOCTYPE html> <html> <head> <style> ::marker { color: red; font-size: 23px; } </style> </head> <body> <ul> <li>Coffee</li> <li>Tea</li> <li>Milk</li> </ul> <ol> <li>First</li> <li>Second</li> <li>Third</li> </ol> </body> </html>
8)CSS – The ::selection Pseudo-element
<!DOCTYPE html> <html> <head> <style> ::selection { color: red; background: yellow; } </style> </head> <body> <h1>Select some text on this page:</h1> <p>This is a paragraph.</p> <div>This is some text in a div element.</div> </body> </html>
5.CSS Attribute Selectors: 특정 속성이나 속성값을 가진 HTML 료소의 스타일을 지정한다.
a[target] { background-color: yellow; }
1)CSS [attribute=”value”] Selector
<!DOCTYPE html> <html> <head> <style> a[target="_blank"] { background-color: yellow; } </style> </head> <body> <h2>CSS [attribute="value"] Selector</h2> <p>The link with target="_blank" gets a yellow background:</p> <a href="https://www.w3schools.com">w3schools.com</a> <a href="http://www.disney.com" target="_blank">disney.com</a> <a href="http://www.wikipedia.org" target="_top">wikipedia.org</a> </body> </html>
2)CSS [attribute~=”value”] Selector
<!DOCTYPE html> <html> <head> <style> [title~="flower"] { border: 5px solid yellow; } </style> </head> <body> <h2>CSS [attribute~="value"] Selector</h2> <p>All images with the title attribute containing the word "flower" get a yellow border.</p> <img src="klematis.jpg" title="klematis flower" width="150" height="113"> <img src="img_flwr.gif" title="flower" width="224" height="162"> <img src="img_tree.gif" title="tree" width="200" height="358"> </body> </html>
3)CSS [attribute|=”value”] Selector
<!DOCTYPE html> <html> <head> <style> [class|="top"] { background: yellow; } </style> </head> <body> <h2>CSS [attribute|="value"] Selector</h2> <h1 class="top-header">Welcome</h1> <p class="top-text">Hello world!</p> <p class="topcontent">Are you learning CSS?</p> </body> </html>
4)CSS [attribute^=”value”] Selector
<!DOCTYPE html> <html> <head> <style> [class^="top"] { background: yellow; } </style> </head> <body> <h2>CSS [attribute^="value"] Selector</h2> <h1 class="top-header">Welcome</h1> <p class="top-text">Hello world!</p> <p class="topcontent">Are you learning CSS?</p> </body> </html>
5)CSS [attribute$=”value”] Selector
<!DOCTYPE html> <html> <head> <style> [class$="test"] { background: yellow; } </style> </head> <body> <h2>CSS [attribute$="value"] Selector</h2> <div class="first_test">The first div element.</div> <div class="second">The second div element.</div> <div class="my-test">The third div element.</div> <p class="mytest">This is some text in a paragraph.</p> </body> </html>
6)CSS [attribute*=”value”] Selector
<!DOCTYPE html> <html> <head> <style> [class*="te"] { background: yellow; } </style> </head> <body> <h2>CSS [attribute*="value"] Selector</h2> <div class="first_test">The first div element.</div> <div class="second">The second div element.</div> <div class="my-test">The third div element.</div> <p class="mytest">This is some text in a paragraph.</p> </body> </html>
7)Styling Forms
<!DOCTYPE html> <html> <head> <style> input[type="text"] { width: 150px; display: block; margin-bottom: 10px; background-color: yellow; } input[type="button"] { width: 120px; margin-left: 35px; display: block; } </style> </head> <body> <h2>Styling Forms</h2> <form name="input" action="" method="get"> Firstname:<input type="text" name="Name" value="Peter" size="20"> Lastname:<input type="text" name="Name" value="Griffin" size="20"> <input type="button" value="Example Button"> </form> </body> </html>