在PHP中将变量应用于DIV类

时间:2014-11-22 20:59:18

标签: php css

我试图制作这个DIV类变量的TOP和LEFT参数。以下是我的代码片段

首先在style.php文件中: -

<?php
header("Content-type:text/css");
$top='100';
$left='200';
?>
.testbox {
     float:left;
     position:absolute;
     top:<?php echo $top; ?>px;
     left:<?php echo $left; ?>px;
     background-size:2000px 2000px;
     background-repeat:no-repeat;
     background-color:#FFFFFF;
     width:50px;
     height:100px;
     border:1px solid #b3bdc2;
     z-index:1;

     }

在我的主脚本(gettrains.php)

        $top='100';
        $left='500';
        echo "<div style='top:$top;left:$left' class='testbox'>
        <p>$answer</p>
        </div>";

我还将以下行放入我的gettrains.php脚本

<link href="style.php" type="text/css" rel="stylesheet" />

我基本上有两个问题:

1)根据style.php,盒子位于100,200而不是100,500 .........我的新变量

2)由于在gettrains.php文件的顶部包含&#34;链接href =&#34; style.php .............等,因此在以前保留重新加载它没有(它的一部分AJAX调用(GET)在包含LINK到style.php之前工作正常

任何帮助表示赞赏。感谢

1 个答案:

答案 0 :(得分:1)

这是一件很奇怪的事情,因为PHP只能生成浏览器收到的初始HTML源代码。您基本上是在说&#34;我需要100/200 100/500&#34;的方框。在CSS规则之间的争斗中,最具体的规则获胜。通常情况下该style="...",但在这种情况下,您没有将px单位添加到内联样式中,因此浏览器会将其拒绝为无意义。

&#34;快速修复&#34;这里只是解决这个问题:echo "<div style='top:${top}px;left:${left}px' class='testbox'>但这里真正的问题是你在同一时间指定两个位置互斥位置,而没有清楚地表明你为什么要进行覆盖。它需要哪个位置? PHP在服务器端运行,因此它无法理解为什么100/500优于100/200(这些数字基于什么?与页面上的JavaScript不同,PHP无法检查什么是好的定位,所以这些只是神奇的数字。)

作为特定元素的简单定位信息,将这些位置生成为自己的命名CSS类更好,例如:

.initial {
  top:  <?php echo $top_override; ?>px;
  left: <?php echo $left_override; ?>px;
}

然后在您生成的HTML中,使用<div class="initial">...以便主CSS应用,但.initial类获胜,设置正确的左值(因为顶部值相同)。然后,一旦浏览器呈现页面,您就必须使用JavaScript进行任何进一步的动态位置更改。