在php for循环中操作样式

问题描述:

我想在php for循环中为某些div添加一些样式。对于每个替代迭代,位置样式设置为'left: 0%' or 'left:53.8462%',这似乎正在工作。但我无法弄清楚如何设置顶级风格。对于每个连续的two iterations,顶部样式的值增加342px,而初始值设置为0px。换句话说,对于第一个和第二个循环,top样式值为0px,但在第二次和第三次迭代中,它们的值会增加342px等等。所需的html输出如下所示。在php for循环中操作样式

在下面的代码中,这部分echo ($counter % 6 == 1 ? 'top: 0px;' : 'top: 342px;');需要更改。

<?php $counter = 1; ?> 
<?php for ($i = 0; $i < 4; $i++): ?> 
<div class="card" style="position: absolute; 
    <?php echo ($i%2 ? 'left: 53.8462%;' : 'left: 0%;'); echo ($counter % 6 == 1 ? 'top: 0px;' : 'top: 342px;');?>"> 

    // content // 

    <?php $counter++; ?> 
    <?php endfor; 
?> 

这里是所需的HTML输出:

<div class="card" style="position: absolute; left: 0%; top: 0px;"> 

</div> 

<div class="card" style="position: absolute; left: 53.8462%; top: 0px;"> 

</div> 

<div class="card" style="position: absolute; left: 0%; top: 342px;"> 

</div> 

<div class="card" style="position: absolute; left: 53.8462%; top: 342px;"> 

</div> 

<div class="card" style="position: absolute; left: 0%; top: 684px;"> 

</div> 

<div class="card" style="position: absolute; left: 53.8462%; top: 684px;"> 

</div> 
+0

难道这就是在6次迭代包回到0? – Barmar

+0

如果您在'0'而不是'1'处开始计数,则使用模数通常更容易。 – Barmar

+0

@Barmar,它不应该继续顶部像素高度,但最初的顶部是0 –

,如果你在0开始$counter会更容易些。然后,顶部只是柜台的一半乘以384

而在这种情况下,$counter$i相同,因此不需要两个变量。

<?php for ($i = 0; $i < 4; $i++): ?> 
<div class="card" style="position: absolute; 
    <?php echo ($i%2 ? 'left: 53.8462%;' : 'left: 0%;'); echo 'top: ' . floor($i/2)*384 . 'px;';?>"> 

    // content // 

    <?php endfor; 
?> 
+0

嗨巴尔马,很高兴你花时间阅读和解决我的问题。很高兴有你! –

设置$顶部为:

$top = floor (($i -1)/2) * 342;