클래스 상태에 따라 스타일 지정 - 가상 클래스

사용자가 웹 요소를 클릭하거나 마우스 커서를 올려놓는 등 특정 동작을 할 때 스타일이 바뀌도록 만들고 싶다면 가상 클래스 선택자를 사용합니다.
4 min read

사용자가 웹 요소를 클릭하거나 마우스 커서를 올려놓는 등 특정 동작을 할 때 스타일이 바뀌도록 만들거나 웹 요소의 상태에 따라 스타일을 지정할 때 가상 클래스 선택자를 사용합니다.

목차

사용자 동작에 반응하는 가상 클래스

다음 가상 클래스 선택자들은 가상 클래스 선택자 중 자주 사용하는 것들을 모아 놓은 것입니다.

 

:link 가상 클래스 선택자는 링크의 밑줄을 없애거나 텍스트 색상을 바꿀려고 할 때 사용합니다. 문서 안의 하이퍼링크 중에서 사용자가 아직 방문하지 않은 링크에 스타일을 적용합니다. 예를 들면 다음은 <a> 요소에 방문하지 않은 링크 색상을 하늘색으로 만들고 링크의 밑줄을 제거합니다.

a:link {
  color: skyblue;
  text-decoration: none;
}

텍스트 링크는 기본적으로 파란색 글자와 밑줄로 표시됩니다.

 

:visited

:visited 가상 클래스 선택자는 사용자가 방문했던 링크를 일반 텍스트 링크와 색상이 달라지지 않게 하기 위해 사용합니다. 문서의 링크 중에서 한 번 이상 방문한 링크에 스타일을 적용합니다. 예를 들면 다음은 <a> 요소에 방문하지 않은 링크 색상을 핑크색으로 만들고 링크의 밑줄을 제거합니다.

a:visited {
  color: pink;
  text-decoration: none;
}

방문한 텍스트 링크는 기본적으로 자주색으로 표시됩니다.

 

:hover

:hover 가상 클래스 선택자는 웹 요소 위로 마우스 커서를 올려놓을 때 스타일을 지정합니다. 예를 들면 다음은 <a> 요소에 마우스를 올렸을 때 글자색을 빨간색으로 하고 밑줄을 만듭니다.

a:hover {
  color: red;
  text-decoration: underline;
}

 

:active

:active 가상 클래스 선택자는 링크나 이미지 등 웹 요소를 활성화 했을 때(누르고 있을 때)의 스타일을 지정합니다. 예를 들면 다음은 <a> 요소를 마우스로 누르고 있을 때 배경색을 초록색으로 하고 텍스트 색상을 흰색으로 바꿉니다.

a:active {
  color: white;
  background-color: green;
}

텍스트 링크를 누르고 있으면 기본적으로 빨간색으로 표시됩니다.

 

:focus

:focus 가상 클래스 선택자는 웹 요소에 포커스가 맞추어졌을 때의 스타일을 지정합니다. 아이디를 입력하기 위해 텍스트 필드 안에 마우스 커서를 갖다 놓거나 탭을 눌러 초점을 이동했을 때의 스타일을 지정할 수 있습니다. 예를 들면 다음은 <input> 요소에 텍스트를 입력하기 위해 포커스 되었을 때 박스에 테두리를 하늘색으로 만듭니다.

input:focus {
  border-color: skyblue;
}

 

링크가 걸린 글자 꾸미기

링크가 걸린 글자 꾸미는 방법은 <a> 태그를 선택하여 꾸밉니다.

링크가 걸린 글자 꾸미기

 

그 외 가상 클래스

:target

:target 선택자는 문서 안에서 다른 위치로 이동할 때 이용하는 앵커의 목적지가 되는 부분의 스타일을 지정할 수 있습니다. 예를 들면 다음은 타겟으로 지정된 #toc-01 요소의 글자 색을 노란색으로 바꿉니다.

#toc-01:target {
  color: yellow;
}

 

:not

:not 선택자는 특정 요소에서 괄호 안의 선택자를 제외한 모든 요소에 스타일을 지정할 수 있습니다. 예를 들면 다음은 #eg가 아닌 모든 <p> 요소에서 글자 색을 파란색으로 바꿉니다.

p:not(#eg) {
  color: blue;
}

 

:empty

:empty는 내용이 없는 비어있는 요소를 선택합니다. 예를 들면 다음은 <li> 요소 중 내용이 없는 것을 선택합니다.

