비활성화된 a 태그, 사용자 경험 개선하기

소요 시간: 5분

단순히 링크를 비활성화하는 데 그치는 것이 아니라, CSS와 JavaScript를 활용해서 사용자 경험(UX)을 어떻게 개선할 수 있다.


1. CSS로 비활성화된 링크를 시각적으로 표시하기

우선, 비활성화된 링크가 사용자에게 명확히 보이도록 CSS에서 스타일을 설정했다.

pointer-events: none; 속성을 추가하면 클릭이 완전히 막히고, 회색으로 스타일링하면 시각적으로 비활성화 상태임을 알 수 있다.

<style>
    .disabled-link {
        pointer-events: none; /* 클릭을 막음 */
        color: gray; /* 비활성화 상태 시각화 */
        cursor: default; /* 마우스 커서 기본 상태 */
        text-decoration: none; /* 밑줄 제거 */
    }
</style>

<a class="disabled-link" href="https://www.example.com">비활성화된 링크</a>

이 코드를 통해 시각적으로 비활성화된 링크임을 알 수 있게 된다. 사용자들이 실수로 클릭하는 일도 줄어들 것이다.


2. JavaScript로 동적 링크 상태 제어하기

CSS만으로 모든 상황을 처리하기는 어려웠다.

그래서 조건에 따라 링크를 활성화하거나 비활성화하는 동적 제어가 필요할 때는 JavaScript가 더 효과적이다.

체크박스를 활용해서 특정 조건이 만족될 때만 링크가 활성화되도록 구현해 보았다.

<input type="checkbox" id="agreeCheckbox"> 약관에 동의합니다
<br>
<a href="https://www.example.com" id="conditionalLink" class="disabled-link">다음 단계로 이동</a>

<script>
    const checkbox = document.getElementById('agreeCheckbox');
    const link = document.getElementById('conditionalLink');

    checkbox.addEventListener('change', function() {
        if (this.checked) {
            link.classList.remove('disabled-link');
            link.style.pointerEvents = 'auto'; // 클릭 활성화
            link.style.color = ''; // 원래 색상으로
        } else {
            link.classList.add('disabled-link');
            link.style.pointerEvents = 'none'; // 다시 비활성화
            link.style.color = 'gray'; // 색상 변경
        }
    });
</script>

이 코드는 꽤 유용했다. 사용자가 동의 체크박스를 클릭하지 않으면 링크가 작동하지 않아서 무작정 클릭을 막을 수 있다. 조건을 명확히 해두면 사이트가 좀 더 안정해진다.


3. 사용자 알림으로 혼란 방지하기

비활성화된 링크를 클릭할 때 사용자들이 왜 클릭이 안 되는지 알 수 없으면 당황할 수도 있다.

그래서 클릭했을 때 알림을 제공하는 방식도 고려해봤다.

<a href="#" id="alertLink" class="disabled-link">비활성화된 링크</a>

<script>
    document.getElementById('alertLink').addEventListener('click', function(event) {
        event.preventDefault();
        alert('이 링크는 현재 사용할 수 없습니다.');
    });
</script>

클릭을 방지하는 것과 함께 알림 메시지를 제공하면 사용자와의 소통이 훨씬 더 나아진다. "왜 이 링크가 안 되지?" 하고 헷갈리지 않게 된다.


요약



자바스크립트 리스트