가상 클래스 이름 앞에 콜론(:) 1개를 붙여서 표시한다.
1. 사용자 동작에 반응하는 가상 클래스
특정 동작을 할 때 스타일이 바뀌도록 만들 때 사용한다.
① :link
방문하지 않은 링크에 스타일 적용
② :visited
방문한 링크에 스타일 적용
③ :hover
마우스 커서를 올린 곳에 스타일 적용
④ :active
웹 요소 활성화 했을 때의 스타일 적용
⑤ :focus
웹 요소에 초점이 맞춰졌을 때의 스타일 적용
(①~④는 꼭 순서대로 작성을 해야 한다.
순서가 바뀌게 되면 스타일이 제대로 적용되지 않는다.)
<style>
.navi a:link, .navi a:visited { /*방문한 링크와 방문하지 않은 링크에 스타일 적용*/
display:block;
font-size:14px;
color:#000;
padding:10px;
text-decoration: none;
text-align:center;
}
.navi a:hover, .navi a:focus { /*커서를 올리거나 포커스를 맞췄을 때 스타일 적용*/
background-color: pink;
color:skyblue;
}
.navi a:active { /*링크를 클릭했을 때 스타일 적용*/
background-color: blue;
}
</style>
<div class="container">
<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>
</div>


2. 요소 상태에 따른 가상 클래스
① :target
앵커 대상에 스타일 적용
<style>
.navi a:link, .navi a:visited { /*링크를 방문 했든 안했든 적용하는 스타일*/
font-size: 14px;
padding:10px;
text-decoration: none;
}
.navi a:hover, .navi a:focus { /*링크에 마우스 포인터 둘때 적용하는 스타일 */
background-color: #222;
color:#fff;
}
.navi a:active{ /*링크 클릭할 때 적용하는 스타일*/
background-color: #f00;
}
.contents {
margin:30px auto;
width:400px;
padding:20px;
border:1px solid #222;
border-radius: 5px;
}
#home:target { /*링크가 id=home인 곳에 적용하는 스타일*/
background: #ff9844;
}
#best:target { /*링크가 id=best인 곳에 적용하는 스타일*/
background: rgb(157, 223, 165);
}
#new:target { /*링크가 id=new인 곳에 적용하는 스타일*/
background-color: #fff8dc;
}
</style>
<div class="container">
<nav class="navi">
<ul>
<li><a href="#home">홈</a></li>
<li><a href="#best">베스트</a></li>
<li><a href="#new">신제품</a></li>
<li><a href="ps-2.html">고객 센터</a></li>
</ul>
</nav>
<div id="home" class="contents">
<h2>홈</h2>
<p>...</p>
</div>
<div id="best" class="contents">
<h2>베스트</h2>
<p>...</p>
</div>
<div id="new" class="contents">
<h2>신제품</h2>
<p>...</p>
</div>
</div>

② :enabled와 :disabled
요소의 사용 여부에 따라 스타일 적용
③ :checked
선택한 항목의 스타일 적용
<style>
#signup input:checked + label { /*input에 checked가 되면 input의 첫째 동생 label에 스타일 적용*/
color:red;
font-weight: bold;
}
</style>
<form id="signup">
<fieldset>
<legend>개인정보</legend>
<ul>
<li>
<label for="fullname">이름</label>
<input type="text" id="fullname" name="fullname" required>
</li>
<li>
<label for="tel">연락처</label>
<input type="tel" id="tel" name="tel">
</li>
</ul>
</fieldset>
<fieldset>
<legend>객실 형태</legend>
<ul>
<li>
<input type="radio" name="room" id="basic">
<label for="basic">기본형 (최대 2인)</label>
</li>
<li>
<input type="radio" name="room" id="family">
<label for="family">가족형 (최대 8인)</label>
</li>
</ul>
</fieldset>
<button type="submit">제출</button>
</form>

④ :not
특정 요소 제외하고 스타일 적용
위 코드에서 type이 text와 tel인 곳에만 스타일을 적용하고 싶다면
<style>
#signup input:not([type=radio]){ /*type이 radio가 아닌 input 요소들에 적용할 스타일*/
border:1px solid #ccc;
border-radius:3px;
padding:5px;
width:200px;
}
</style>
#signup input[type=text], input[type=tel]{...} /*이것보다 훨씬 코드를 줄여서 쓸 수 있다.*/
더보기
Do it! HTML+CSS+자바스크립트 웹 표준의 정석 교재를 참고하여 작성했다.
'CSS' 카테고리의 다른 글
| 가상 요소 (0) | 2022.11.18 |
|---|---|
| 가상 클래스 (2) (0) | 2022.11.18 |
| 속성 선택자 (2) | 2022.11.16 |
| 연결 선택자 (0) | 2022.11.16 |
| 배경 이미지 지정하기 (0) | 2022.11.15 |