明示的な背景色が設定されたdivがあり、その中にinput要素があり、background-colorが 'inherit'に設定されている場合、Chrome、Firefox、Safariでは期待どおりに機能しますが、IE 8、9、または10。
問題を説明する最小限の例を次に示します。 jsbin example
テキストボックスの背景色は同じである必要があります。 divにカーソルを合わせると、divの背景色が変わり、入力も変わるはずです。入力をクリックすると、継承をオーバーライドする:focusルールがあります。
次のCSSを使用して、必要な効果を得ることができました。
div.container {
margin: 50px;
padding: 10px;
background-color: #aaa;
}
div.container input {
background-color: transparent;
border-width: 0;
}
div.container:hover {
background-color: yellow;
}
div.container input:focus {
background-color: white;
}
何らかの理由で、IE10の背景色プロパティを使用した継承は、他のブラウザーとは異なる方法で実装されているようです。
背景色をtransparent
ではなくinherit
に設定するとうまくいくようです。
結果はデモで見ることができます: http://jsfiddle.net/audetwebdesign/kTM2f/
もっと良い説明があればいいのですが、少なくとも回避策はあります。
IE8のバグ
次の関連する質問を読みました。
設定background-color: transparent
入力フィールドで、IE8の入力フィールドが無効になっているようです。
その場合、CSSはより明示的なバージョンである必要があります。
div.container {
margin: 50px;
padding: 10px;
background-color: #aaa;
}
div.container input {
background-color: #aaa;
border-width: 0;
}
div.container:hover {
background-color: yellow;
}
div.container:hover input {
background-color: yellow;
}
div.container input:focus {
background-color: white;
}
Background-color:transparentは許容できる解決策ではありませんか?
ルールプロパティに!important
を追加します。
input {
background-color: inherit !important;
border-width: 0;
}