【问题标题】:how can I use of a php variable into a .css file如何在 .css 文件中使用 php 变量
【发布时间】:2015-09-21 17:25:43
【问题描述】:

我有一个名为 test.css 的 css 文件,我想在其中使用 $var$var 位于 test.phptest.css 附在 test.php 中。我的结构是这样的:

//test.php

<html>
<head>
<?php $var = 'anything';?>
<link href="test.css" rel="stylesheet" type="text/css" />
</head>
<body></body>
</html>

这是 test.css:

// test.css

.<?php echo $var> { // css property }

目前test.css 不起作用。事实上,我想知道如何将 php 变量用作 css 文件中的类名?

【问题讨论】:

  • 如所写,不可能。 css 不是作为 php 脚本执行的,因此 css 中的任何 php 代码都会发送到客户端并被视为 css 语法错误。您可以让它在服务器上作为 php 执行,但随后它将与生成 &lt;link&gt; 标记的脚本完全分开执行,并且 $var 将在 css 中未定义。
  • 我还为您添加了另一个解决方案。如果您认为这是答案,请为新来者改变您的决定。
  • @MarcB 当我将.css 文件放在头部时,它将缓存在用户浏览器中。但是当我在 head&lt;style&gt;&lt;/style&gt; 之间写我的 css 属性时会发生什么?每个请求会发生什么?优化了吗?
  • 那么您在每个页面上发送相同的 css sn-p 会浪费一点带宽。它会作为页面的一部分被缓存,但由于它在所有页面上都重复,因此会被缓存多次。
  • @MarcB 看,为了防止在 html 页面中解析我的数据,我为我的元素使用动态类名称,并使用 php 创建这些名称,现在在您看来,这是个坏主意吗?

标签: php html css


【解决方案1】:

其实可以的。

第一个解决方案

不要使用 .css 文件扩展名,而是使用 .php

设置变量

<?php

   header("Content-type: text/css; charset: UTF-8"); //look carefully to this line

   $brandColor = "#990000";
   $linkColor  = "#555555";
?>

使用变量

#header {
   background: url("<?php echo $CDNURL; ?>/images/header-bg.png") no-repeat;
}
a {
  color: <?php echo $linkColor; ?>;
}

...

ul#main-nav li a {
  color: <?php echo $linkColor; ?>;
}

第二个和简短的解决方案

创建一个文件并将其命名为 style.php,然后在您的 style.php 中设置您的样式,如下所示

style.php

<style>
.blabla{
   ....
}

#heeeHoo{
   ...
}
</style>

然后将 style.php 包含到您的文件 (test.php) 中,例如

<html>
<head>
    <?php include 'style.php'; ?>
</head>
<body>

</body>
</html>

这是正确的答案。像内联 css 一样思考,但实际上是在外部文件中

【讨论】:

  • 你的想法很棒!为你 +1。
  • includerequireinclude_oncerequire_once ?哪个更优化?
  • 对于您的新问题,请查看此答案:stackoverflow.com/a/3546316/1848929
  • 那么require_once() 在这种情况下是最好的。
  • 你应该 mod_rewrite style.cssstyle.php 虽然恕我直言
【解决方案2】:

您可以在 PHP 文件中使用&lt;style&gt;

//test.php

<html>
<head>
<?php $var = 'anything';?>
</head>
<body>
<style>
<?php echo $var; ?>
</style>
</body>
</html>

样式也可以放在&lt;head&gt;

【讨论】:

  • 那么你必须配置你的服务器来把你的css文件当作PHP文件。
  • @mittmemo 有可能吗?!很难吗?
  • @rjdown 什么? Most browsers don't understand scoped 是什么意思,使用 &lt;style&gt; 是个坏主意?
  • 将 CSS 解析为 PHP 是不明智的。只需在链接中使用 PHP 文件即可。 @stack 我指的是未经编辑的答案stackoverflow.com/revisions/31214136/1 - 但是,是的,使用内联样式通常是一个坏主意,尤其是在文档中途。
  • @stack 我在原始答案中包含了“范围”属性并将其编辑掉。 rjdown 在被编辑之前就看到了。
猜你喜欢
  • 2015-10-02
  • 2010-09-27
  • 2022-01-11
  • 2013-09-12
  • 2021-10-19
  • 1970-01-01
  • 2016-09-13
  • 1970-01-01
  • 2011-08-28
相关资源
最近更新 更多