3

入力フィールドを含むテーブルセルがあります。入力フィールドはテーブルセルを埋める必要がありますが、そのパディングには到達しません。私が持っているものは(firebugで)このように見えます:

パディングに到達するフォーム要素

入力フィールドを青い領域内に保持し、紫色の領域に押し込まないようにします。

そして:もちろん、私はこのトピックに関するすべての質問を最初に読みました。私はそれをすべて読みましたが、実際にそれを解決する答えは見つかりませんでした。

最新のすべてのブラウザ(ie7でも)で動作するはずです。

jsfiddleを使用して最小限のライブ例を作成しました。他の質問のすべてのソリューションを試しましたが、これを機能させることができませんでした。a)これに対する実用的な解決策はありますか?およびb)これに対する優れた非回避策もありますか?

なぜこれがすべてのブラウザで問題になるのですか?これはCSSの間違った仕様だと思います。もちろん「100%」と言えば、要素をコンテンツ領域の「100%」に合わせたいからです。それをパディングとマージンに流し込むためのユースケースは何ですか?

4

3 に答える 3

6

さて、ここに行きます。

私はこの答えとまったく同じ方法を使用しています。

参照: http: //jsfiddle.net/AKUsB/

CSS:

.inputContainer {
    background: #fff;
    padding: 3px 3px;
    border: 1px solid #a9a9a9
}
.inputContainer input {
    width: 100%;
    margin: 0; padding: 0; border: 0;
    display: block
}

HTML:

<div class="inputContainer">
    <input type="text" name="company" id="company" value="" class="formInputTextField" style="width: 100%;" />
</div>
于 2011-03-31T09:27:23.337 に答える
3

ここでの問題は、ボックスモデルにあります。width: 100%これは、使用可能なものに基づいてピクセル値を適用すると言う場合です(これは、Webインスペクターの[計算されたスタイル]オプションで確認できます)。ただし、その後、その幅にパディングが追加されるため、5pxのパディングは、合計幅100%+ 10px(各辺に5)と計算されます。

この問題を解決するには、パディングを削除するか、幅の値に組み込む必要があります。例えば:

input { width: 100%; padding: 0; }

または

input { width: 90%; padding: 0 5%; } /* width totals 100% */

ほとんどのフォーム要素は、デフォルトで、ある程度のパディングを継承します。したがって、入力に特にパディングを適用していなくても、ブラウザがデフォルトでパディングを使用しているため、入力はそのまま残ります。

于 2011-03-30T15:46:58.390 に答える
1

使ってみるべきだと思います

box-sizing: border-box
于 2017-09-08T07:38:32.657 に答える