li:empty

<li></li>

가 선택됩니다. 공백도 내용이 있는 것으로 보고 선택하지 않습니다.

따라서

<li> </li>

처럼 빈 칸이 있는 것은 선택되지 않습니다.

 

:enabled 와 :disalbed

:enabled 가상 클래스 선택자는 해당 요소가 사용 가능한 상태일 때의 스타일을 지정할 수 있고 :disalbed 가상 클래스 선택자는 해당 요소가 사용 불가능한 상태일 때의 스타일을 지정할 수 있습니다.

예를 들면 여러 줄의 텍스트를 입력할 수 있는 텍스트 영역(textarea)를 입력칸으로 사용할 때는 enabled 상태이지만 회원 약관 등을 보여줄 때는 사용자가 내용을 보기만 해야하므로 disabeld 상태로 만듭니다.

textarea:disabled {
  background-color: #bbb;
  border: 1px solid #ccc;
}

 

:checked

라디오 박스체크박스에서 사용자가 해당 항목을 선택 했을 때(체크했을 때)의 스타일을 지정할 수 있습니다.

예를 들면 다음은 체크박스 버튼 항목을 클릭하면 항목 텍스트가 파란색으로 바뀝니다.

input[type="checkbox"]:checked + span {
  color: blue;
}

 

:nth-child(), :nth-last-child()

여러 개의 항목이 일렬(가로나 세로)로 나열되 있는 경우, class나 id를 사용하지 않고 nth-child(n)이나 nth-last-child(n)을 사용하면 항목이 몇 번째에 있는지를 따져 스타일을 적용할수 있습니다.

:nth-child(), :nth-last-child()

 

가상 요소

가상 요소(Pseudo-elements)는 요소의 특정 부분을 선택합니다. 가상클래스는 콜론을 한 개(:), 가상요소는 콜론을 두 개(::) 씁니다. 하지만 콜론을 한 개(:)만 써도 대부분의 브라우저에서 제대로 작동합니다.

가상 요소 가상 요소와 가상 클래스 순서

 

기타 CSS 참조

You may like these posts

  • 선택자로도 지정하기 어려운 대상이 있습니다. 예를 들어 몇 번째 항목이라든가 문단의 첫 번째 글자 등의 경우 어떻게 지정해야 할까요? 이럴 때 가상 요소와 가상 클래스를 사용합니다. 가상 요소는 내용의 일부만 선택해 스타일을 적용할 때 사용합니다. 목차 가상 요소 가상 요소(Ps…
  • HTML로는 웹 사이트의 내용을 나열하고 CSS로는 웹 문서의 디자인을 구성한다는 아이디어가 바로 웹 표준의 시작입니다. 이렇게 내용과 디자인이 구분되어 있기 때문에 사이트의 내용을 수정해야할 때도 디자인에 전혀 영향을 미치지 않고 내용만 수정할 수 있습니다. 또한 반대로 내용은 건드리지 않은 상태에서 스…
  • 웹 문서 안에는 여러 개의 스타일 규칙이 사용되는 경우가 많습니다. 이런 스타일 규칙들을 한눈에 확인하고 필요할 때마다 수정하기 쉽도록 한 군데 묶어 놓은 것을 '스타일 시트' 라고 합니다. 스타일 시트는 문서 안에서 사용할 스타일 규칙들을 정의한 '내부 스타일 시트'와 별도의 스타일 파일을 만들어 문…
  • 스타일 속성을 적용하는 요소를 '선택자(selector)'라고 부릅니다. 먼저 전체 선택자, 타입 선택자, 속성 선택자를 살펴보겠습니다. 목차 전체 선택자 (Universal Selector) 전체 선택자는 모든 HTML 요소를 선택합니다. 별표( * )로 나타냅니다. 예를 들…
  • 스타일 속성을 적용하는 요소를 '선택자(selector)'라고 부릅니다. 이번에는 아이디 선택자와 클래스 선택자에 대해서 살펴보겠습니다. 목차 아이디 선택자 (ID Selector) 아이디 선택자는 특정 값을 id 속성(attribute)의 값으로 갖는 요소(element)를 선택…
  • !important CSS는 같은 속성을 여러 번 정의했을 때,나중에 설정한 값이 우선 순위로 적용됩니다. 만약 나중에 설정한 값이 적용되지 않게 하려면 !important를 속성값 뒤에 붙입니다.   기본형 selector { property: value !important; …

Post a Comment