1

CSS3 PIE を 2 つの異なる方法で使用するサイトにアクセスすると、1 つのケースで HTC ファイルが見つかりません。以下の問題を説明するために、サンプルのドメイン名とパス名を使用しています。これが起こる原因は何ですか?

http://sampledomain.com/site <-- IE8 では角を丸くレンダリングしません

http://sampledomain.com/site/ <-- 角を丸くします

次の場所にある CSS 角丸ファイル

http://sampledomain.com/site/content/css/pie.htc

サイトにはCSSファイルが含まれています

http://cdn.cdndomain.com/path/to/content/css/rounded-corners.css

CSS:

.rounded-corners
{
    behavior: url(content/css/pie.htc);
}
4

4 に答える 4

5

この質問に関する他の場所でのコメントにもかかわらず、これは実際には IE のバグではありません。相対パスを完全に合理的に処理しています。

この問題が発生する理由は、URL パスに関する限り、2 つの URL (つまり、スラッシュを含むものと含まないもの) が実際には異なるディレクトリにあるためです。

  • http://sampledomain.com/sitesite-- これは、ルート ディレクトリ内のファイル名であるかのように扱われます。

  • http://sampledomain.com/site/-- これはルートのディレクトリであるかのように扱われsite、そのディレクトリにデフォルト ファイルをロードしています。

したがって、ブラウザに関する限り、2 つの URL は異なるディレクトリ パスにあります。したがって、相対パスを指定すると、それぞれの異なるパスに相対的になり、そのうちの 1 つが適切な場所を指していないことは明らかです。画像などの相対パスを持つ他のアイテムがある場合、それらにも同じ問題があり、IE だけでなくすべてのブラウザーで発生します。(したがって、このページには他に多くの相対パスはないと思います)

すでに解決したように、簡単な解決策は、スラッシュで始まる絶対パスに変換することです。これにより、ロード元の URL に関係なく、サイト内の同じ場所からロードされることが保証されます。

しかし、この質問はより大きな問題を示唆しています。適切に動作するサイトでは、これらの両方の URL が有効であることを許可しないでください。スラッシュのない URL は、スラッシュのある URL にリダイレクトする必要があります。スラッシュがあるかどうかに関係なく、同じコンテンツを単純にロードするべきではありません。

両方の URL が同じコンテンツをロードできるようにすることは、サイトの SEO にとって明らかに悪いことです。これは、Google があなたのサイトを同じコンテンツのページが 2 つあると見なすことを意味し、これが Google ランキングのマイナス ポイントとしてカウントされます。

この問題は .htaccess/mod_rewrite を使用して簡単に解決できます。理想的には、元の CSS3Pie の読み込みの問題と同じくらい緊急にこの問題を解決することをお勧めします。

それが役立つことを願っています。

于 2012-10-25T20:44:50.960 に答える
2

は Internet Explorer の非標準 CSS プロパティであるためbehavior、その実装も非標準です (つまり、仕様がありません)。唯一のオプションは、宣言内の URL の値が相対パスではなく絶対パスであることを確認することです。

これにより問題が修正されました:

.rounded-corners
{
    behavior: url(/site/content/css/pie.htc);
}
于 2012-10-25T19:49:28.223 に答える
1

W3Cによると、URL はスタイルシートに関連しています。あなたの場合、cdn。なぜそれが機能しているのかまったくわかりません!

ただし、部分的に機能しているため、別の回答があります。/site URL は、ブラウザーによって Web サイト内のページとして解釈されます。ブラウザーは、末尾に / がないフォルダーであることを認識する方法がありません。つまり、相対パスは、Web サイトのルート フォルダーからの相対パスになります。これを修正する最も簡単な方法は、URL を /site/content/css/pie.htc に変更することです。

于 2012-10-25T19:46:53.800 に答える
0

標準の CSS プロパティでは、相対 URL は CSS ドキュメントに対して相対的です。

URI は、一重引用符または二重引用符で囲むことができます。相対 URI が許可されており、スタイルシートの URL に対して相対的です (Web ページの URL に対してではありません)。

ただし、behaviorこれは独自の IE プロパティであり、URL はシートが参照されている HTML ファイルに関連しているため、確実に動作させる簡単な方法は絶対パスを使用することです。

それでも相対パスを使用したい場合は、URL の書き換えを使用する.htcか、考えられるすべてのパスでファイルのコピーを作成するか、サーバー側で他のハックを作成して.htc、任意のパスからファイルを提供できるようにすることができます (たとえば、 MVC ファイルのすべての要求を処理するルートを追加.htcし、適切な場所から要求を処理するコントローラーを使用できます)。これらのソリューションはすべてハックされているため、アプリがルートまたは任意の仮想フォルダーの両方に存在できる場合を除き、絶対パスを好みます。

于 2015-11-01T23:50:53.183 に答える