显示php css属性的最有效方法

时间:2014-01-12 17:46:42

标签: php css

我很好奇使用动态css属性的正确方法。我有变量,如果包含它们显示在动态css样式表中。

如果我有动态css那么

body {
    background:<?php global $data; echo $data['body_background'];?>;
    background-image:url(<?php global $data; echo $data['body_background_background']; ?>);
}

我以前最好使用if statements,或者如果它为空,则让它回显一个空白的css语句? 例如,如果没有值,则显示

body {
    background:;
    background-image:url();
}

我最好把它包括if statements所以它没有显示任何东西?例如:

if (!empty($data['body_background'])) { 
background:<?php global $data; echo $data['body_background'];?>;
}

最有效的方法是什么?

3 个答案:

答案 0 :(得分:2)

这都是Macaroni code。我的建议是:

  • 如果可能的话,考虑使用一些模板引擎(Smarty,Twig,Moustache,Handlebars等),然后在阅读时看起来会更加清晰。
  • 避免使用全局变量。
  • 如果您仍然需要/需要使用php,请使用其他答案中建议的三元运算符。
  • 如果您的代码在php&gt; = 5.4上运行或者应该启用short_open_tag,那么您可以<?php echo替换<?=
  • 在使用代码之前,使代码显式设置所有属性,以避免出现空值。

答案 1 :(得分:0)

您可以使用ternary operator来简化if声明。

body{
 <?php echo (empty($data['body_background']))?'':'background:'.$data['body_background'].';'; ?>
}

答案 2 :(得分:0)

我有一个建议:实现某种样式表生成器,将变量编译成一个只包含CSS的文件。我无法想象样式变量会改变每个请求的实际情况。

关于代码样式:global是PHP的遗留物4次,不应再使用了。

至于你的具体问题: 使用if语句检查特定数组值是否首先填充。你可以用以下方式完成。

body{
    <?php echo (empty($data['body_background']) ? '' : 'background:' . $data['body_background'] . ';'); ?>
}