CSS를 사용하여 HTML 앵커 태그를 클릭하거나 링크 할 수 없도록 만들 수 있습니까?


132

예를 들어 내가 이것을 가지고 있다면 :

<a style="" href="page.html">page link</a>

링크를 클릭 할 수없고 page.html로 이동하지 않도록 스타일 속성에 사용할 수있는 것이 있습니까?

또는 앵커 태그에 '페이지 링크'를 단순히 래핑하지 않는 유일한 옵션입니까?

편집 : 사람들이 더 나은 조언을 제공 할 수 있도록 왜 내가 이것을하고 싶은지를 말하고 싶습니다. 개발자가 원하는 탐색 스타일 유형을 선택할 수 있도록 응용 프로그램을 설정하려고합니다.

따라서 링크 목록이 있으며 하나는 항상 현재 선택되어 있고 다른 하나는 모두 선택되어 있지 않습니다. 선택되지 않은 링크의 경우 분명히 일반적인 클릭 가능한 앵커 태그 가기를 원합니다. 그러나 선택한 링크의 경우 링크를 클릭 할 수있는 반면 링크를 클릭 할 수없는 사용자를 선호하는 사람들이 있습니다.

이제 선택한 링크 주위에 앵커 태그를 프로그래밍 방식으로 쉽게 감쌀 수 없었습니다. 그러나 선택한 링크를 항상 다음과 같이 래핑 할 수 있다면 더 우아해질 것이라고 생각합니다.

<a id="current" href="link.html">link</a>

그런 다음 개발자가 CSS를 통해 연결 스타일을 제어하도록합니다.



3
클릭하지 않으려면 <span>대신 사용 하시겠습니까?
데이비드는 모니카

나는 David에게 동의해야 할 것입니다. UI 패러다임을 깨지 마십시오. 사용자는 링크를 클릭 할 수 있어야합니다. 클릭 할 수 없다면 실제로 링크가 아닌 것입니까?
mrtsherman

가능한 답변은 stackoverflow.com/questions/2091168/disable-a-link-using-css 를 확인하십시오 .
Oliver

예, 이것은 끔찍한 아이디어입니다. 화면 판독기는 링크이기 때문에 링크를 링크로 계속 볼 수 있습니다. 검색 엔진도 마찬가지입니다. 실제로 HTML을 이해하는 모든 것. 이러지 마 그것에 대해 "우아한"것은 없습니다.
Paul D. Waite

답변:


267

이 CSS를 사용할 수 있습니다 :

.inactiveLink {
   pointer-events: none;
   cursor: default;
}

그런 다음 클래스를 HTML 코드에 할당하십시오.

<a style="" href="page.html" class="inactiveLink">page link</a>

링크를 클릭 할 수없고 커서 스타일은 링크가있는 손이 아닌 화살표입니다.

또는 HTML에서이 스타일을 사용하십시오.

<a style="pointer-events: none; cursor: default;" href="page.html">page link</a>

하지만 첫 번째 방법을 제안합니다.


Firefox / Chrome의 우분투 버전에서 작동하는지 확인할 수 있습니다. 그래도 Windows의 IE에서 작동하는지 궁금합니다.
JohnMerlino

3
이 솔루션의 핵심은 다음과 같습니다 pointer-events. 여기에 호환성 테이블에 대한 링크
masegaloeh

@ JohnMerlino : IE9에서 작동하지 않습니다. masegaloeh의 호환성 테이블에 대한 링크
Howie

주의해야 할 점은 : 탭 이동 링크에 포커스를 이동하고 링크를 활성화하려면 Enter 키를 사용하는 것입니다 여전히 일
wtho

나는 커서를 생각하지 않습니다 : 기본값이 필요합니다. pointer-events : none이있는 한 작동하지 않는 것 같습니다.
kloddant

51

CSS는 행동 언어 (예 : JavaScript)가 아니기 때문에 CSS와 너무 쉽지 않습니다. 유일한 쉬운 방법은 앵커에서 JavaScript OnClick 이벤트를 사용하고 false로 반환하는 것입니다. 아마도 가장 짧은 코드 일 것입니다 당신은 그것을 위해 사용할 수 있습니다 :

<a href="page.html" onclick="return false">page link</a>

2
@Mike 이것은 클릭이 아무것도하지 않게하지만 버튼은 여전히 ​​클릭 가능합니다.
acostache

1
style = "cursor : default;"를 사용하는 @acostache 포인터 도움
John

4
문제는 "CSS를 사용하는 것"인데, 이것은 좋은 것이지만 정답은 아닙니다.
Roman Holzner

다음 세 가지 주요 이유로 onclick = "return false"보다는 css를 사용하는 것이 좋습니다. 1- css를 사용하면 기본 링크 마우스 커서를 기본 화살표로 변경할 수 있습니다. 2- 눈에 거슬리는 js입니다. 3- 실제로 값을 반환하므로 링크를 클릭 할 때마다 false를 반환하지 않습니다.
Diego Unanue

