将PHP代码嵌入CSS文件中

时间:2015-01-02 12:01:15

标签: php css

我们可以将php代码嵌入到css文件中吗?我需要为css属性添加条件。

styles.css的

<?php
 if($suserid == 2) 
 { ?>
   .proverb { border:0px solid blue; margin-left:34px; width:250px !important; margin-top:6px; } <?php
 }
 else
 { ?>
   .proverb { border:0px solid blue; margin-left:0px; } <?php
 }
?>

3 个答案:

答案 0 :(得分:7)

您的请求是不好的做法。不要继续。

虽然这是technically possible,但你应该研究替代方案。 不动态生成CSS文件。它们将由您的浏览器缓存,并且不会传播动态更改。

相反,请创建可以添加到HTML的特殊情况类。你的CSS将成为:

.proverb {
  border: 0px solid blue;
  margin-left: 0px;
}
.proverb.user-2 {
  margin-left: 34px;
  width: 250px !important;
  margin-top: 6px;
}

在您的HTML生成代码中,您可以:

<div class="proverb <?php if($suserid == 2) echo "user-2"; ?>"></div>

如果用户ID为2 ,则会添加user-2,并提供与示例中所需内容相同的结果。

答案 1 :(得分:3)

文件被Web服务器附加到文件类型或文件扩展名的处理程序视为PHP。如果文件被认为是PHP,则内容将作为PHP代码执行。 假设您正在使用apache,可以通过在VirtualHost文件或.htaccess文件中添加以下内容将php处理程序添加到CSS文件中: <Directory "/path/to/your/css/dir"> AddType application/x-httpd-php .css </Directory>

唯一的缺点是将输出mime-type更改为给定目录中所有css文件的text / html。因此,您必须覆盖mime类型,以便浏览器知道您正在发送css而不是html。通过PHP,您可以在每个css文件的第一行使用:<?php header('Content-type: text/css'); ?>

请记住,将处理程序更改为php以获取css文件确实会给服务器带来更多压力,因为每个文件都必须先解析才能发送到输出缓冲区。因此,只需在html输出中添加一个额外的类并相应地调整你的css就更容易也更好,就像@ Rizier123建议的那样。

答案 2 :(得分:2)

这是可能的。

首先,您必须告诉您的Web服务器通过PHP ISAPI模块提供*.css文件,然后您可以嵌入代码。

但这不是一个好习惯,我建议不要这样做。还有更好的解决方案,例如SASS and LESS