将CSS存储在PHP变量中?

时间:2013-08-14 15:40:58

标签: php css dynamic

我是一个新手php学习者,我正在试验如何动态链接不同的php文件。在试验时,我意识到我可以在我的php文件中创建变量并使我的模板文件回应我需要的html,而无需编辑我的模板文件......

例如: 在about-me.php页面中,我使用

包含了header.php和footer.php
 <?php include ('includes/header.html'); ?>
 <?php include ('includes/footer.html'); ?>

然后我创建一个变量

  $page_title = 'CompanyABC';

并在header.php

中回显
  $page_title = 'South Asia Exact'; 

现在我的问题是我可以对我的内联css执行此操作吗? 例如,我创建了一个变量,它存储了我的所有内联css:

 $page_inlinecss = "#SAEcontentR div#certification_certificate {
    margin:0 auto 0 auto;
    width:580px; 
    height:464px;
     }\n";

然后我在header.php中回声如下:

<style type="text/css">
<?php echo $page_inlinecss; ?>
</style>

我已经尝试了它并且它有效,但我想知道这是正确的方法吗?

6 个答案:

答案 0 :(得分:7)

没有正确的方法来进行内联CSS

您的代码将起作用,它将生成一个有效的页面,它对用户来说看起来绝对正常。但你不应该这样做。

那么,你为什么不这样做呢?

可维护性是您不应该以这种方式处理CSS的主要原因。管理单独的CSS文件要比通过PHP代码选择要更改的CSS规则容易得多。

看起来您存储的数据是静态的,变量的关键是存储可以更改 的数据。在执行脚本期间,网站名称(Company ABC)不太可能发生变化,因此您应将它们包含在静态HTML模板中。

除此之外还有缓存(大多数浏览器缓存.css文件,节省带宽)和可访问性等问题(屏幕阅读器可能不知道如何处理内联样式和放大器)。

您应该如何处理动态样式?

使用PHP和CSS的组合处理动态样式(即基于不同页面加载的信息的样式)的一种方法是在外部文档中定义类样式,然后使用PHP来应用它们

例如,将其放在styles.css

span.greentext { color: #0f0; }

这在您的PHP文件中:

<span class='<?php echo ($someCondition) ? "greentext" : null; ?>'>Some text</span>

或者,如果您有更多样式需要处理:

或者,您可以在条件下加载特定的样式表:

<?php if($someCondition): ?>
    <link rel="stylesheet" href="styles/conditional.css" type="text/css" media="screen">
<?php endif; ?>

希望这会有所帮助,除非必要,否则请不要使用内联CSS或变量。当你需要在5个月后改变网站时,你会感谢你自己。

答案 1 :(得分:1)

你能做到吗?是。 你应该这样做吗? EHH。 (号码有点刺耳......)

最好将CSS文件名存储在php变量中,然后在标题中添加:

<link rel="stylesheet" href="<?php echo $this_page_style_sheet; ?>" />

答案 2 :(得分:1)

在这种情况下没有对错。

您可以将CSS存储在字符串中并根据需要进行回显。或者您甚至可以将其嵌入includes/header.html文件中。这取决于你。

就个人而言,如果它是CSS规则的集合,我会将其保存在自己的CSS文件中,并在需要时回显文件名。

$css_filename = "/path/to/rules.css";
// ... etc etc

<link rel="stylesheet" href="<?php echo $css_filename; ?>">

答案 3 :(得分:1)

这是系统运作方式的美丽和陷阱。你可以这样做,它可以工作,似乎没有任何直接和明显的安全问题。我不知道这是否是PHP的预期用途,但它可以正常工作,如果它适合您的情况,您可以使用它。当使用足够的这些小变通方法时会出现陷阱,最终会出现安全问题,但我不记得CSS曾经被用作攻击的载体。

答案 4 :(得分:1)

您可以这样做以生成动态css

file css.php

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

echo 'p {color:red}';
?>

html(不完整,但应该可以跨浏览器工作)

<link rel="stylesheet" href="css.php" type="text/css" />
<p>This should be red</p>

答案 5 :(得分:0)

一些更严格/更严格的人可能会说正确的CSS不需要变量,yadda yadda。

就我个人而言,如果这样可行,那么这是一种为CS​​S添加一些易用性的聪明方法。我全力以赴。