.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是否很疯狂?
答案 0 :(得分:5)
默认情况下,大多数Apache安装只会解释实际.php文件中的PHP代码。如果不重新配置Apache(或者正在运行的任何网络服务器),PHP处理器将不会处理其他文件类型,并且它们 - 默认情况下 - 将被呈现给浏览器,无论该文件类型的默认值是什么。 / p>
但是,从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”。
答案 1 :(得分:2)
编辑:改写答案。
可以在CSS文件中运行PHP,条件是:
您的服务器通过PHP管道发送* .CSS文件的请求。
通常这不是一个好主意,因为这会处理所有正常静态的CSS文件,这会导致性能损失。
更好的选择是将* .css文件重命名为PHP,然后将PHP文件链接为CSS文件
答案 2 :(得分: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守护程序/服务以通过PHP解析器运行所有.css
文件。但是,您有通过解析器运行所有.css
文件 - 在大多数情况下会造成不必要的性能损失。
但是,在正常情况下,最好简单地定义样式表,使其足够灵活,以适应您的所有页面。理想情况下,您的样式表“永不”过期,客户“永远”不得不多次下载它们。如果你动态生成样式,我怀疑你错过了这一点。动态生成的规则通常通常嵌入到页面中。
(规则有例外,当然......)
答案 3 :(得分:0)
不,它不是疯了,你只需要给你css文件一个.php
扩展名(而不是.css
),这样你的网络服务器就知道将它作为PHP脚本执行,并添加一些顶部的行,以确保浏览器知道它是CSS而不是HTML或原始文本。这些行将是:
<?php
header('Content-Type: text/css');
?>