2016-09-15 89 views
0

我想在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 –

回答

1

,如果你在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

嗨巴爾馬,很高興你花時間閱讀和解決我的問題。很高興有你! –

0

設置$頂部爲:

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