使用PHP在外部样式表中的分隔符运算符

时间:2010-04-08 12:05:44

标签: php css operators stylesheet

TL; DR:我在外部样式表中使用PHP,但它不能将'/'识别为PHP分隔符操作符,这会弄乱我的CSS。任何帮助表示赞赏

我正在开发一个简单的网站,它可以从数据库中的页面表动态加载菜单项。使用递归算法,我得到所有页面,并将子页面放在正确的位置。

在此功能中,我计算主菜单项的数量。

我这样做是因为我需要在主菜单<li>中设置每个<ul>这样的宽度,使其覆盖菜单栏的整个宽度。我希望这是动态完成的,这样如果将更多页面添加为主菜单项,则不需要更改任何内容,只需插入数据库。

现在我的问题:我正确地阅读here,可以配置Apache,以便将CSS作为PHP文件读取。作为魅力,没有错。现在我有了

<link rel="Stylesheet" type="text/css" href="<?php echo base_url().'css/css-reset.css'.'?item_count='.$menu_count; ?>" />

在我的标题中(如您所见,我将菜单项计数作为post变量传递)。这也有效。我的CSS:

<?php Header ("Content-type: text/css");?>
<?php
$wrapper_width = 900;
$menu_item_count = (int)$_REQUEST['item_count'];
$menu_item_width = $wrapper_width / $menu_item_count;
?>

/*lots more boring CSS */

div#wrapper
{
text-align:left;
width:<?php echo $wrapper_width.'px'; ?>;
}

div#menu a
{
display:block;
height:1.7em;
width:<?php echo $menu_item_width.'px'; ?>;
}

这是一个奇怪的事情出现的地方。如果我将$menu_item_count设置为只是一个int(例如:$menu_item_count=150),它就可以正常工作。但是只要我在两个变量之间使用divider运算符,CSS就会搞砸了。其他运营商的工作。

我看到它的方式,divider运算符对CSS是特殊的(因为注释?)并且它不会将其作为PHP分隔符运算符而是作为CSS符号读取。

我已经尝试将它放在一个函数中,该函数可以正常工作,但是分隔符操作符会再次混淆它。

所以我的问题是:有没有人在外部样式表中使用PHP?如果是这样,你能帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

检查php / css脚本的输出。您可以通过在浏览器中输入脚本的地址来执行此操作,如果您已正确设置apache,则您的php计算结果应该在那里。我的猜测是除法运算符可能会返回一些与css不兼容的十进制数。试试这个:

$menu_item_width = (int)$wrapper_width / $menu_item_count;

答案 1 :(得分:0)

分区符号在PHP中运行,不应该给您带来任何麻烦。我可能会建议使用HEREDOC而不是像那样打开和关闭PHP。它可以使管理更容易。

<?php 
header ("Content-type: text/css");
$wrapper_width = 900;
$menu_item_count = (int)$_REQUEST['item_count'];
$menu_item_width = $wrapper_width / $menu_item_count;

echo <<<EOL
/*lots more boring css */

div#wrapper {
  text-align: left;
  width: $wrapper_width px;
}
EOL;
?>

要解决您的问题,您可以发布该文件的输出吗?

答案 2 :(得分:0)

这就是出错:我将查询字符串添加到了错误的CSS文件中。除法操作员或其他什么都没有错,只是我的愚蠢的头脑不能太长时间盯着我的显示器。