Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据数据库结果更改CSS中的DIV颜色?_Php_Css - Fatal编程技术网

Php 根据数据库结果更改CSS中的DIV颜色?

Php 根据数据库结果更改CSS中的DIV颜色?,php,css,Php,Css,我想根据正在运行的数据库中的一些真/假值来更改DIV的背景色。这可以在CSS中完成吗?或者当涉及到这个问题时,我是被迫使用内联CSS吗 我提出的一个解决方案是,我创建了几个(4-5个)要调用的类,但是这些类除了颜色之外都有相同的CSS规则,这让我觉得这是多余的,是浪费空间 我还研究了一下,似乎可以在CSS中使用PHP变量。但是,出于以下几个原因,我不想在头中创建单独的.css/.php文件来链接。这可能吗 也许我可以用一些代码更好地解释。这是我想要了解的概念,我想知道我是否能够在没有外部样式表的

我想根据正在运行的数据库中的一些真/假值来更改DIV的背景色。这可以在CSS中完成吗?或者当涉及到这个问题时,我是被迫使用内联CSS吗

我提出的一个解决方案是,我创建了几个(4-5个)要调用的类,但是这些类除了颜色之外都有相同的CSS规则,这让我觉得这是多余的,是浪费空间

我还研究了一下,似乎可以在CSS中使用PHP变量。但是,出于以下几个原因,我不想在头中创建单独的.css/.php文件来链接。这可能吗

也许我可以用一些代码更好地解释。这是我想要了解的概念,我想知道我是否能够在没有外部样式表的情况下做到这一点:


部门内容{
背景色:;
边框样式:实心;
边框宽度:2倍;
边框颜色:#000;
利润率:10px 0px;
}

您可以为html元素使用许多类,因此只需要更改“color”类。 这样做内联类是最好的解决方案

<element class="thing red" />

element.thing { general rules }

.red { color:red; }

element.thing{一般规则}
.red{color:red;}
为什么不这样做

div.content {
    border-style:solid;
    border-width:2px;
    border-color: #000;
    margin: 10px 0px;
}
然后根据db结果向div添加一个附加类,例如

<div class="content <?php echo getContentClass($row) ?>"> ... </div>
然后只需将这些CSS类添加到常规样式表中,例如

div.state1 { background-color: red; color: inherit }
这样,所有内容都被清晰地分隔开来,您不必求助于内联样式


编辑:请注意,上面显示的类名没有意义。像红色或黑色这样的类名也没有意义,因为它们与表示相关。尝试使它们与内容相关,例如无效、错误、付费、免费、活动等。

正确,但在这种情况下,只有一个布尔值处于活动状态(TRUE)。永远不会有超过一个布尔值被标记为TRUE,我的数据库结构已经反映了这一点。“else”只是以防万一,但不需要,因为所有的变量都考虑到了,但我把它放在那里以防万一。我知道我可以使用许多类,但我认为可能有更好的方法,因为使用许多具有相同CSS规则的类似乎太多余了。我希望有一个比半冗余CSS类更好的解决方案。对不起。但是你可以在一个整数=P中储存很多布尔值,我经常用很多类来表示我的元素,但我尽量避免重复的规则。嗯,我试试这个。谢谢你的建议,我会回来告诉你结果的。谢谢你的建议!我将试着看看这些建议中哪一个最适合我。我一做完测试就回来!我不得不说,这工作做得很好。非常感谢你!你的所有努力都得到了公认的答案&非常彻底。:)编辑:我忘了提到让有意义的CSS名称与数据库的功能相匹配的注释使它更清晰易懂。好提示!辉煌!辉煌!辉煌!辉煌!
function getContentClass(array $row)
{
    return implode(' ', array_intersect_key(
        array(
            'db_boolean_var1' => 'state1',
            'db_boolean_var2' => 'state2',
            'db_boolean_var3' => 'state3',
            'db_boolean_var4' => 'state4'
        ),
        array_filter($row)
    ));
}
div.state1 { background-color: red; color: inherit }