[css] 마우스 동작에 따라 링크마다 다른 스타일을 적용하는 방법

아래 코드의 내용은 다음과 같다.

– 현재 열려 있는 페이지의 링크 아래에 작대기가 출력된다.
– 다른 페이지의 링크로 마우스 포인터를 옮기면 그 링크 아래에 작대기가 출력된다.
– 위의 상태에서는 현재 페이지의 링크 아래에 출력된 작대기가 사라진다.
– 포인터가 링크에서 벗어나면 다시 현재 페이지의 링크 아래에 작대기가 출력된다.

현재 열려 있는 페이지가 아닌 링크로 포인터를 옮긴 때 현재 페이지를 나타내는 링크에 적용되어 있는 스타일을 일시적으로 없애는 게 핵심 내용이다.

<style>
    .open
    {
        border-color: chocolate; border-style: hidden; border-bottom-style: solid;
    }
</style>

<nav style="font-size: 14px;">
    <a class="open">HOME</a> // 현재 페이지 표시
    <a href="/new.html">NEW</a>
    <a href="/contact.html">CONTACT</a>
    <a href="/login.html">LOG IN</a>
    <input type="search" placeholder="search ...">
</nav>
nav:hover > a
{
    border-style: hidden;
}

nav > a:hover
{
    border-color: chocolate;
    border-style: hidden;
    border-bottom-style: solid;
}

컨테이너인 <nav>에 포인터가 닿은 때 모든 링크들의 스타일을 일단 없앤다. 그런 뒤 포인터가 닿은 링크의 스타일만 수정한다.

위와 같이 현재 페이지 스타일을 internal css로 구현하지 않고 inline으로 구현하면 external css로 override할 수가 없다.