我们可以将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
}
?>
答案 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。