Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리

CSS 의사 클래스(가상 선택자)인 :link, :visited, :hover, :active를 사용하면 링크의 상태별로 서로 다른 스타일을 적용할 수 있습니다. 일반 텍스트와 차별화된 링크 디자인은 사용자에게 해당 요소가 클릭 가능하다는 것을 직관적으로 알려주므로, 웹 페이지의 사용성과 접근성을 높이는 데 큰 도움이 됩니다.

선택자 선언 순서(LVHA)가 중요한 이유

네 가지 의사 클래스는 모두 동일한 특이도(specificity)를 가지기 때문에, CSS 특성상 나중에 선언된 규칙이 먼저 선언된 규칙보다 우선 적용됩니다. 따라서 의도한 대로 동작하게 하려면 반드시 :link → :visited → :hover → :active 순서로 작성해야 합니다. 예를 들어 :hover:visited보다 먼저 선언하면, 이미 방문한 링크에는 마우스를 올려도 hover 스타일이 적용되지 않습니다.

문법(Syntax)

CSS 링크 의사 클래스의 기본 문법은 다음과 같습니다.

a:(pseudo-selector) {
   /*declarations*/
}

예제 1: 기본적인 링크 상태 스타일링

다음 예제는 링크의 네 가지 상태에 각각 다른 색상과 밑줄 효과를 적용하는 방법을 보여줍니다.

<!DOCTYPE html>
<html>
<head>
<style>
div {
   margin-left: 20px;
   display: flex;
   float: left;
}
a:link {
   color: navy;
   text-decoration: none;
}
a:visited {
   color: yellowgreen;
}
a:hover {
   color: orange;
   text-decoration: wavy underline;
}
a:active {
   color: red;
}
</style>
</head>
<body>
<div>
<div>
<a href="#">Demo link </a>
</div>
<div>
<a href="">Demo visited link</a>
</div>
</div>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리

첫 번째 링크에 마우스 포인터를 올리면(hover) 글자가 주황색으로 바뀌고 물결 모양 밑줄이 나타납니다.

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리

두 번째 링크를 클릭하는 동안(active)에는 글자가 빨간색으로 변경됩니다.

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리

예제 2: 버튼 형태의 링크 스타일링

다음 예제에서는 링크에 여백, 테두리, 텍스트 그림자를 추가해 버튼처럼 보이게 만들고, 상태별로 더욱 눈에 띄는 시각적 변화를 적용했습니다.

<!DOCTYPE html>
<html>
<head>
<style>
div {
   display: flex;
   float: left;
}
a {
   margin: 20px;
   padding: 10px;
   border: 2px solid black;
   text-shadow: -1px 0px black, 0px -1px black, 0px 1px black, 1px 0px black;
   font-size: 1.1em;
}
a:link {
   text-decoration: none;
}
a:visited {
   color: blueviolet;
}
a:hover {
   color: orange;
   font-size: 150%;
   font-weight: bold;
   box-shadow: 0 0 5px 1px grey;
}
a:active {
   color: red;
   box-shadow: inset 0 0 15px red;
}
</style>
</head>
<body>
<div>
<a href="#">Kapow!</a>
<a href="">Dishoom</a>
</div>
</body>
</html>

실행 결과

위 코드를 실행하면 다음과 같은 화면이 출력됩니다.

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리

첫 번째 링크에 마우스를 올리면 글자 크기가 커지고 굵어지며, 회색 외곽 그림자가 나타납니다.

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리

링크를 클릭하는 순간에는 글자가 빨갛게 변하고, 요소 안쪽으로 붉은 그림자(inset shadow)가 채워집니다.

CSS로 링크 상태별 스타일 지정하기: :link, :visited, :hover, :active 완벽 정리