クリックできるものがあって,<a>
にするか<button>
にするか,という話をしていて,いろんな観点があるなと思ったのでメモ.
- 単なる画面遷移なら
<a>
- 単にformを送信したいときは,
<input type="submit">
や<button>
<button>
はdisabled属性を使って無効状態にできるので,押せない場合もあるなら便利- リンクを
<a>
にしておくと,PCではホバーするとリンク先が見えるので,ユーザーにとっては何が起きるか予想できて便利- そう考えるとformは押してみるまでどこに飛ぶか分からないので怖い気がする
- リンクを
<a>
にしておくと,:visited
を使って訪問済のリンクの色を変えることができて便利 - モーダルウィンドウを出すとき,ウェルカムメッセージを開くボタンを
<a href="#welcome">
として,/#welcome
のときにウェルカムメッセージを出す,としておくとブラウザの機能に乗っかってモーダルウィンドウを出すことができて便利.- ブラウザバックやリロードに対応できる
<form>
の中に<button>
を置くとsubmitボタンになってしまうので,<button type="button">
する- 普段はJSでclickイベントを見てpreventDefaultしているけど,ある日JSで例外が出てformがsubmitされてしまう,ということが昔あった
<button>
のかわりに<span>
を使うと,<button>
が本来持つ機能を再実装することになりメリットが少ないのでやめましょう- 手作りする場合はいろんなことをやる必要がある リンクのようなボタンを作る: Days on the Moon
- FRONTEND CONFERENCEでの良い資料 ウェブを構成するUIの品質とHTML - masuP.net
<span>
で作ったほうがよい場合があったら教えてください!