如何将内联css从一个文件中的函数传递到另一个文件中head标签的函数

时间:2019-04-03 09:18:08

标签: php

我想动态地将内联CSS传递到php文件的head标签,并且我一直试图通过2个函数来实现这一点。

在文件 head.php

<?php include 'process.php'; ?>
<head>
<?php cssInline(); ?>
</head>

在文件 process.php 中。这只是我所期望的概念逻辑。

function cssInline() {
    echo '<style>'.getInlineCss().'</style>';
}

function getInlineCss($css) {
    return $css;
}

将流程放入文件 foot.php 中。设置特定对象时,这是有条件的更改边距的调用。

<?php 
if( isset($player) )
    getInlineCss('body {margin-bottom: 60px;}'); 
?>

预期结果

<head>
<style>body {margin-bottom: 60px;}</style>
</head>

所有这些方法以及许多其他尝试均未产生。我什至尝试了DOMDocument,但是页面加载时间出现了问题。

没有正在使用的课程。

3 个答案:

答案 0 :(得分:0)

因为您要调用函数:

echo '<style>'.getInlineCss().'</style>';

传递一个空参数。

传递的参数(CSS)不会保存在任何地方。

您可以定义一个类并将其保存到类变量中。

您正在编写两个函数。

但是,只有当它们是同一类的类方法时,您所需的功能才有效。

您可以使用单个功能,例如:

function cssInline($css) {
 return '<style>'. $css .'</style>';
}

并通过以下方式致电

<head>
<?php echo cssInline(); ?>
</head>

同样,您应该return而不是echo,就像echo一样,您对功能输出没有任何控制。

您只需调用该函数,就会输出输出。

答案 1 :(得分:0)

您应该将参数传递给cssInline。

function cssInline($cssString) {
    echo '<style>'.getInlineCss($cssString).'</style>';
}

function getInlineCss($css) {
    return $css;
}

答案 2 :(得分:0)

我定义了以下方法,可以根据需要成功处理内联CSS

class DocumentHead
{
    public $cssrules = [];

    public function add($cssrule)
    {
        $this->cssrules[] = htmlentities($cssrule);
    }

    public function getInline()
    {
        $n = "\n";
        return '<style>'.$n.implode($n, $this->cssrules).$n.'</style>';
    }
}

将类设置为变量

$css = new DocumentHead;

将head标记中的CSS条目输出为从其他文件发送的

<head>
<?php echo $css->getInline(); ?>
</head>

从其他文件设置CSS内联规则

$css->add('.footer {color: #111111;}');
$css->add('body {background: #ffcc00; font-family: verdana;}');

结果

<head>
<style>
.footer {color: #111111;}
body {background: #ffcc00; font-family: verdana;}
</style>
</head>

更新:

刚刚意识到,必须在getter实例之前声明css规则设置器,否则输出为null,并且我尚未确定解决方案。