✍코드
-html 파일
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JS</li>
</ul>
-css 파일
li:first-child { color: red; }
li:last-child { color: blue; }
👉 이렇게 코드를 입력해주면
👉 실제로는 태그에 class 속성이 없지만 가상클래스가 생성되어 아래 코드처럼 동작
<ul>
<li class="first-child">HTML</li>
<li>CSS</li>
<li class="last-child">JS</li>
</ul>
✍결과
✍코드
-html 파일
<a href="https://www.boostcourse.org/web344">링크</a>
-css 파일
a:link { color: blue; }
a:visited { color: gray; }
✍코드
-html 파일
<a href="https://www.boostcourse.org/web344">링크</a>
-css 파일
a:focus { background-color: yellow; }
a:hover { font-weight: bold; }
a:active { color: red; }
✍결과
-가상 요소는 HTML 코드에 존재하지 않는 구조 요소에 스타일을 부여
✍코드
- hrml 파일
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
- css 파일
p::before { content: "###" }
p::after { content: "!!!" }
p::first-line { ... }
p::first-letter { ... }
✍결과
👉before와 after는 아래와 같이 동작
<p>
<before>###</before>
Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
<after>!!!</after>
</p>
👉first-line는 아래와 같이 동작
<p>
<first-line>Lorem ipsum dolor sit amet, consectetur
adipisicing elit, sed do eiu ..(..어딘가쯤..) </first-line>
... unt ut labore et dolore magna aliqua.
</p>
👉first-letter는 아래와 같이 동작
<p>
<first-letter>L</first-letter>orem ipsum dolor sit amet,
consectetur adipisicing elit, sed do eiusmod tempor incididunt ut
labore et dolore magna aliqua.
</p>
-선택자에는 어떤 규칙이 우선으로 적용되어야 하는지에 대해 정해진 규칙이 있음.
👉구체성은 4개의 숫자 값으로 이루어짐
👉값을 비교할 때는 좌측에 있는 값부터 비교하며, 좌측 부분의 숫자가 클수록 높은 구체성을 갖음
-0, 1, 0, 0 : 선택자에 있는 모든 id 속성값
-0, 0, 1, 0 : 선택자에 있는 모든 class 속성값, 기타 속성, 가상 클래스
-0, 0, 0, 1 : 선택자에 있는 모든 요소, 가상 요소
-전체 선택자는 0, 0, 0, 0을 가진다.
-조합자는 구체성에 영향을 주지 않는다. (>, + 등)
h1 { ... } /* 0,0,0,1 */
body h1 { ... } /* 0,0,0,2 */
.grape { ... } /* 0,0,1,0 */
*.bright { ... } /* 0,0,1,0 */
p.bright em.dark { ... } /* 0,0,2,2 */
#page { ... } /* 0,1,0,0 */
div#page { ... } /* 0,1,0,1 */
p#page { color: red; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>
👉이렇게 2개의 스타일 선언되었다면 <p>에는 color: blue가 적용됨
👉인라인 스타일의 구체성 값은 1, 0, 0, 0이며 규칙들 중 가장 큰 구체성을 갖기 때문
p#page { color: red !important; }
<p id="page" style="color:blue">Lorem impusm dolor sit.</p>
👉이렇게 2개의 스타일 선언되었다면 <p>에는 important로 인해 color: red가 적용됨
👉important는 모든 구체성을 무시하고 우선권을 갖기 때문
-html 파일
<h1 id="page">Hello, <em>CSS</em></h1>
-css 파일
* { color: red; }
h1#page { color: gray; }
👉이렇게 2개의 스타일 선언되었다면
h1#page { color: gray; } 구체성이 더 높지만 <em>에는 color: red가 적용됨
👉상속된 속성은 아무런 구체성을 가지지 못하기 때문