8

我有一个header.php包含.css文件链接的文件。

当我“包含”header.php到不同文件夹中的另一个 php 文件时,新的 php 文件的.csshrefheader.php不正确。

我应该如何href在我的.css文件中声明header.php它以包含对于 php 文件所在的任何文件夹都是正确的?

4

8 回答 8

16

这是许多大型应用程序在安装时尝试设置“根 URI”常量/变量的原因。

如果您的应用程序位于域/子域的根目录中,则可以工作,但如果不是( )/css/style.css,它将失败/appName/css/style.css

将绝对 URI 与其他配置常量/变量一起存储到“根”脚本文件夹,构建绝对链接变得轻而易举。

define( 'SCRIPT_ROOT', 'http://localhost/yourApplication' );
// ...
echo '<link rel="stylesheet" type="text/css" href="'.SCRIPT_ROOT.'/css/style.css">';
于 2012-09-14T22:52:12.543 回答
9

我可以看到希望为 href 链接生成动态和相对路径的一个原因,那就是如果您在具有不同路径的多个域或站点上运行您的项目。(例如,您的项目可在http://myproject.example.org/http://example.org/myprojecttest/上获得)。如果不是这种情况,我建议直接指定您的 css 包含相对于根文件夹:

<link href="/css/style.css" />

如果这确实适用于您,请尝试以下操作:

在每个需要 header.php 的顶级文档中,添加一个 $ROOT 变量,该变量指示顶级文档相对于根的位置。例如:

$ROOT = './';

或者

$ROOT = '../';

或者

$ROOT = '../../';

现在,在 header.php 文件中,您可以使用:

<link href="<?php echo $ROOT; ?>css/style.css" />

这允许您创建一个 header.php 文件,该文件适用于任何相对路径的任何页面。

完整示例

包含的文件(/path/header.php)

<html><body>
<head>
    <link href="<?php echo $ROOT; ?>css/style.css" />
[...]

文件 1(/path/index.php):

<?php
$ROOT = './';
include 'header.php';
?>    

文件 1(/path/admin/index.php):

<?php
$ROOT = '../';
include '../header.php';
?>    

文件 3(/path/admin/test/magic.php):

<?php
$ROOT = '../../';
include '../../header.php';
?>    
于 2012-12-03T19:17:53.880 回答
7

你有几个选择,我试图在这里收集

基础href

<head>
<base href="http://www.mysite.com/" />
</head>

它的作用是将所有 href 设置为指向特定路径。使用此设置,<link rel='stylesheet' href='css/mycss.css' />即使您的页面位于深处,您也可以使用并成功加载 mycss.css 文件http://www.mysite.com/pages/2012/public/secret_folder/myownphpfile.php

绝对路径

您始终可以使用绝对路径,但稍后更改文件文件夹可能会很痛苦。

<link rel='stylesheet' href='http://www.mysite.com/css/mycss.css' />

定义的拍子

正如@Discomatt 所说,使用 PHP 定义的路径是保持工作正常的一种简单方法。不利的一面;你必须使用 PHP。如果你仍然使用它,没有问题^^

define('CSSDIR', 'http://www.mysite.com/css/);
<link rel='stylesheet' href='<?= CSSDIR ?>mycss.css' />
于 2012-09-17T14:16:17.577 回答
2

看看这个答案以加载相对于当前 js 文件的 css:
https ://stackoverflow.com/a/56580810/4865307

使用这个技巧,您只需调用 c1CssImport() 来包含基于相对 url 的 css 文件:

c1CssImport('./ui.css');
于 2019-06-26T12:21:00.797 回答
1

编写css文件的绝对路径,如:

<link href="http://site.com/css/style.css" />

于 2012-09-14T22:49:23.700 回答
0

像这样:

<link rel="stylesheet" href="/css/style.css" />

第一个/说“转到根目录并从那里查看”。这是一个相对路径。

于 2012-09-14T22:47:15.790 回答
0

根据汤姆的回答,我做了base url一个 PHP的组合define(为了减少打字)。

PHP中的某处:

define("HOST_BASE", "http://example.com/");

然后在头文件中:

<base href="<?php echo HOST_BASE ?>">

基本标签对我来说是新的,我担心兼容性,但它似乎运作良好。在 MDN 上有更多关于它的信息

于 2016-03-05T17:28:26.843 回答
-1

只需定义您的基本 URL 并将其连接到 CSS 或 JavaScript 参考中。

如下定义。

define ('host_address','http://localhost:85/grc/');
define('css', host_address.'styles/');

我已经通过host_addressCSS定义了基本 URL,并如下使用它们。

<link rel="stylesheet" href='.css.'custom.css>
于 2018-03-20T05:49:07.370 回答