2012-08-03 2 views
7

私はボタンといくつかのCSSで奇妙な問題を抱えていましたが、高さ=高さ+詰め物がある古いIE5ボックスモデルに準拠しているかのように動作していたことに気付きました。最新のすべてのブラウザで、HTML <buttons>が古いIE5ボックスモデルに準拠しているのはなぜですか?

閲覧した後、私はthis articleに出くわしました。これは私の前提を確認しましたが、なぜこれが当てはまるのか説明しませんでした。

最近のすべてのブラウザ(Firefox、Chrome、IE9)がこのようなボタン要素を扱う理由を知っている人はいますか?そして、誰もが、ボタンの要素が(私が言うことができる限り)それらのブラウザで他の要素を使用するボックスモデルを使用する回避策を知っていますか?

+1

これはIE5のボックスモデルであり、IE6ではありません。 IE6は標準モードで動作する標準ボックスモデルを実装していますが、IE5は標準モードでは動作しません。 – BoltClock

+0

'DOCTYPE'は何を使用していますか? – Oded

+0

<!DOCTYPE html> – Sean

答えて

3

ボタンはこのように動作することは決してありませんでしたが、入力要素を使用せず、すべてのブラウザで同じスタイルに見えるようにするため、div要素を使用することをお勧めします。

button, input[type=button], input[type=submit] 
{ 
    -webkit-box-sizing: content-box; 
    -moz-box-sizing: content-box; 
    box-sizing: content-box; 
} 

Here's an example on JSFiddle

回避策のボタンがdiv要素のような拡張性にするには、div要素のデフォルト値である、content-boxbox-sizing属性を設定することができます。

+1

'box-sizing:context-box;はIE9、Chrome 20、Opera 12、Safari 5(pc)で動作しました。そして '-moz-box-sizing:content-box;を追加することでFF14でも動作します。 – some

+0

IE7以外のすべてで動作します!ありがとうございました:) – Sean

0

<button>はインラインタグと見なされますが、当然W3Cボックスモデルは使用されません。

これは純粋に論理的ですが、私は全く戸惑うことに同意します。今のところ、ブロックタグとは考えられないのはなぜですか?

button { 
 
    width: 100px; 
 
    padding: 0 30px; 
 
} 
 

 
#a { display: inline; } 
 
#b { display: block; } 
 
#c { display: inline; box-sizing: content-box; } 
 
#d { display: block; box-sizing: content-box; }
<button id="a">aaa</button> 
 
<button id="b">bbb</button> 
 
<button id="c">ccc</button> 
 
<button id="d">ddd</button>

+0

隣り合ったボタンを配置するのは非常に一般的な設計方法なので、デフォルトでは 'inline'という意味になります。はい、 'inline-block'は要素のインライン性質を維持しながら、ブロックレベル要素のようにスタイル付けすることができますが、要素のデフォルトは' inline-block'とは考えられません。 – jackwanders

+0

私はインラインの表示がボックスモデルが高さ=高さか高さ=パディング+ボーダー+高さのどちらに影響するかは考えていません – Sean

+0

もう一度私はそこで完全に間違っているかもしれません。 do(したがって、疑問!) – Sean

2

この時点でこの質問を尋ねるについて面白いことにJS/CSSコミュニティにおけるハイエンドの人々のいくつかは、このボックスモデルの非常に互換性のあるバージョンを使用して開始しているということです、彼らの生産プロジェクトで。

box-sizing : border-boxは、最新のブラウザを入力と同じように動作させます。
参照:Paul Irish - Border-Box FTW

は直接的な利点は、あなたが実際に非fixed /非absolute配置要素のzインデックスオーバーレイを行うつもりがない限り、負のマージンでプレイすることなく、はるかに速く、すべてを並べることができることです。

+0

はい、私はそれに似たものを聞いていました。 IE5)。そして、その記事は間違いなく面白そうに見えます、後で読むためにそれを置くでしょう! – Sean

関連する問題