直接链接(不入队)时,CSS中的相对文件路径

时间:2018-04-15 作者:Igid

我正在创建一个单页子主题,在这个主题中(向Wordpress社区致歉),我基本上尽量不使用PHP或Wordpress API,因为我真的只想部署一个具有自己脚本和样式的单页。

我的相对文件路径有问题。我发现,当涉及到PHP页面时,我需要使用get_theme_file_uri() 函数,这在我的PHP主页(page my slug.PHP)中运行良好。(作为旁注,我更愿意使用get_template_directory_uri() 但这是给父主题文件夹。怎么绕过这个?[编辑:此部分已解决])

但是我的CSS文件(如图像)的解决方案是什么?This page 建议我应该能够在那里插入相对链接,但这对我不起作用。

我正在将样式表直接链接到page-my-slug.php, 因为我想完全覆盖父主题样式,不想深入了解排队的细节:

<link rel="stylesheet" type="text/css" href="<?php echo get_stylesheet_directory_uri(); ?>/style.css">
<!-- or, for exactly the same effect... -->
<link rel="stylesheet" type="text/css" href="<?php echo get_theme_file_uri(\'style.css\'); ?>">
在我的style.css 例如,我正在使用:

#ffw {
    background-image: url(images/ffw.png);
}
但是,在加载页面时,我遇到了一个错误:

GET https://domain.com/images/ffw.png 404 ()
这表明它正在根目录中查找,而不是相对于样式表。

我做错了什么?我想知道这是否与我直接链接CSS而不是将其排队有关。。。

3 个回复
SO网友:Jacob Peattie

CSS中的相对路径是相对于样式表文件的。因此,如果你有这种结构:

- style.css
- images/
-- logo.png
-- background.jpg
那么CSS中图像的路径将是url(images/logo.png)url(images/background.jpg). 这是因为CSS中的相对路径是相对于样式表本身的,而不是相对于主域的(如果需要,请以斜杠开始:url(/images/logo.png)).

所有这些都不受您选择将文件排队的方式的影响。

你可能会出错的地方是你提到了一个家长主题。如果您试图从父主题加载图像,那么像上面的示例那样的相对路径将不起作用。CSS对父/子主题关系没有任何知识或概念。

因此,如果目录结构如下所示:

- parent-theme/
-- images/
--- logo.png
- child-theme/
-- style.css
-- images/
--- background.jpg
因此,如果你想进入一个目录,然后进入父目录,你的路径需要url(../parent-theme/images/logo.png).

SO网友:rudtek

您应该使用get_stylesheet_directory_uri(). 此功能与get_template_directory_uri() 但它使用子主题的目录。

例如:

get_template_directory_uri().\'/logos/coollogo.png\';
将从子主题的徽标文件夹中提取徽标。

SO网友:Igid

我想我知道答案是什么。我只是从源代码点击到样式表,发现服务器正在缓存一个我错误编写的旧版本url(/images/logo.png) 最初的刀砍把我带到了根部。

对不起,各位,另一个关于CSS路径的问题归结为一个愚蠢的外围问题。

结束