発生している問題
前任者から引き継いだウェブサイトが Chrome のみの対応で、これを Edge にも対応させようとしていますが、未解決の問題があり、質問させていただきます。
CSS のカスタムプロパティに url()
を相対パスで指定しましたが、これを別の階層から呼び出したときに取得される絶対パスがブラウザによって異なるため困っています。
具体的には、以下のように ./index.html
のインライン CSS でカスタムプロパティ --icon
を設定し、それを外部 CSS ./css/test.css
で呼び出すという流れになっています。Chrome では ./css/icon.png
が参照されますが、Edge (EdgeHTML) では ./icon.png
が呼ばれてしまいます。
html
1<link rel=”stylesheet” type=”text/css” href=”css/test.css”> 2... 3<p style="--icon: url(icon.png);">見出しです</h1> 4...
css
1p { 2 background-image: var(--icon); 3}
CSS の url()
は相対パスを指定すると当該 CSS をベースURLとして使いますから、Chrome のように ./css/test.css
と同じ階層にある ./css/icon.png
を取ってきてほしいのですが、Edge では ./index.html
をベースURLとして使っているようです。
カスタムプロパティを使わずに CSS を以下のように書けば、Edge でも ./css/icon.png
を探してくれます。Edge ではカスタムプロパティ設定の段階で計算が行われ絶対パスに解決されてしまうのか? あるいは謎の最適化が悪さをしているのか? よくわかりません。
css
1p { 2 background-image: url(icon.png); 3}
どちらの挙動が仕様書に則ったものなのか調べてみましたが、url()
の相対パスが絶対化されるタイミング(指定値→算出値?)とカスタムプロパティを var()
で呼ぶタイミングがどう関連しているのかわかりませんでした。
知りたいこと
Chrome (Chromium) の挙動と Edge (EdgeHTML) の挙動のどちらが仕様書に則っているのか、またどうすれば2つのブラウザで同じ場所を参照できるのか、ご教授いただければ幸いです。
回答1件
あなたの回答
tips
プレビュー