我有一个无序列表,每行有 3 个项目(而不是默认的 1 个)。现在我想交替行颜色。我该怎么做?
所以基本上我想做这样的事情:
if ($listCount == 1, 2, 3 OR 7, 8, 9 OR 13, 14, 15) {
$alternateRow = "rowOdd";
}
else {
$alternateRow = "rowEven";
}
(我知道这是一个语法错误,只是想解释一下)
我认为模数是可能的,但老实说,我并不真正理解它是如何工作的。
我有一个无序列表,每行有 3 个项目(而不是默认的 1 个)。现在我想交替行颜色。我该怎么做?
所以基本上我想做这样的事情:
if ($listCount == 1, 2, 3 OR 7, 8, 9 OR 13, 14, 15) {
$alternateRow = "rowOdd";
}
else {
$alternateRow = "rowEven";
}
(我知道这是一个语法错误,只是想解释一下)
我认为模数是可能的,但老实说,我并不真正理解它是如何工作的。
确实,模数。你可以测试一下($listCount - 1) % 6 < 3
。
完全用 css 做这件事怎么样? http://css-tricks.com/how-nth-child-works/
由于原始海报在模数上不清楚,我想我会帮助解释它是如何工作的,以便下次出现需要它的东西时可以使用它。模运算符 (%) 通过确定两个操作数之间除法的余数来工作。
取模的规则是:
if left < right: left % right = left
if left > right: left % right = remainder of left / right
例如:
- 1 % 6 = 1 ( 1 < 6 so the answer is 1 )
- 7 % 6 = 1 ( 7/6 = 1 with remainder of 1 )
- 10 % 6 = 4 ( 10/6 = 1 remainder of 4 )
- 6 % 6 = 0 ( 6/6 = 1 with 0 remainder )
因此,在您的情况下,您将获得 123(分别为 1,2,3 % 6),而 4,5,6 % 3 将获得 450。然后 7,8,9 % 6 将再次获得 123,10,11, 12 将再次变为 450,以此类推。所以你的代码会:
// check that list count is less than three but not = 0
// (only true when mod yields 1,2, or 3)
if($listCount % 6 < 3 && $listCount % 6 == 0){
$alternateRow = "rowOdd";
} else {
$alternateRow = "rowEven";
}
int i = 0;
$Value = "rowEven";
while ()
{
while (i < 3)
{
$alternateRow = $value
i++;
}
i = 0;
if ($value == "rowOdd")
$Value = "rowEven";
else
$Value = "rowOdd"
}
或者像这样使用模数:
<?php
$numRecords=9;
for ($i = 0; $i < $numRecords; $i++)
{
$className = "";
if (($i % 3) == 0)
{
$className = "third";
echo "i = " . $i;
}
else
{
$className = "other";
}
}
?>