可以通过PHP实现内联动态CSS


Inline dynamic CSS possible via PHP?

我希望动态生成一些内联CSS,并想知道是否可以通过PHP实现。

基本上,我通过查询字符串传递多个变量,并对值进行一些运算,为CSS创建值。以下是我的页面:

<?php
$var1 = "var1";
$var2 = "var2";
$divided_amount = $var1/$var1;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Derp</title>
</head>
        <div style="height: <?php echo $divided_amount ?>px;">
Dynamic height content here
        </div>
</body>
</html>

这对我来说是行不通的,如果可能的话,我真的尽量避免使用外部样式表。

非常感谢任何帮助/见解!

您正在用相同的变量($var1)划分$var1。假设你实际使用的是数字而不是字符串,那么结果总是1。这意味着您的div元素将始终为1px高。

其次,您应该ceil()floor()您的结果,只是为了确保您没有使用浮点设置像素高度。

记住要验证你的HTML——这会证明有些地方出了问题。

下面是一个工作示例:

<?php
$var1 = "111";
$var2 = "7";
$divided_amount = floor($var1/$var2);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Derp</title>
    </head>
    <body>
        <div style="height: <?php echo $divided_amount ?>px; background-color: #F2F;">
Dynamic height content here
        </div>
    </body>
</html>

这应该不会有任何问题。

一些需要注意的事项:

  • 你在划分字符串,而不是数字
  • 您的html示例没有打开的body标记
  • 您可以将结果强制转换为int,以确保它是一个有效的数字

我认为像素宽度不能有小数,如果你用小数(很可能)从除法中返回一个值,那么你应该四舍五入这个数字。那我看不出有什么理由不起作用。