それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

CSSのurl/@import の相対パスの扱い

CSSでimport しまくって url で指定した場合の相対パスがわからなくなったので調べた。


結論を言えば、そのファイルからの相対パスになる。

import 地獄・・・

import は便利なんだけど、URLの相対パスを見失いないがち。

import のimport した場合の 相対パス記述
import import された url() の記述で迷った。

import しすぎはパフォーマンス的にもよくないのでやらないのですが、import 大好きっ子がいたので困りました。

実験

takuya@rena:~/Desktop/css_test$ tree -r
.
├── index.html
├── imgs
│   └── red-circle.png
├── css
│   ├── 3.css
│   └── 2.css
└── 1.css

index.html

HTMLファイル:1.cssを取り込む。

import する

<!DOCTYPE html>
<html>
<head>
     <title>CSSテスト</title>
     <link rel="stylesheet" href=“./1.css">
</head>
<body>
<h1>ここはタイトル</h1>
</body>
</html>  

1.css

1.css は 2.cssを読み込む

@import “./css/2.css”

2.css

2.cssは3.css を読み込む

@import “./3.css”

3.css

3.css は 画像を読み込む。

body {
     background-image: url(../imgs/red-circle.png);
}


@import する場合

2.css からみた3.css相対パスになる。HTMLからみた3.cssへの相対パスではない

url( image ) するばあい

url を書いた場合、url記述ファイルから見た相対パスになる。


C言語のincludeマクロや php のinclude やRubyのload/require は、呼び出し元ファイルのCurrent Directoryが相対位置の基準に対し、HTMLでは各ファイルが相対基準になっているようです。