2009-08-30 18 views
16

私のウェブサイトのフォームにパディングに問題があります。 フォーム要素の高さ/幅を設定して、それにパディングを追加するとします。私が試したすべてのブラウザでは、Firefoxを除き、パディングが高さ/幅に追加されます。FirefoxとOpera/Chrome/IEのフォームのパディングの相違

入力が200インチ、高さが20ピクセルの場合は、 5(すべての方法)でのパディング、合計と幅と高さの合計は210pxと30pxですが、Firefoxでは200pxと20pxです。

どうすればこの問題を回避できますか?

+0

ページへのリンク? DOCTYPEを設定しましたか? –

+0

まだオンラインではありません。 ; \ 私はこれまでに問題がある人について読んだことがありますが、回答は見つかりませんでした。 doctypeをxhtmlに設定しました。 – guzh

+0

ドキュメントはxhtml strictでも有効です – guzh

答えて

27

inputこのCSSを与える:

box-sizing: border-box; 

あなたはQuirksModethe W3C spec、およびMDNbox-sizingについての詳細を読むことができます。ここにはits browser supportがあります。ターゲットブラウザで必要な場合は、プレフィックス-moz-または-webkit-を使用してください。


は、この答えは、以前私がChromeウェブインスペクタのアップ/ダウンの矢印キーを使用して発見した値initialを、提案しました。しかし、initialは、ブラウザのデフォルト値であるプロパティの初期値を表すCSSキーワードです。どのプロパティにも適用可能です。 initialは、使用するボックスモデルを明示的に命名するよりも安全性が低くなります。 box-sizing: initialが指定され、ブラウザのデフォルト値box-sizingが変更された場合は、inputの埋め込みが再び破損する可能性があります。

+3

について尋ねている現象とは関係がありません。これは正確に私が探していたもので、 'box-sizing:border-box;トリック:)遅く返事を申し訳ありません! – guzh

+0

または。私の質問をもう一度見ると、パディングの問題に慣れてきたようです。私は 'box-sizing:content-box;'が210px/30pxの幅と高さを得るための正しいオプションだと思います。私は、従来のボックスモデルがより論理的であると思う([Quirksmode](http://www.quirksmode.org/css/box.html))。 – guzh

+0

FYI、 '* {box-sizing:border-box; } 'をCSSファイルに追加すると、すべての要素がborder-boxに設定され、マージンとパディングを追加しても要素の幅と高さが維持されます。デフォルトのボックスモーダル 'content-box'は、要素の幅に余白と余白を追加します。多くの人々の意見では、非論理的で扱いにくいです。詳細はこちらhttp://www.paulirish.com/2012/box-sizing-border-box-ftw/をご覧ください。編集:追加することを忘れました、 'border-box'はIE8以上でサポートされていますので、安全に使用できます。 – Gavin

0

display:blockをフォームに貼り付けてみましたか? FFがインライン要素のように扱われているように思えるかもしれません。

+0

'display:inline-block'はもっと良いかもしれません – Eric

3

blueprint-cssなどのCSSフレームワークを使用してください。青写真に添付されているサンプルページをご覧ください(forms.htmlというファイルがあります)。これにより、パディングの問題だけでなく、遭遇する可能性のある他の問題も解決するはずです。

+0

青写真フォームのcss-fileを見ましたが、入力フィールドのトリックは少なくとも' input [type = text] ' ..! 今私はテキストエリアでそれを解決する必要があります、私はそれを調べます! ありがとうございます( – guzh

-2

これを試してみてください:

/* Set all margins and paddings to 0 on all browsers */ 

* { 
    margin: 0; 
    padding: 0; 
} 
+0

)これは間違っていますが、ブラウザーのデフォルトのスタイルは、質問が –

0

http://necolas.github.com/normalize.css/

/* 
* 1. Addresses box sizing set to content-box in IE 8/9. 
* 2. Removes excess padding in IE 8/9. 
* 3. Removes excess padding in IE 7. 
* Known issue: excess padding remains in IE 6. 
*/ 

input[type="checkbox"], 
input[type="radio"] { 
    box-sizing: border-box; /* 1 */ 
    padding: 0; /* 2 */ 
    *height: 13px; /* 3 */ 
    *width: 13px; /* 3 */ 
} 

/* 
* 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome. 
* 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome 
* (include `-moz` to future-proof). 
*/ 

input[type="search"] { 
    -webkit-appearance: textfield; /* 1 */ 
    -moz-box-sizing: content-box; 
    -webkit-box-sizing: content-box; /* 2 */ 
    box-sizing: content-box; 
} 
関連する問題