我想动态地将内联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,但是页面加载时间出现了问题。
没有正在使用的课程。
答案 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,并且我尚未确定解决方案。