[CSS] 의사요소 - fist-line, first-letter, before, after


Study/Javascript, Jquery, CSS  2020. 1. 22. 23:35

안녕하세요. 명월입니다.


이 글은 CSS에서의 의사요소 (fist-line, first-letter, before, after)에 대한 글입니다.


지금까지 의사클래스 선택자에 대해서 설명했는데, 명명이 조금 다른 의사요소 선택자입니다.

(다른 전문 분야의 전문 용어는 잘 모르겠는데, IT 관련 전문 용어도 일본에서 온 경우가 많아서 명명이 참 더럽습니다. 지금이야 한국 IT도 많이 발전해서 영어 직독해한 전공 서적이 많은데, 예전에는 영어로 된 전공 서적이 일본어로 번역되고 다시 한국어로 번역된 것이 많아 이상한 명명들이 참 많습니다.)


의사요소는 태그와 속성를 선택하는(의사클래스) 선택자가 아니고 태그 안의 Text 요소를 선택하는 선택자입니다. 의사요소 선택자의 특징은 (:)으로 선택 요소를 설정합니다.

<!DOCTYPE html>
<html>
  <head><title>css</title></head>
  <body>
    <!-- 첫번째 요소 예제  -->
    <p>안녕하세요<br />명월입니다<br />이글은 연습입니다</p>  
    <!-- 두번째 요소 예제  -->
    <ul>
      <li>TEST1</li>
      <li class="new">TEST2</li>
      <li class="note">TEST3</li>
    </ul>
  </body>
</html>
/* 첫번째 요소의 첫번째 라인*/
p:first-line {
  color:blue;
}
/* 첫번째 요소의 첫번째 글자*/
p:first-letter {
  font-size:30px;
}
li {
  margin:10px 0px;
}
/* 두번째 요소의 note클래스를 가진 요소의 앞부분*/
li.note:before {
  content:"note!";
  border:1px solid rgba(52, 94, 236, 0.51);
  margin:0px 5px;
  border-radius:5px;
  color:rgba(224, 89, 89, 0.88);
  background-color:rgba(102, 255, 253, 0.39);
  font-weight:bold;
  padding:1px;
  font-size:9px;
}
/* 두번째 요소의 new클래스를 가진 요소의 뒷부분*/
li.new:after {
  content:"new";
  color:red;
  font-weight:bold;
  font-size:9px;
  margin:0px 5px;
}

first-line의 경우는 위 첫번째 요소의 p태그를 보면 br태그로 3줄로 구성이 되어 있습니다. 그중 첫번째 줄에 대한 스타일입니다. 즉,「안녕하세요」가 그 대상입니다.

first-letter는 첫번째 글자에 대한 설정인데, p태그의 첫번째 글자는 「안」이 되겠습니다.

즉, 첫번째 줄은 파란색에 첫번째 글자의 font-size는 30px이 되는 것입니다.


그리고 두번째 요소에서 class가 note와 new에 해당하는 요소에 대한 스타일입니다.

before과 after의 의사요소는 반다시 content의 스타일이 필수로 들어갑니다. 즉, content의 글자가 before면 text value의 앞부분 즉, 위 예제로 「TEST3」의 앞부분에 note!라는 글자가 들어갑니다.

그리고 그 밑에 있는 테두리 스타일과 텍스트 스타일은 모두 추가된 note!의 글자에 스타일이 적용됩니다.

after의 경우는 before과 반대로 text value의 뒷부분 즉, 위 예제로는 「TEST2」의 뒷부분에 new라는 글자가 들어갑니다.

역시 스타일은 new라는 글자에 적용이 됩니다.

참고로 content에 글자가 아닌 태그의 요소, 즉 「content:"

check

"」가 들어가면 text value에 태그가 적용이 되는 것이 아니고

check

라는 글자가 들어갑니다. 이점 주의해야 합니다.

저의 경우는 before과 after는 저도 자주 사용하는 요소의사이긴 합니다만, first-line와 first-letter의 스타일은 사용해 본 적이 없습니다. 아마 첫글자 대문자 설정등이 필요한 영어권에서 자주 사용되는 스타일이지 않을까 예상해 봅니다.


여기까지 CSS에서의 의사요소 (fist-line, first-letter, before, after)에 관한 설명이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.