【问题标题】:How do I set a variable in a PHP page, pass it to a CSS file and assign it to a single CSS attribute?如何在 PHP 页面中设置变量,将其传递给 CSS 文件并将其分配给单个 CSS 属性?
【发布时间】:2011-11-08 09:57:42
【问题描述】:

首先,仅供参考:下面引用的 .php 文件将是 Serindipity 博客的 index.php,这是一个非常复杂的代码和文件。

在我的 index.php 文件中,我想从 URL 中获取查询字符串(如果存在)并将其分配给一个变量(如 variable=self.location.search)。

然后我想将该变量分配给 style.css 文件中单个条目的单个属性,该文件由 Serindipity 用来生成输出页面的众多文件之一调用:

body {
font-size: 10pt;
margin: 1;
background-color: #000000;
font-family: verdana, arial, helvetica, sans-serif;
margin-bottom: 30px;
}

我只想将上面显示的众多条目之一的 background-color 参数更改为该变量的 $ 值(可以是“transparent" 或 null)。

在此过程中,我需要使用逻辑代码来确定是否有查询字符串。

如果是,请设置 background-color=variable。如果没有,请制作 background-color="#000000"

(当然,逻辑必须在CSS文件中执行。)

这可能吗?

谢谢!

【问题讨论】:

  • 您不能动态更改 CSS 文件,但您可以使用 JS 更改元素的样式属性。尝试采用另一种方法。
  • 你能在页面中添加一些javascript吗?
  • 到哪个页面?我认为答案是否定的,因为一个是 PHP 页面,另一个是 CSS 文件。
  • 您应该能够将 Javascript 添加到 PHP 页面,但如果您不确定输出是如何生成的(似乎是这种情况),那么最好不要更改任何内容。
  • 我尝试将 js 添加到 php 页面,但它坏了。 Dreamweaver 给了我每个

标签: php javascript css variables


【解决方案1】:

我不熟悉您提到的引擎(Serindipity),但这应该很简单,只要您被允许创建和编辑自己的 Php 脚本(只要引擎真的不重要)不依赖于style-sheet的名称):

将样式表的文件结尾更改为

.php

并且网络服务器会将其识别为 php 脚本。将 mime-type 设置为 text/css 就像 @Brighty 写的那样

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

并且用户永远不会知道其中的区别(当然,文件结尾为.php 除外)。

如果文件结尾为 .php 的样式表有问题,您始终可以使用 .htaccess 和一些巧妙的正则表达式让用户相信他们看到的是 .css

编辑:另外,如果您有权配置哪些文件/s 将被识别为 php 脚本,您可以将您的服务器设置为也将 .css 识别为 php 文件(其中,据我所知不会有问题,因为 php 只会将遇到的任何纯文本扔给用户)。

【讨论】:

  • 嗯.. 很有趣。并且文件中的所有 CSS 指令是否仍然读取相同,就像它仍然是一个 .css 文件一样?
  • 当然。这样做作为概念证明:创建一个 php 文件,编写 php 开始标签和结束标签(如果需要,在它们之间写一些表达式),然后在结束标签下方(或开始标签上方)写一些文本。
  • 文本(加上表达式的输出,如果你写了的话)将作为纯文本发送给用户(在例如 html 的情况下,它将由用户照常呈现) .
  • @JamesKotak 现在,我知道得到这样的答案是多么令人沮丧,但请理解,我们是在业余时间做这件事的,无论我多么想给你一个信息——深度教程,在这个网站上根本不可能,甚至不合适。因此,在您提出更多问题之前,请尝试转到我链接的教程click here,它实际上非常很有帮助,而且对初学者来说并不容易:)
  • 我一直在查看您之前链接的页面,现在正在学习 PHP!再次感谢。另外,@Dunhamzzz:我很抱歉;我现在明白你在说什么了。我误解了你的意思。我没有考虑马库斯给我的链接。我的错。谢谢你们。
【解决方案2】:

只要确保你的文件是 .php 文件,你就可以像这样在其中使用 PHP:

<?php

$colour1 = isset($variable) ? $variable : '#000';

header("Content-Type: text/css");
?>

body {
    background: <?php echo $colour1; ?>
}

div {
    color: <?php echo $colour1; ?>
}

显然这是相当灵活的! Here's a link 我发现对方法进行了更多扩展。

【讨论】:

  • 感谢您的回复。这是一个 CSS 文件。我在这方面有点卡住了。我必须能够将 background-color 属性的值动态更改为变量,并且仅当变量 =“透明”时。
【解决方案3】:

您不能在 css 文件中设置任何变量,jquery 或 javascript 是使用 css 文件的最佳选择。

或者你将使用内联 css。

【讨论】:

  • 好吧,我可以在 php 文件中设置变量(并执行必要的逻辑来确定变量值是什么)然后在 css 文件中的属性值中使用该变量吗?
  • @JamesKotak 如上所述,只有当变量是“透明”时才想更改背景颜色属性,然后在 php 中分配一个变量,如果变量为真,则设置背景颜色进入带有属性'!important'的内联css,希望你理解
  • 是的,我愿意 - 谢谢。不幸的是,CSS 文件稍后将被构成 Serindipity 博客应用程序的许多复杂文件之一调用,这将覆盖任何内联指令。
【解决方案4】:

您可以通过在一个带有 php 扩展名的文件中混合 css 和 php 代码并将文件的 mime 类型设置为“text/css”来实现此目的。

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

我在 ColdFusion 中做过类似的事情,但从未在 php 中做过,所以我不能保证这会奏效。

【讨论】:

  • 谢谢。这对我不起作用,因为我受 Serindipity 应用程序结构的约束。更改核心结构基本上需要重写代码中最复杂部分的部分内容,不幸的是我完全是 n00b。
  • 不幸的是,这是我知道将条件逻辑放入 css 文件的唯一方法。看起来用 javascript 改变背景颜色是你最好的选择。
  • ...没有办法在 CSS 文件中运行脚本,对吧?
  • 谢谢 Brighty... Marcus Hasson 对这个概念的阐述对我来说有点多。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 2023-01-09
  • 1970-01-01
  • 2013-08-28
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
相关资源
最近更新 更多