CSSを使用してHTMLアンカータグをクリック/リンクできないようにすることは可能ですか?


132

たとえば、私がこれを持っている場合:

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

リンクをクリックできないようにし、page.htmlに移動しないようにするスタイル属性に使用できるものはありますか?

または、アンカータグで「ページリンク」を単にラップしない唯一のオプションですか?

編集:人々がより良いアドバイスを提供できるように、なぜこれをしたいのかを述べたいと思います。開発者が希望するナビゲーションスタイルのタイプを選択できるように、アプリケーションをセットアップしようとしています。

だから、私はリンクのリストを持っています、そして1つは常に現在選択されています、そして他のすべてはそうではありません。選択されていないリンクについては、通常のクリック可能なアンカータグにしたいのは明らかです。しかし、選択されたリンクについては、リンクをクリックしたままにすることを好む人もいれば、クリックできないようにしたい人もいます。

これで、選択したリンクの周りにアンカータグをプログラムでラップしないだけで簡単にできます。しかし、選択したリンクを次のようなもので常にラップできる場合は、よりエレガントになると思います:

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

次に、開発者がCSSを介してリンクスタイルを制御できるようにします。



3
クリックしたくない場合は、<span>代わりにa を使用しますか?
デビッドはモニカを

デビッドに同意する必要があります。UIパラダイムを壊さないでください。ユーザーの期待は、リンクをクリックできることです。クリックできない場合は、実際にはリンクではありませんか?
mrtsherman

考えられる答えについては、stackoverflow.com / questions / 2091168 / disable-a-link-using-cssをご覧ください。
オリバー

ええ、これはひどい考えです。スクリーンリーダーはリンクであるため、リンクをリンクとして表示します。検索エンジンも。実際、HTMLを理解できるものなら何でも。これを行わないでください。それについて「エレガント」なものは何もありません。
ポールD.ウェイト2013

回答:


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のUbuntuバージョンで動作することを確認できます。それがWindows上のIEで動作するかどうか疑問に思っています。
JohnMerlino

3
このソリューションの鍵は次のとおりpointer-eventsです。ここで互換性テーブルのリンク
masegaloeh

@JohnMerlino:IE9では機能しません。互換性テーブルへのmasegaloehのリンクで詳細を参照してください
Howie

警告:タブ移動リンクにフォーカスを移動するためのリンクをアクティブにします使用してはなりまだ仕事
wtho

私はカーソルを考えていません:デフォルトが必要です。あなたがpointer-events:noneを持っている限り、それは動作するように見えます。
クロダント

51

CSSを使用するのはそれほど簡単ではありません。これは動作言語(JavaScript)ではないため、アンカーでJavaScript OnClickイベントを使用してfalseとして返すのが唯一の簡単な方法です。これはおそらく最短のコードです。あなたはそのために使うことができます:

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

2
@マイクこれはクリックで何もしないようにしますが、ボタンはクリック可能に見えます。
アコスタッシュ2013年

1
@acostache(style = "cursor:default;"を使用)指針に役立つはず
ジョン

4
問題は「CSSを使用する」でした。これは良いことですが、正しい答えではありません。
Roman Holzner、2014年

3つの主な理由により、onclick = "return false"ではなくcssを使用することをお勧めします。1-cssを使用すると、デフォルトのリンクマウスカーソルをデフォルトの矢印に変更できます。2-それは邪魔なjsです。3-これは実際に値を返します。リンクをクリックするたびにfalseを返す必要はありません。
Diego Unanue 2014年

11

はい。cssを使用することは可能です。

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

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

これは最もクリーンな方法ですが、注意点が1つあります。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
これは、問題を解決するためのかなり複雑で混乱する方法であるためです。また、質問が実際に実行することもありません(リンクを非アクティブにします)。リンクを非表示の要素で覆うだけです。ディエゴの答えははるかにきれいです。
開発

@開発者ディエゴの答えも同様に優れていると思います。しかし、私がこの回答を書いたとき(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>

JavaScript:

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

これの利点は、ロジックとプレゼンテーションを明確に分離できることです。ある日、このリンクが別のことをすると決めた場合、JSだけでマークアップをいじる必要はありません。


4
あなたは簡単にかなり高速で実行するのと同じことを行うために非jQueryのコードを書くことができます知っている: document.getElementById('my-link').onclick = function(){ return false; };
ポール

1
ほとんどの人は、開発を容易にするために、ある種のフレームワークを使用したい(そして使用すべき)と思う。著者はパフォーマンスの制限を指定していませんが、jQueryを縮小してgzip圧縮したものは31KBしかありません。利益はコストをはるかに上回ると思います。
pixelfreak 2011

2
マジ?どのブラウザがonclickまたはgetElementByIdをサポートしていないか。さて、IE 2はonclickをサポートしていませんが、CSSもサポートしていません。
ポール

1
速度の違いは小さいかもしれませんが、jQueryライブラリのダウンロード時間ができない場合はそうではありません。人々がjQueryに依存するようになり、それを使わずにJavaScriptを書く方法を忘れてしまうため、必要のないときにjQueryの使用を奨励するのは良い考えではないと思います。
ポール

4
@PaulPROこの議論は、作者の要件なしでは意味がありません。各フレームワークには目的があります。彼がJSに堪能でなく、単にmom-n-pop Webサイトを作成していて、DOM要素を操作する必要がある場合は、フレームワークを使用する方がはるかに簡単です。フレームワークの使用に抵抗があるのはばかげています。PHPはCで書かれています。つまり、PHPを使用せずにCを作成する必要があるということですか。iOSにはUIKit、Core Data、Quartzなどがあります。Flashには、一般的に使用されているサードパーティのライブラリが多数あります。この場合も、各フレームワークには目的があります。純粋で社内に組み込まれていない考え方は誰の助けにもなりません。
pixelfreak 2011


0

CSSで実行でき、非常に簡単です。「a」を「p」に変更します。あなたがそれをクリックできないようにしたい場合、あなたの「ページリンク」はどこかにリンクしていません。

CSSにこの特定の「p」でホバーアクションを実行するように指示するときは、次のように伝えます。

(この例では、「p」に「例」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.