いくつかのクリック可能な要素を含むページがあり、代わりにそれらを s に変更して、jQuery で簡単に識別できるようにし<div>
たいと考えています。<button>
しかし、<div>
s を<button>
s に変更すると、サイズが変わります。(固定の幅と高さでスタイリングしていますが、ボタンは div とは異なる幅と高さでレンダリングされます。)
問題を再現する jsfiddle は次のとおりです: http://jsfiddle.net/AjmGY/
これが私のCSSです:
.styled {
border: 4px solid black;
background: blue;
width: 100px;
height: 100px;
}
そして私のHTML:
<div class="styled"></div>
<button class="styled"></button>
同じサイズのボックスが 2 つあるはずですが、一番下のボックス ( <button>
) は著しく小さくなっています。この動作は、Windows (Chrome、FireFox、IE、Opera) と Android (組み込みブラウザーと Dolphin) の両方で試したすべてのブラウザーで一貫しています。
スタイルに追加display: block;
してみましたが、両方とも同じルールを使用してレンダリングされる可能性があると考えていました (つまり、今はブロック要素なのでbutton
レンダリングを のようにしますdiv
) が、効果はありませんでした。ボタンは小さいままでした。
境界線の幅を広げると、視差が大きくなります。border
ボタンがのようにその上にあるのではなく、そのの中にあるかのように見えます。私が理解している限り、これはボックス モデルに違反していますが、W3C は次のように述べています。width
width
<div>
ユーザー エージェントは、特定のユーザー インターフェイス要素 (ボタン、メニューなど) の境界線を「通常の」要素とは異なる方法でレンダリングする場合があります。
button
a の境界線が幅と高さの外側ではなく内側にあるのは、正常/文書化/予想される動作ですか? この動作に依存できますか?
(関連する場合、私のページは HTML5 doctype を使用します。)