7

私の CSS には、すべてのテキスト フィールドに適用する必要があるルールがあります (CSS3 セレクターを使用) input[type=text]

jQueryも使用します。Internet Explorer 6 などの一部のブラウザーは、CSS セレクターのフォームをサポートしていません。したがって、私の回避策は、CSS に追加のクラス名を追加することです。

input[type=text], .workaround_classname{
  /* css styling goes here */
}

そして、jQuery を介して CSS クラスを追加します。

$('input[type=text]').addClass('workaround_classname');

問題は、CSS3 セレクターがネイティブにサポートされていない場合にのみ、このルールが呼び出されるようにするにはどうすればよいかということです。

4

6 に答える 6

3

役に立たないCSSスタイルを設定して、スタイルが適用されているかどうかを確認してください。このスタイルが適用されていない要素にのみ回避策クラスを追加してください。

唯一の問題は、使用できる「役に立たない」スタイルを思いつかないことです:-)

于 2009-09-09T11:23:52.683 に答える
2

これには、あなたが話しているようなものが組み込まれているようです:

http://www.w3avenue.com/2009/07/02/detect-support-for-css3-html5-with-modernizr/

于 2009-09-09T11:24:38.830 に答える
1

なぜ持っていないのですか

input.workaround_classname{
  /* css styling goes here */
}

workaround_classname次に、マークアップのすべてのテキスト入力に追加します。

使用できるセレクターは次のとおりです (2 番目のセレクターは、コードを読んでいる他の誰かが何を選択していたのかを理解するのがおそらく最も簡単なセレクターだと思います)

$('input:text')
// or
$('input:text.workaround_classname')
// or
$('input.workaround_classname')

その場合、検出は必要なく、JavaScript に依存してクラス名を追加する必要はありません。

于 2009-09-09T12:01:41.197 に答える
0

javascriptファイルで条件付きコメントを使用することになりました。このようにして、IE6 に対処し、CSS クラスを適用することができました

$(function(){
  //add css class to input[type=text] fields if the selector is not natively supported
    // IE6 hack: Since some CSS selectors are not working, we simulate with class names.
    /*@cc_on@if (@_jscript_version <= 5.6)
    $('input[type=text],input[type=password],input[type=radio],input[type=checkbox]').
        each(function() { $(this).addClass('type_' + this.type); });
    @end@*/

});

このようにして、すべてのフォーム フィールドにクラス名を追加することになります。

.type_text{}
.type_radio{}
.type_checkbox{}
.type_password{}
于 2009-09-09T11:57:43.733 に答える
0

http://www.geocities.com/seanmhall2003/css3/detect.htmlをご覧ください。プロパティごとにこれを行う必要があります。

于 2009-09-09T11:31:29.727 に答える
0

「このブラウザーは CSS3 セレクターをサポートしているか」を簡単に知る方法はありません。できることは、ブラウザとブラウザのバージョンを検出することだけです。

特定の CSS セレクターが .css ファイルで機能するかどうかを検出できないため、Modernizr は役に立ちません。(または、CSS セレクターの特定の CSS プロパティが適用されているかどうかを確認する必要があり、これは本当に醜いです!)

しかし!ここで最も簡単な方法は、広くサポートされていないため、.css ファイルの [attr=] のような CSS 2.1 セレクターを忘れることです。また、それらをサポートしていないブラウザー (Internet Explorer 6 など) 用に記述しなければならない場合、それらを使用することはできません。

だから、みんなのためにクラスを追加してください。コードが理解しやすくなります。そうしないと、常に不要な JavaScript コードを追加することになります。

私はあなたに答えていないことを理解していますが、これは悪いことです!

于 2009-09-09T11:34:49.030 に答える