web-dev-qa-db-ja.com

IE CSSフィルターをリセットまたはオーバーライドするにはどうすればよいですか?

私はcss3のtext-shadowおよびbox-shadowと同等の見苦しいものを作成しようとするために、独自のMS 'filter'プロパティを使用しています。

この問題にぶつかるまで、私は実際にうまくやっていた。フィルターを持っている別のdiv内のdivにフィルターを適用すると、フィルター効果が子オブジェクトで結合されるように見えます。

Filter:noneを使用してみました。リセットしますが、喜びはありません。また、構文にさまざまなバリエーションを試しました。つまり、「-ms-filter: 'progid:... Glow()'」、「filter:progid:... Glow()」、「filter:Glow()」など。

IE8でのテスト

89
SpliFF

子供を絶対的または相対的な位置に置くことで、ある程度成功しました。これは以前は動作しなかったようですが、複雑になると再び壊れる可能性があります

親にフィルターが適用されると、そのすべての子は本質的に内部的には直接的な表面になると思います。テキストを選択することはできますが、遅れます。テキスト選択は、各文字を別の表面にするハックだと思います。これはくだらない混乱であり、ブラウザ全般、特にフィルターが非常にバグがある理由を説明するのに大いに役立ちます。

6
SpliFF

ブール属性enabledがあり、これに対してfalseまたはtruehttp:// msdn。を設定できます。 Microsoft.com/en-us/library/ms532997%28v=vs.85%29.aspx

例:

-ms-filter: "progid:DXImageTransform.Microsoft.gradient(enabled=false)";
95
el22or

-ms-filterプロパティは非標準のブラウザ固有のCSSエントリであるため、そのパラメーターを引用符で囲む必要があります。したがって、-ms-filter: "none"は正常に機能します。

20
Pink Duck

これを試して:

フィルター:-;

16
browzah

HTML5を使用している場合は、使用のルートをたどることができます。

<!doctype html>
<!--[if lt IE 7 ]> <html lang="en" class="ie6 oldie"> <![endif]-->
<!--[if IE 7 ]>    <html lang="en" class="ie7 oldie"> <![endif]-->
<!--[if IE 8 ]>    <html lang="en" class="ie8 oldie"> <![endif]-->
<!--[if IE 9 ]>    <html lang="en" class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
<html lang="en" class="gtie9 modern">
<!--<![endif]-->

cSSで次のようなものを使用します。

.ie9 .element {filter: none; }
6
John C

enable/disable フィルターを試みましたか?

1
anddoutoi

Display:inline-block(コンテナにwhite-space:nowrapを適用)が最良の方法であることがわかりました。しかし、IE7以下ではうまく動作しないようです

0
max