0

私はCSSの難問を抱えています。

私がこれを行う場合:

<!--[if gte IE 8]> <link href="/ELS_Soulard_Project-web/css/soulard_base_ie_butchery.css" rel="stylesheet" type="text/css" media="screen, projection" /> <![endif]-->

そのコード行は IE 9 の上部に表示され、IE フォントを制御下に置き、背景のグラデーションを提供する css ファイルは読み込まれません。しかし... ページは Firefox と Chrome で見栄えがします。

ステートメントを次のように変更すると:

<!--[if gte IE 8]><!--> blah blah blah <!--<![endif]-->

IE 9 と Chrome では見栄えがします....しかし!Firefox は実際にファイルを読み取ってしまい、独自のフォントを縮小し、行の高さを変更して、見苦しいダブルスペースのように見せてしまいます。IE専用のファイルに行って変更したところ、Firefoxに反映されたので、Firefoxがそれを読んでいることがわかります。

誰かが何が起こっているのかを理解するのを手伝ってくれますか?

これは Glassfish 3.1.2 で実行されています。

4

2 に答える 2

0

2 番目の例では<!-->、条件付きコメント内に追加しました。そうすれば、条件付きコメントは開いたままになりますが、HTML コメントは閉じられ、その間のコードは任意のブラウザーによってレンダリングされます。

このチャンクと比較してください:

<!--[if IE 6]>
<html id="ie6" dir="ltr" lang="de-DE">
<![endif]-->
<!--[if IE 7]>
<html id="ie7" dir="ltr" lang="de-DE">
<![endif]-->
<!--[if IE 8]>
<html id="ie8" dir="ltr" lang="de-DE">
<![endif]-->
<!--[if !(IE 6) | !(IE 7) | !(IE 8)  ]><!-->
<html dir="ltr" lang="de-DE">
<!--<![endif]-->

最後のタグは、いくつかの IE バージョンでは除外されていますが、MS 以外のブラウザーと IE >= 9 には含まれています。

于 2012-10-10T15:23:59.187 に答える
0

ここに問題がありました。facelets を使用していますが、これはテンプレート ファイルに含まれていました。私が気付いていなかったのは、通常適用される条件文が facelets では機能しないということです。サーブレットによって処理されると、「取得」できないものはすべて破棄されるため、すべてのスタイルシートが読み取られます。

フェイスレットで条件ステートメントを使用したい場合は、それらを要素のようなものに入れる必要があります。それは醜くなることができます。

幸いなことに、BalusC という名前のスタッカーが、条件文を処理するためのタグを含む巧妙なライブラリを思い付きました。あらゆる方法であらゆる方法を試し、あらゆる場所を調べて 1 日を過ごした後、最終的に、facelets と条件ステートメントに関するこの問題について言及している 1 つの投稿を見つけました。これは、タグ (およびその他の便利な機能の束) が文書化されている「Omnifaces」プロジェクトの Google コード ページにつながります。

ライブラリはmaven(私が入手した場所)を介して利用できますが、おそらく他の方法でも利用できます。とにかく、投稿を読んでからコードを修正するまで、約30分かかりました。

Facelets と IE 条件ステートメント = 悪いニュースです。

outputText または Omnifaces を使用するか、独自のコンポーネントを記述します。

于 2012-10-10T23:35:21.497 に答える