CSS 스타일 문서에서 사용하는 가상 클래스 / 가상 요소

93741 단어 CSSCSS

가상 클래스 (pseudo-class)

가상 클래스란, 실제로 존재하는 요소에 가상으로 클래스를 부여하여 css로 제어하는 것을 의미한다. 기존의 여러가지 선택자로도 범위를 지정하기가 어려웠던 대상을 선택하기 위해 사용되는 선택자이다.

ex) 메뉴의 첫번째 항목, 단락의 첫번째 글자 등등

  • 가상클래스: 콜론 : 기호 1개
  • 가상요소 : 콜론 : 기호 2개 (ie8 이하 버전은 적용되지 않기 때문에 싱글콜론으로 표기하는 것이 낫다.)

가상 클래스

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

🍕 UI 요소 상태에 따라 적용되는 가상 클래스 선택자

🍕 타깃 가상 클래스 선택자

🍕 부정 가상 클래스 선택자

🍕 구조 가상 클래스 선택자



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

동적 가상 클래스라고 부르기도 하는 이 가상 클래스 선택자는 사용자가 웹 요소를 클릭하거나 마우스 커서를 올려놓는 등 사용자의 동작에 따라 스타일을 제어하고자 할 때 사용한다.


:link

<style>
.navi a:link {                 /*클래스 navi 요소 안의 방문하지 않은 링크에 대한 스타일 지정*/
	color: black;              /*방문하지 않은 링크의 글씨 색상*/
    text-decoration: none;     /*방문하지 않은 링크의 밑줄 스타일을 없앰*/
	font-size: 12px;           /*방문하지 않은 링크의 글자 크기를 지정*/
    padding: 10px;}            /*방문하지 않은 링크 요소의 여백을 지정*/
</style>


<nav class="navi">
	<ul>
		<li><a href="#">신청 및 접수</a></li>
    	<li><a href="#">접수 확인</a></li>
    	<li><a href="#">공지 사항</a></li>
    	<li><a href="#">고객 센터</a></li>
	</ul>
</nav>

방문하지 않은 링크에 대한 스타일을 지정

문서 내의 하이퍼링크 중, 사용자가 아직 방문해본 적이 없는 링크에 스타일을 지정한다.
텍스트 링크는 브라우저 기본 스타일로 파란색 글자와 밑줄로 표시되지만 이러한 색상이나 밑줄 스타일을 제어할 때 :link 가상 클래스 선택자를 사용한다.


:visited

<sylye>
.navi a:link, a:visited {      /*클래스 navi 요소 안의 방문하지 않은 링크와 방문했던 링크에 대한 스타일 지정*/
	color: white;              /*글씨 색상*/
    text-decoration: none;     /*밑줄 스타일을 없앰*/
	font-size: 15px;           /*글자 크기를 지정*/
    padding: 20px;}            /*여백을 지정*/
</style>


<nav class="navi">
	<ul>
		<li><a href="#">신청 및 접수</a></li>
    	<li><a href="#">접수 확인</a></li>
    	<li><a href="#">공지 사항</a></li>
    	<li><a href="#">고객 센터</a></li>
	</ul>
</nav>

방문했던 링크에 대한 스타일을 지정

문서 내의 하이퍼링크 중, 사용자가 한번 이상 방문했던 링크에 스타일을 지정한다.
텍스트 링크는 브라우저 기본 스타일로 자주색 글자로 표시되지만 이러한 색상이나 스타일을 제어할 때 :visited 가상 클래스 선택자를 사용한다.


:hover

<style>
.navi a:hover {                /*클래스 navi 요소 안의 링크 위로 마우스를 올려놓았을 때의 스타일을 지정*/
    background-color: black;   /*배경 색을 검정색으로 바뀌게 함*/
    color: yellow;}            /*글자 색을 노랑색으로 바뀌게 함*/
</style>


<nav class="navi">
	<ul>
		<li><a href="#">신청 및 접수</a></li>
    	<li><a href="#">접수 확인</a></li>
    	<li><a href="#">공지 사항</a></li>
    	<li><a href="#">고객 센터</a></li>
	</ul>
</nav>

웹 요소에 마우스 커서를 올려놓았을 때의 스타일을 지정

