LoginSignup
3
1

More than 3 years have passed since last update.

aタグでもdisabled属性を扱えるように見せかける

Last updated at Posted at 2020-06-30

前提

disabled属性とは要素の操作・入力を無効化するために設定する要素ですが、この要素を適用することができるのはformに関連付けられた要素のみです。
参考: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#enabling-and-disabling-form-controls:-the-disabled-attribute

しかし、しばしば本来disabled属性が使用できないaタグやその他のタグでも操作の無効化の意味合いとしてdisabled属性を使いたくなることがあります。ありません?僕はあるんです、結構頻繁に。

そんなときにちょっと使えそうなTIPSを書いておきます。

属性セレクタを使用してdisabledっぽくする

css3には属性セレクタというものがあります。これは指定した属性の存在もしくはその値によって要素を選択できるセレクタです。

これを用いて、disabled属性を持つaタグ要素を選択し、pointer-eventsを用いてマウスイベントを無効化してやることで擬似的なdisabledっぽい動きを実現することができます。

動作サンプル(codepen)

  <a disabled href="https://google.com">
    このリンクはクリックできないよ
  </a>
  a[disabled] {
    pointer-events: none; /* マウスイベントの無効化 */
    opacity: 0.5; /* 操作できない感のあるスタイル付け */
  }

操作できない感のあるスタイル付けとしてcursor:not-allowedとかを使うと更にそれっぽい感じになるのですが、pointer-events: none;と食い合ってしまうので、cursorを指定したい場合は別のアプローチが必要になりそうです。

補足

単にaタグの操作を出来なくしているだけなので、disabled要素を外すなりリンク先を直接リクエストすることで遷移先を参照することはもちろん可能です。意図しない遷移・リクエストが行われた際の対策実装は別途適宜行ってください。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1