内部にテキストがなく、フォント アイコンのみのボタンのスタイルを設定しようとしているときに、興味深い HTML ボタン タグの動作に遭遇しました。この問題は、ボタンにheight
属性が指定されている場合にのみ発生します。
<header>
<button><!-- No text here --></button>
<button>This button is pushed down</button>
</header>
button { height: 40px; }
最初は、最初のボタン内のフォント アイコンが奇妙なベースライン マジックを行ったことが原因であると確信していましたが、最小限の動作例からわかるように、ボタン内にコンテンツがまったくない場合でも動作が維持されます。
最初のボタンにコンテンツを追加することでこれを修正できますが、唯一のコンテンツは<span class="icon user"></span>
フォント アイコンである であるため、実際にはフォントのベースラインに干渉し、ボタンを数ピクセルだけ離して配置します。これが、アイコンを完全に内側に配置することに決めた理由です。これにより、元のわずかな配置の問題が修正されますが、ボタンが空のように機能するため、この新しい問題が導入されます。
空のボタンによる配置の問題を回避するにはどうすればよいでしょうか?
注: 上記は webkit ブラウザーでのみ発生するようです。Firefox はテキスト付きのボタンを正しく配置しますが、空のボタンは押し上げます。