문서 내의 웹 요소위로 사용자가 마우스 커서를 올려놓았을 때의 스타일을 지정하고자 할때는 :hover 가상 클래스 선택자를 사용한다.
이 선택자를 응용하면 롤오버 rollover 효과를 만들 수 있다.


:active

<style>
.navi a:active {                 /*클래스 navi 요소 안의 링크를 클릭했을 때의 스타일을 지정*/
	background-color: #eee;}     /*배경 색을 바뀌게 함*/
</style>


<nav class="navi">
	<ul>
		<li><a href="#">신청 및 접수</a></li>
    	<li><a href="#">접수 확인</a></li>
    	<li><a href="#">공지 사항</a></li>
    	<li><a href="#">고객 센터</a></li>
	</ul>
</nav>

웹 요소를 활성화 시켰을 때의 스타일을 지정

문서 내의 링크요소나 이미지요소 등 웹 요소를 활성화 시켰을 때 (누르고 있거나, 클릭했을 때) 의 스타일을 지정한다.


:focus

<style>
.navi a:hover, a:focus {       /*클래스 navi 요소 안의 링크 위로 마우스를 올려놓았을 때와 초점이 맞추어졌을 때의 스타일을 지정*/  
	 background-color: black;  /*배경 색을 검정색으로 바뀌게 함*/
     color: yellow;}           /*글자 색을 노랑색으로 바뀌게 함*/
</style>


<nav class="navi">
	<ul>
		<li><a href="#">신청 및 접수</a></li>
    	<li><a href="#">접수 확인</a></li>
    	<li><a href="#">공지 사항</a></li>
    	<li><a href="#">고객 센터</a></li>
	</ul>
</nav>

웹 요소에 초점이 맞추어 졌을 때의 스타일을 지정

문서 내의 웹 요소에 사용자의 초점이 맞추어 졌을 때의 스타일을 지정하고자 할때는 :focus 가상 클래스 선택자를 사용한다.
예시로는 아이디를 입력하기 위해 텍스트 필드 안에 마우스 커서를 가져다 놓거나, tab 을 눌러 초점이 이동했을 때의 스타일을 지정할 수 있다. (hover 와 비슷한 의미로 사용되며 스타일을 지정할 때 hover 선택자와 같은 스타일을 지정해야 어수선하지 않게 보일 수 있다.)


동적 가상 클래스의 선언 순서

사용자 동작에 의한 가상 클래스 선택자는 선언 순서에 영향을 받는다.
순서가 바뀌면 스타일이 정확히 적용되지 않기 때문에 유의해서 선언하여야 한다.

:link - :visited - :hover (:focus) - :active 이 순서로 정의힌다.

<style>
.navi a:link, a:visited {        /*link 와 visited 먼저 선언*/
	color: white;              
    text-decoration: none;     
	font-size: 15px;           
    padding: 20px;}
.navi a:hover, a:focus {        /*그 다음 hover 선언 (focus)*/
    background-color: black;     
    color: yellow;}
.navi a:active {                /*마지막에 active 선언*/
	background-color: #eee;}
</style>


<nav class="navi">
	<ul>
		<li><a href="#">신청 및 접수</a></li>
    	<li><a href="#">접수 확인</a></li>
    	<li><a href="#">공지 사항</a></li>
    	<li><a href="#">고객 센터</a></li>
	</ul>
</nav>


🍕 UI 요소 상태에 따른 가상 클래스 선택자

웹 요소의 상태에 따라 스타일을 제어하고자 할 때 사용한다. 요소 중에서도 UI (user interface) 성질을 가진 요소들에 스타일을 적용할 때 주로 사용된다.


:enabled :disabled

<style>
input:enabled {
    			background: #eee;
                border: 1px black solid;}
textarea:disabled {
    			background: #white
                border: 3px blue dotted;}
</style>


<form>
    <label for="name">이름</label>
    <input id="name" type="text">
    <label for="telnumber">연락처</label>
    <input id="telnumber" type="tel>
    <textarea cols="20" rows="10" disabled>이용 약관...</textarea>
</form>
   

enabled : 해당 요소가 사용 가능한 상태일 때, 스타일을 지정하기 위한 선택자
disabled : 해당 요소가 사용 불가능한 상태일 때, 스타일을 지정하기 위한 선택자