http://jsfiddle.net/srLQH/ に移動し、[結果]ビューの入力テキストボックスに入力します。
FF、Chrome、Safariでこれを行うと、テキストは右側の20px手前で停止します。
IE 7/8では、テキストは20px短く止まらず、入力ボックスの端まで続きます。
IEとの取引は何ですか? IEで、他のすべてのブラウザが提供するのと同じパディング効果を得るにはどうすればよいですか?
私はこれを解決する方法を探していました。同僚が解決策を見つけ、それをテストしたところ、完全に機能しました。つまり、padding: right
を削除し、border: 20px solid transparent
を追加する必要があります。
私はそれを行う1つの方法を見つけましたが、それはきれいではありません。
http://jsfiddle.net/dmitrytorba/dZyzr/162/
<!--[if IE]>
<style type="text/css">
input {
border: none;
margin: 5px;
padding-right: 0px;
}
.wrapper {
border: 1px #aaa inset;
}
.spacer{
margin-left: 20px;
}
</style>
<![endif]-->
<span class='wrapper'>
<input type='text' />
<span class='spacer'></span>
</span>
この質問は古いことは知っていますが、何度も検索した結果、うまくいく解決策を見つけました。
以下を使用して値にマージンを追加することにより、「パディング」をIEに戻すことができます。
デフォルトの入力パディング
input [type = "text"] { padding-left:17px; padding-right:17px; }
IE入力のパディング
input [type = "text"] ::-ms-value { margin-left:17px; margin-right:17px; }
ただし、このメディアクエリで実行できるIE 10+(したがって、両方を使用しない)のパディングを削除する必要があります。
@ media screen and(-ms-high-contrast:active)、(-ms-high-contrast:none){ input [type = "text"] { padding-left:0; padding-right:0; } }
Divなど、IEでパディングを行う別の要素にチャックするだけです。そうすれば、CSSスタイルシートを無効にする醜いハッキングについて心配する必要はありません。他のブラウザに迷惑をかけないように、入力からパディングを削除することを忘れないでください。これは、IEのテキストと一緒にスクロールしない背景画像をテキストボックスに与える唯一の方法でもあります。
これは古い質問ですが、IE10で次のように修正しました。
これを修正する方法IE-10の場合:
::-ms-clear {
display: none;
}
または特定の入力の場合:
.anyinput::-ms-clear {
display: none;
}
詳細については、こちらをご覧ください: http://sarveshkushwaha.blogspot.com/2014/06/ie-right-align-text-input-issue.html
IEisは、行の最後までではなく、CSSを適用しているように見えます。つまり、パディングは、パディングの影響を受ける値ではなく、値の影響を受けます。
パディングを20pxに設定し、デフォルト値をデフォルトの幅より長くすると、最後までスクロールしてパディングを確認できます。 http://jsfiddle.net/dZyzr/
視覚的なトリックを考え出すか、IE用に別のスタイルシートを使用する必要があります。