1

我正在将一些 php 添加到 css 文件中,但 php 似乎没有运行,而我只是看到打印了整个 php 代码..

.large {
width: 175px; 
height: 175px;
position: absolute;
border-radius: 100%;
box-shadow: 0 0 0 7px rgba(255, 255, 255, 0.85), 
0 0 7px 7px rgba(0, 0, 0, 0.25), 
inset 0 0 20px 2px rgba(0, 0, 0, 0.25);
background: url('http://www.tahara.es/images/LargeImage/<?php echo $row2[imageLarge]; ?>.jpg') no-repeat;
}

我做错什么了吗?或者在 CSS 中运行 PHP 是不是很疯狂?

4

4 回答 4

5

默认情况下,大多数 Apache 安装只会解释实际 .php 文件中的 PHP 代码。PHP 处理器不会在不重新配置 Apache(或您正在运行的任何网络服务器)的情况下处理其他文件类型,并且默认情况下,它们将呈现给浏览器,就像该文件类型的默认值一样。

但是,通过 PHP,您可以生成任何类型的内容。大多数 PHP 新手在考虑 PHP 将生成什么时都会想到 HTML,但这仅仅是开始:

<?php header('Content-Type:text/css'); ?>
<? /* php code defining $row2 */ ?>
.large {
    width: 175px; 
    height: 175px;
    position: absolute;
    border-radius: 100%;
    box-shadow: 0 0 0 7px rgba(255, 255, 255, 0.85), 
    0 0 7px 7px rgba(0, 0, 0, 0.25), 
    inset 0 0 20px 2px rgba(0, 0, 0, 0.25);
    background: url('http://www.tahara.es/images/LargeImage/<?php echo $row2[imageLarge]; ?>.jpg') no-repeat;
 }

使用这种技术,您可以生成 HTML、JavaScript、CSS、XML、JSON 和其他类型的内容。

现在,当将此服务器生成的 CSS 注入您的网页时,链接标签将如下所示:

<link rel="stylesheet" type="text/css" href="myDynamicCSS.php" />

请注意,扩展名是.php,而不是.css,作为最终产品发送到浏览器的内容是“text/css”。

于 2013-04-15T01:17:55.203 回答
2

是的,您当然可以让 PHP 解析您的 CSS,从而动态生成它。完成此操作的最简单方法是将浏览器指向 PHP 脚本——记住,它并不关心扩展名是什么。它只是更喜欢响应是text/css

在您的 HTML 中:

<link type='text/css' rel='stylesheet' href='/styles/default.php' />

在您的顶部/styles/default.php

header('Content-type: text/css');

您还可以配置您的 HTTP 守护程序/服务以.css通过 PHP 解析器运行所有文件。但是,您必须通过解析器运行所有.css文件——在大多数情况下,这是不必要的性能损失。

但是,在正常情况下,最好将样式表简单地定义为足够灵活以适应所有页面。理想情况下,您的样式表“永不”过期,而客户端“永不”必须多次下载它们。如果您正在动态生成样式,我怀疑您错过了重点。动态生成的规则通常应该嵌入到页面中。

(当然,规则也有例外......)

于 2013-04-15T01:20:42.357 回答
2

编辑:重写答案。

可以在 CSS 文件中运行 PHP,在一种情况下:

您的服务器通过 PHP 管道发送对 *.CSS 文件的请求。

通常这不是一个好主意,因为这将使用 PHP 处理所有通常为静态的 CSS 文件,这是性能损失。

更好的选择是将您的 *.css 文件重命名为 PHP,然后将 PHP 文件链接起来,就好像它是 CSS 文件一样

于 2013-04-15T01:14:03.237 回答
0

不,这并不疯狂,你只需要给你的 css 文件一个.php扩展名(不是.css),这样你的 web 服务器就知道将它作为 PHP 脚本执行,并在顶部添加几行以确保浏览器知道它是CSS 不是 HTML 或原始文本。这些行将是:

<?php

header('Content-Type: text/css');

?>
于 2013-04-15T01:17:00.747 回答