:hover
가상 클래스
:hover
가상 클래스 선택자는
요소에 마우스 커서를 올려 놓았을 동안 해당 요소를 선택합니다.
사용자가 마우스 커서로 요소 위에 올려 놓았을 동안에만 미리 정의된 스타일이 적용되기 때문에 인터랙티브하고 동적인 사용자 경험을 제공할 수 있습니다.
요소에 마우스 커서를 올려 놓은 상태를 CSS에서 통상적으로 '호버(hover)' 상태라고 부릅니다.
예제
<button>마우스 커서를 올려보세요!</button>
button {
color: white;
padding: 0.8em 1.5em;
background-color: orange;
border: none;
border-radius: 5px;
}
button:hover { /* 버튼에 마우스 커서를 올려 놓았을 때에만 배경색을 변경 */
background-color: gray;
}
이 예제에서는 버튼 요소에 마우스 커서를 올려 놓았을 동안에만 배경색이 orange
에서 gray
으로 변경됩니다.
:hover
가상 클래스의 형식은 다음과 같습니다.
구문
:hover {
/* ... */
}
주의할 점
:hover
가상 클래스로 정의한 스타일은
자신보다 뒤에 위치하고 적어도 동일한 구체성 값(명시도)을 가진 다른 상태에 관련된 가상 클래스(:link
, :visited
)가 덮어씁니다. 또한, :active
가 :hover
앞에 배치되어 있을 경우에는 :hover
가 :active
를 덮어씁니다.
부연설명
:active
는 요소에 마우스 커서를 올려 놓은 상태에서 마우스 버튼을 누르는 순간부터 떼는 시점까지 선택하는 가상 클래스입니다.
<button>마우스 커서를 올린 후 눌러보세요!</button>
button {
color: white;
padding: 0.8em 1.5em;
background-color: orange;
border: none;
border-radius: 5px;
}
button:active { /* button:hover가 배경색 설정을 덮어쓰기를 하기 때문에 적용되지 않음 주의! */
background-color: black;
}
button:hover {
background-color: gray;
}
위 예제를 보면, :active
가 :hover
앞에 배치되어 있어서 button:hover
에서 선언한 버튼의 색(gray
)이 사용자가 버튼에 마우스 커서를 올려 놓은 상태에서 마우스 버튼을 누르는 순간부터 떼는 시점까지 선택되는 button:active
에서 선언한 버튼의 색(black
)을 덮어쓰기하기 때문에 button:active
에서 선언한 버튼의 색(black
)이 적용되지 않음을 주의해야 합니다.
다음은 LoVe HAte 순서대로 :hover
가 :active
앞에 배치되어 있어서 올바르게 스타일이 적용되는 예제입니다.
button {
color: white;
padding: 0.8em 1.5em;
background-color: orange;
border: none;
border-radius: 5px;
}
button:hover {
background-color: gray;
}
button:active {
background-color: black;
}
알아두세요!
마우스를 사용하지 않는 모바일과 같은 터치스크린에서는 :hover
와 :active
를 같이 사용하여 스타일 할 경우에 동작이 브라우저마다 다를 수 있으며, 제한적이거나 의도한 대로 작동하지 않을 수 있습니다.
HTML5에서 레이블에 호버 시 컨트롤 요소의 :hover
상태 적용
<label for="user-id">아이디</label>
<input type="text" id="user-id">
input:hover {
background-color: red;
}
브라우저 호환성
선택자 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
:hover
|
1 | 12 | 1 | 2 |
명세서
명세서 사양 | |
---|---|
:hover
|
Selectors Level 4 #the-hover-pseudo |