3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

IEにおけるHTMLのボタンについて

Last updated at Posted at 2019-02-15

個人的にハマったところのまとめです。

#inputのボタンとbuttonのボタン
機能的な差はあんまりない。装飾できるかできないかの違いくらい。
あとは後述のcss擬似クラス:activeの差くらい。

##inputのボタン
<input type="button" value="ボタン1">
type属性に button, submit, reset, image を指定できる。
ボタン内文字列の部分的な装飾はできない。

##buttonのボタン
<button type="button">ボタン2</button>
type属性に button, submit, reset を指定できる。
※type属性を省略した場合は**type="submit"**とみなされる。
ボタン内文字列の部分的な装飾ができたり、画像を入れられたりできる。

#buttonとcssの擬似クラス:active

html
<input  class="btn" type="button" value="test1" />
<button class="btn">test2</button>
css
.btn{
	background-color: lightgreen;
	border: 1px solid rgb(95, 158, 255);
	width: 100px;
	height: 50px;
}
.btn:active {
	background-color:red;
	border: 1px solid rgb(95, 158, 255);
}

擬似クラス:activeは、クリック中などのスタイルを定義することができますが、inputボタンでは文字列上のクリックでは反応しないようです。(もちろん、onclickイベントはどっちのボタンのどこを押下しても反応します。)

button5.png

#IEブラウザ(互換モード) と buttonデザイン
Windows7のIE8、IE9、IE10 + ドキュメントモードで表示の違いを比較してみました。
(ボタンのcssは手を入れていません。デフォルト表示です。)
ブラウザ+ドキュメントモードによってpadding、borderの数値が異なります。なのでボタンサイズも変わります。
button.png
左側二つはボタンの周り1px分が白くなっていますが、この白い部分までがwidth、heightとして数えられます。
ボタン周りの1pxについての余談:
デフォルトボタンのまま全IEのバージョンでデザインを完璧に統一することは難しいと思われます。
この問題は見た目の差異であり、userAgentによる切り分けも難しいです。ボタン周りが1px白く表示されるのはIE9以下のWindowsベーシックモードとエアロモードのみで、クラシックモードにするとボタンデザインはまた変わります。
統一することに重きを置くなら、デフォルトボタンをやめる、または画像のボタンにする等の対策が有効ではないでしょうか。どっちもできない場合は、この1pxの差異を許容するしかないのでは・・・(ごにょごにょ)。
paddingの差異に関する問題は対策しやすいかもしれません。(私が検証した限りでは)padding;0;にしてもデザインは変わらず、中の文字もちゃんとセンタリングされます。
また、IE8以降からbox-sizingのデフォルト値がborder-box(border,paddingを含んだ幅をwidth,heightとする)からcontent-box(border,paddingを含めない幅をwidth,heightとする)に変わっているようです。
box-sizing: border-box;を指定してwidth,heightをちゃんと指定することで統一することもできると思います。
もしこのほかに何か良い対策案あれば教えてください。

#IEブラウザ(互換モード) と type="submit"
IEのブラウザによって type=”submit” の表示と動作が異なります。
気をつけるべきはIE8.
IE8ではhtml上で一番最初にでてくるtype="submit"がセレクトされた状態になる。
※ボタンが青く強調されているだけの状態をフォーカス、Enterキー押下でonclickイベントが走る状態のことをセレクトと言っています。言葉の意味が違う場合はご指摘ください。
画面表示後に*(マウスクリックやTabキー押下によるフォーカス・セレクト移動をしない状態で)Enterキー押下で期待しないonclickイベント(また、それに伴うonsubmitイベント)*が走ってしまうことがあるので注意が必要。

button2.png

● 図の一番左(IE5、IE7)と一番右(IE10のIE9互換、IE10)はtype=”button”の時と表示は変わらない。画面表示直後にEnterキーを押下しても反応しない。
● 左から2番目(IE8)は画面表示時に一番最初に出てくるtype=”submit”が自動的にフォーカス・セレクトされた状態になる。この状態のままEnterキーを押下するとonclickイベントが走る。IE10のIE8互換モードは、表示はtype=”button”と変わらないがセレクトはされている模様。Enterキー押下でonclickイベントが走る。
● 右から2番目(IE9のIE9)は、IE8同様見た目はフォーカスされた状態であるが、こちらは画面表示直後にEnterキーを押下してもonclickイベントは走らない。

3
3
0

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
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?