我有一个header.php
包含.css
文件链接的文件。
当我“包含”header.php
到不同文件夹中的另一个 php 文件时,新的 php 文件的.css
hrefheader.php
不正确。
我应该如何href
在我的.css
文件中声明header.php
它以包含对于 php 文件所在的任何文件夹都是正确的?
这是许多大型应用程序在安装时尝试设置“根 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">';
我可以看到希望为 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';
?>
你有几个选择,我试图在这里收集
基础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' />
看看这个答案以加载相对于当前 js 文件的 css:
https ://stackoverflow.com/a/56580810/4865307
使用这个技巧,您只需调用 c1CssImport() 来包含基于相对 url 的 css 文件:
c1CssImport('./ui.css');
编写css文件的绝对路径,如:
<link href="http://site.com/css/style.css" />
像这样:
<link rel="stylesheet" href="/css/style.css" />
第一个/
说“转到根目录并从那里查看”。这是一个相对路径。
只需定义您的基本 URL 并将其连接到 CSS 或 JavaScript 参考中。
如下定义。
define ('host_address','http://localhost:85/grc/');
define('css', host_address.'styles/');
我已经通过host_address和CSS定义了基本 URL,并如下使用它们。
<link rel="stylesheet" href='.css.'custom.css>