我试图制作这个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之前工作正常
任何帮助表示赞赏。感谢
答案 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进行任何进一步的动态位置更改。