11

예. CSS를 사용하여 가능합니다

<a class="disable-me" href="page.html">page link</a>

.disable-me {
    pointer-events: none;
}

이것은 가장 깨끗한 방법이지만 한 가지주의 사항 : IE11 + caniuse.com
pixelfreak

8

또는 이벤트가없는 순수한 HTML 및 CSS :

<div style="z-index: 1; position: absolute;">
    <a style="visibility: hidden;">Page link</a>
</div>
<a href="page.html">Page link</a>

1
-1 문제를 해결하기가 매우 복잡하고 혼란스러운 방법이기 때문입니다. 또한 실제로 질문이하는 것을하지 않습니다 (링크를 비활성화하십시오). 보이지 않는 요소로 링크를 덮습니다. Diego의 대답은 훨씬 깨끗합니다.
개발

@developering 나는 Diego의 답변이 더 낫다고 생각하며 더 높은 투표를 받아 승인해야합니다. 그러나이 답변을 작성한 시점 (3 년 전) pointer-events에는 브라우저가 거의 지원되지 않았습니다.
Paul

@Paulpro 나는 그런 경우라고 생각했다. 공감에 대해 죄송합니다! 최신 답변이 맨 위에 있는지 확인하십시오. 답변 주셔서 감사합니다.
개발

6

CSS는 행동이 아니라 프리젠 테이션에 영향을 주도록 설계되었습니다.

일부 JavaScript를 사용할 수 있습니다.

document.links[0].onclick = function(event) {
   event.preventDefault();
};

5

더 눈에 거슬리지 않는 방법 (jQuery를 사용한다고 가정) :

HTML :

<a id="my-link" href="page.html">page link</a>

자바 스크립트 :

$('#my-link').click(function(e)
{
    e.preventDefault();
});

이것의 장점은 논리와 표현이 명확하게 분리되어 있다는 것입니다. 언젠가이 링크가 다른 작업을 수행하기로 결정했다면 마크 업을 엉망으로 만들 필요없이 JS 만 있으면됩니다.


4
당신은 jQuery가 아닌 코드를 쉽게 작성하여 훨씬 더 빠르게 실행되는 것과 같은 일을 할 수 있다는 것을 알고 있습니다 : document.getElementById('my-link').onclick = function(){ return false; };
Paul

1
대부분의 사람들은 개발을 용이하게하기 위해 일종의 프레임 워크를 원하고 사용해야한다고 생각합니다. 작성자는 성능 제한을 지정하지 않았지만 jQuery가 축소 및 gzipped는 31KB에 불과합니다. 이점이 비용보다 훨씬 크다고 생각합니다.
pixelfreak

2
진심이야? onclick 또는 getElementById를 지원하지 않는 브라우저 자, IE 2는 onclick을 지원하지 않지만 CSS도 지원하지 않습니다 ... jQuery 코드가 IE 2에서도 작동하는지 의심합니다.
Paul

1
jQuery 라이브러리 다운로드 시간이 없으면 속도 차이가 작을 수 있습니다. 사람들이 필요하지 않을 때 jQuery의 사용을 장려하는 것이 좋지 않다고 생각합니다.
Paul

4
@PaulPRO이 토론은 저자의 요구 사항이없는 내용입니다. 각 프레임 워크에는 목적이 있습니다. JS에 능숙하지 않고 mom-n-pop 웹 사이트를 운영하고 DOM 요소를 조작해야하는 경우 프레임 워크를 사용하는 것이 훨씬 쉽습니다. 어떤 프레임 워크를 사용하길 꺼리는지는 말도 안됩니다. PHP는 C로 작성되었습니다. 즉, C를 작성하고 PHP를 사용하지 않아야합니까? iOS에는 UIKit, Core Data, Quartz 등이 있습니다. Flash에는 일반적으로 사용되는 수많은 타사 라이브러리가 있습니다. 다시 말하지만 각 프레임 워크는 그 목적이 있습니다. 순수하고 집안이 아닌 정신은 누구에게도 도움이되지 않습니다.
pixelfreak

2

정답은:

<a href="page.html" onclick="return false">page link</a>

0

CSS로 수행 할 수 있으며 매우 간단합니다. "a"를 "p"로 변경하십시오. 클릭 할 수 없게하려면 "페이지 링크"가 어딘가로 연결되지 않습니다.

이 특정 "p"에 대해 호버 작업을 수행하도록 CSS에 지시하면 다음과 같이하십시오.

(이 예에서는 "p"에 "example"ID를 지정했습니다)

#example
{
  cursor:default;
}

이제 커서가 페이지 전체와 동일하게 유지됩니다.


-1
<a href="page.html" onclick="return false" style="cursor:default;">page link</a>

이에 대한 별도의 답변을 추가 할 필요가 없습니다. @ KaranK의 답변에 대한 귀하의 의견은 충분합니다. 중복 답변을 피하십시오.
MAChitgarha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.