我的html文件有以下代码:
<html>
<head>
<link rel='stylesheet' href='css/style.php' media = "screen"/>
</head>
<body>
<h1 id="foo">My h1 foo element</h1>
</body>
<html>
对于我的php文件:
<?php
header("Content-type: text/css; charset: UTF-8");
$asd = '#0000ff';
?>
h1#foo {
color: <?php echo $asd;?>;
}
我已经遵循了一些教程,这是我能做的最简单的一个,但不知何故,输出不工作的方式应该是。我错过什么了吗?
注:如果我要在css中使用PHP变量,它能是动态的吗?我的意思是,在PHP正文中,我是否可以重写CSS中使用的PHP变量的值,这样输出就会改变?
非常感谢你的帮助!
我可以用^^
使用以下语法:
cssman.php
<?php
ob_clean();
header('Content-Type: text/css');
header('Cache-Control: no-cache, must-revalidate');
error_reporting( 0 );
// These are just to show you can use dynamic values and such:
$type = isset($_GET['type']) ? $_GET['type'] : '';
$theme = isset($_GET['theme']) ? $_GET['theme'] : '';
/** Simply print or echo your css here **/
ob_end_flush();
?>
先尝试输出,手动导航到.php文件。如果根本没有内容,很可能是PHP代码出错了,为了调试,你可以添加错误报告(不要忘记还设置ini_set('display_errors',1),否则错误只会被记录)。
然后添加到你的视图:
视图<style type="text/css">
@import "/Library/Stylesheets/cssman.php?type=cms" screen;
/* any aditional files here aswell */
</style>
你可以这样做
echo"
<style>
h1#foo {
color: ".$asd.";
}
</style>
";
首先,要包含一个php文件,这种语法是绝对错误的:
<link rel='stylesheet' href='css/style.php' media = "screen"/>
要包含一个Css文件,我们使用以下语法:
<link rel='stylesheet' href='css/style.css' media = "screen"/>
和包含一个PHP文件,我们使用:
<?php
include_once "a.php"; // this will include a.php
?>
与其使用PHP来管理CSS,不如考虑使用专门用于此目的的CSS预处理器之一。它还将客户端代码与服务器端技术分离。
http://lesscss.org/
https://learnboost.github.io/stylus/
http://sass-lang.com/
另一种值得考虑的方法是将CSS分解成几个文件。你可以有一个通用文件应用于所有设备上的所有页面,一个包含颜色,另一个管理布局,也许是一些设备特定的。
您发布的代码按预期工作。带有id=foo
的标题变为蓝色。唯一的问题是它没有为css文件使用.css
扩展名。为了解决这个问题,你可以在css文件夹中放入一个.htaccess
,并指示Apache Web服务器使用Php解释器也用于css文件(查看此链接)。
然而,对于从php动态更改它,您的意思是更改值(例如在用户输入或其他事件之后)。但如果我理解得好,你的问题的答案是否定的。
Php只能预处理你的页面,它不能在浏览器从用户加载页面后动态修改你的页面。在成瘾中,使用变量$asd
上面的代码只能在style.php和在代码中使用之前进行更改。
我建议你使用javascript代替,它更容易。使用一些javascript库,比如jQuery,来完成这种工作。