오늘 진행했던 과제 중에 가상 요소 선택자라는 처음 보는 속성이 등장해서 정리 겸 til 을 작성한다!
CSS 선택자 중에는 가상 클래스 선택자, 가상 요소 선택자 라는 것이 있다. 선택자는 타겟이 있어야 한다. id 선택자는 id가 타겟이고, class 선택자는 class 가 타겟이다. 이 맥락에서 본다면 가상 선택자는 실제는 없지만 가상으로 만들어진 무언가를 타겟으로 선택한다는 것이 된다.
가상 클래스 (Pseudo-Class) 는 어떠한 속성이 실제로 마크업 상에는 명시되지는 않은 속성을 지칭하는 말이다. 작성자가 지정한 이벤트 (예를 들어 마우스를 올려놓았을 때나, 클릭을 했을 때) 가 발생한 그 순간 자체를 하나의 속성으로 본다는 것이다. 이러한 순간적인 상태를 선택하여 css 를 적용하기 위해 가상 클래스 선택자가 쓰인다.
/* 어떤 버튼이든 마우스 포인터가 올려지기만 한다면 발생하는 이벤트 */
button:hover {
color: blue;
}
가상 요소 (Pseudo-Element) 도 마찬가지로 가상 클래스 선택자처럼 존재하지 않는 요소를 존재하는 것처럼 부여하여 문서의 특정 부분을 선택하는 것이다. 이렇게 가상으로 만들어진 요소는 실제로는 보이지 않더라도 선택한 요소 일부분에 css 를 적용하여 특정 효과를 줄 수 있다.
가상 요소들은 mdn 에서 찾아 볼 수 있는데 그 중 대표적으로 사용되고 있는 가상 요소들은 아래와 같다.
오늘 진행했던 과제에서도 after 가상 요소가 적용된 코드가 있었다. 위의 표에서 보면 알 수 있듯이 ::before 와 ::after 요소는 content 속성과 함께 쓰이는데, content 는 '가짜' 속성이다. 마크업 문서에 정보로 포함되지 않은 요소를 css 에서 새롭게 생성시켜주기 때문이다.
아래의 표는 content 를 쓸 때, 대표적으로 사용되는 속성들이다.
오늘 과제에서 등장한 가상 요소 선택자를 한 번 살펴보자. 선택자를 적용하기 이전의 말풍선은 둥그런 모양이다.
하지만 아래의 코드를 적용하고 나면,
.conversation .message::after {
/* 말풍선의 position 속성이 relative 로 되어있고, 이 속성을 기준으로 절대위치로 옮겨짐 */
position: absolute;
/* 기본값이 inline 이기 때문에 위치값을 지정해주기 위해 block 으로 변경 */
display: block;
/* 빈 도형을 만들기 위해 필수 속성인 content 에 빈 문자열 적용 (기본값인 normal 로 대체 가능) */
content: "";
/* 위치 지정 */
top: 0;
left: -1vw;
width: 2vw;
/* 상단(top)과 좌측(left)에만 값을 주어 삼각형 모양을 만듦*/
border-top: 2vw solid #fff;
border-right: 0 solid transparent;
border-bottom: 0 solid transparent;
border-left: 2vw solid transparent;
}
이렇게 말풍선 좌측 상단에 뾰족한 모양이 생긴다.
'TIL' 카테고리의 다른 글
back to the Java (22.09.30 TIL) (0) | 2022.09.30 |
---|---|
무사히 보낸 한 주 (22.09.29 TIL) (0) | 2022.09.29 |
html <img> 태그 / css background 속성 (22.09.27 TIL) (0) | 2022.09.27 |
css 와의 거리감이 살짝 좁혀진 날 (22.09.26 TIL) (0) | 2022.09.26 |
flex vs grid (22.09.25 TIL) (0) | 2022.09.25 |
댓글