0

簡単に言うと、display:none!important をオーバーライドする必要があるのは、HTML 要素自体に display:inline が設定されているいくつかの要素です。

これは、IE7 標準モードが設定された IE で機能する必要があります。

詳細については、私のペーストビンのリンクをご覧ください: http://pastebin.com/m06YXwHq 結果: http://cdpn.io/sgrjz

これは、IE9 標準モードの IE9 (および他のすべての最新ブラウザーも) で機能しますが、IE7 標準モードでは機能しません。

どんな助けでも大歓迎です!

4

2 に答える 2

1

正直なところ、純粋な CSS でやりたいことを実行する方法がわかりません。コードを修正して、最初にこの道をたどった山ほどの悪い習慣を取り除く以外に方法はありません。

おそらく既にご存じのとおり、IE7 はこの方法で使用される属性セレクターをサポートしていないため、その面で困惑しています。他の唯一の実行可能な解決策は、要素にクラスを追加し、そのスタイルを設定することです (ただし、それができる場合は、私はあなたがすでにそれをやったと思います)。

それを超えて、Javascript ソリューションを見ています。

新しい CSS 機能のサポートを古い IE に追加するポリフィル スクリプトの 1 つを試すことができます。IE9.jsまたはSelectivizrのいずれか。これら 2 つのスクリプトは一般に、古い IE に CSS セレクターのサポートを追加するのに非常に優れていますが、ここで行っているのは本当のエッジ ケースであり、それらが対処しなくてもまったく驚かないでしょう。ぜひ試してみてください。ただし、奇跡を期待しないでください。

それを考えると、より手動のアプローチの方がうまくいくかもしれません.jQueryまたは同様のライブラリを使用している場合、必要な要素を非常に簡単に選択できるはずであり、そこから作業できます. (jQuery やセレクター エンジンが組み込まれたライブラリを使用していない場合は苦労するでしょうが、IE7 をサポートしている場合は、jQuery をまだ使用していないと聞いて驚かれることでしょう)

しかし、ここから出てくる本当のメッセージは、インライン スタイルと CSS!important修飾子は悪い習慣であり、あなたを苦しめることになるということです。そして、あなたはかなり激しく噛まれました。

于 2013-07-19T13:05:07.543 に答える