유사 요소

CSS 팟캐스트 - 014: 유사 요소 를 통해 개인정보처리방침을 정의할 수 있습니다.

이 기사의 게시글이 있는 경우 첫 글자는 더 큰 드롭 캡이 되도록 하고 싶습니다. 어떻게 달성할 수 있을까요?

파란색 드롭캡이 있는 텍스트 단락

CSS에서는 ::first-letter 의사 요소를 사용하여 이러한 종류의 디자인 세부정보를 적용할 수 있습니다.

p::first-letter {
  color: blue;
  float: left;
  font-size: 2.6em;
  font-weight: bold;
  line-height: 1;
  margin-inline-end: 0.2rem;
}

의사 요소는 HTML을 더 추가하지 않고도 요소를 추가하거나 타겟팅하는 것과 같습니다. 이 솔루션 예에서는 ::first-letter를 사용합니다. 많은 유사 요소 중 하나입니다. 역할도 다양하고 이 강의에서는 사용할 수 있는 유사 요소와 그 사용 방법을 알아봅니다.

::before::after

그리고 ::before::after pseudo-elements는 content 속성을 정의하는경우에만 요소 내에 하위 요소를 만듭니다.

.my-element::before {
    content: "";
}

.my-element::after {
    content: "";
}

content는 임의의 문자열일 수 있습니다. 심지어 빈 공간도 빈 문자열 이외의 텍스트는 스크린 리더에서 읽을 수 있습니다. url 이미지를 추가할 수 있습니다. 원본 크기로 이미지를 삽입하므로 크기를 조절할 수 없습니다. 또한 counter

::before 또는 ::after 요소가 생성되면 제한 없이 원하는 대로 스타일을 지정할 수 있습니다. ::before 또는 ::after 요소는 하위 요소를 허용하는 요소에만 삽입할 수 있습니다. (문서 트리가 있는 요소), 따라서 <img />, <video>, <input>와 같은 요소가 작동하지 않습니다.

를 통해 개인정보처리방침을 정의할 수 있습니다.

::first-letter

우리는 강의를 시작할 때 이 유사 요소를 만났습니다. 타겟팅 시 일부 CSS 속성은 사용하지 못할 수도 있다는 점에 ::first-letter 사용 가능한 속성은 다음과 같습니다.

  • color
  • background 속성 (예: background-image)
  • border 속성 (예: border-color)
  • float
  • font 속성 (예: font-sizefont-weight)
  • 텍스트 속성 (예: text-decorationword-spacing)
p::first-letter {
  color: goldenrod;
  font-weight: bold;
}
를 통해 개인정보처리방침을 정의할 수 있습니다.

::first-line

::first-line pseudo-element를 사용하면 텍스트의 첫 번째 줄의 스타일을 지정할 수 있습니다. ::first-line가 적용된 요소의 display 값이 block인 경우에만 inline-block, list-item, table-caption 또는 table-cell

p::first-line {
  color: goldenrod;
  font-weight: bold;
}

::first-letter 의사 요소와 마찬가지로 사용할 수 있는 CSS 속성의 하위 집합만 있습니다.

  • color
  • 숙박 시설 background
  • 숙박 시설 font
  • 숙박 시설 text

::backdrop

전체 화면 모드로 표시되는 요소가 있는 경우 <dialog> 또는 <video> 등 배경화면(요소와 페이지의 나머지 부분 사이의 공간)의 스타일을 지정하려면 ::backdrop 유사 요소:

video::backdrop {
  background-color: goldenrod;
}

::marker

::marker pseudo-element를 사용하면 목록 항목의 글머리기호나 숫자 또는 <summary> 요소의 화살표 스타일을 지정할 수 있습니다.

::marker {
  color: hotpink;
}

ul ::marker {
  font-size: 1.5em;
}

ol ::marker {
  font-size: 1.1em;
}

summary::marker {
  content: '\002B'' '; /* Plus symbol with space */
}

details[open] summary::marker {
  content: '\2212'' '; /* Minus symbol with space */
}

::marker에는 소수의 CSS 속성 하위 집합만 지원됩니다.

  • color
  • content
  • white-space
  • 숙박 시설 font
  • animationtransition 속성

content 속성을 사용하여 마커 기호를 변경할 수 있습니다. 예를 들어 이 메서드를 사용하여 <summary> 요소의 닫힌 상태와 빈 상태의 더하기 기호와 빼기 기호를 설정할 수 있습니다.

::selection

::selection pseudo-element를 사용하면 선택한 텍스트의 스타일을 지정할 수 있습니다.

::selection {
  background: green;
  color: white;
}

이 의사 요소는 위의 데모에서와 같이 선택된 모든 텍스트의 스타일을 지정하는 데 사용할 수 있습니다. 다른 선택기와 함께 사용하여 보다 구체적인 선택 스타일을 지정할 수도 있습니다.

p:nth-of-type(2)::selection {
  background: darkblue;
  color: yellow;
}

다른 의사 요소와 마찬가지로 CSS 속성의 하위 집합만 허용됩니다.

  • color
  • background-color(background-image아님)
  • 숙박 시설 text

::placeholder

브라우저 지원

  • Chrome: 57. <ph type="x-smartling-placeholder">
  • Edge: 79. <ph type="x-smartling-placeholder">
  • Firefox: 51. <ph type="x-smartling-placeholder">
  • Safari: 10.1. <ph type="x-smartling-placeholder">

소스

도우미 힌트를 추가하여 요소를 형성할 수 있습니다. (예: placeholder 속성이 있는 <input>) ::placeholder pseudo-element를 사용하면 해당 텍스트의 스타일을 지정할 수 있습니다.

input::placeholder {
  color: darkcyan;
}

::placeholder는 CSS 규칙의 하위 집합만 지원합니다.

  • color
  • 숙박 시설 background
  • 숙박 시설 font
  • 숙박 시설 text
를 통해 개인정보처리방침을 정의할 수 있습니다.

::cue

브라우저 지원

  • Chrome: 26. <ph type="x-smartling-placeholder">
  • Edge: 79. <ph type="x-smartling-placeholder">
  • Firefox: 55. <ph type="x-smartling-placeholder">
  • Safari: 7. <ph type="x-smartling-placeholder">

소스

유사 요소 둘러보기의 마지막 부분은 ::cue 의사 요소. 이렇게 하면 WebVTT 신호의 스타일을 지정할 수 있습니다. 이는 <video> 요소의 설명입니다.

선택기를 ::cue에 전달할 수도 있습니다. 이를 사용하면 자막 특정 요소의 스타일을 지정할 수 있습니다.

video::cue {
  color: yellow;
}

video::cue(b) {
  color: red;
}

video::cue(i) {
  color: lightpink;
}

이해도 확인

유사 요소에 관한 지식 테스트

다음 중 유사 요소가 아닌 것은 무엇인가요?

::before
content: '';를 추가해야 합니다.
::first-paragraph
CSS에는 없습니다.
::after
content: '';를 추가해야 합니다.
::marker
목록 요소 또는 디스플레이 유형을 사용하는 경우 글머리기호 요소입니다.
::pencil
CSS에는 없습니다.
:active
이는 의사 요소가 아닌 의사 클래스입니다.

유사 요소는 HTML 파일에서 찾을 수 있습니다.

DevTools가 Elements 패널에 의사 요소를 표시할 수는 있지만 의사 요소는 HTML에서 찾을 수 없으며 브라우저에서 소유합니다.
거짓
CSS에서 타겟팅할 수 있지만 HTML에서는 찾을 수 없습니다.