代码之家  ›  专栏  ›  技术社区  ›  user982124

PHP-在foreach中动态设置CSS类

  •  -1
  • user982124  · 技术社区  · 8 年前

    我正在生成一系列链接,带有CSS应用的相关颜色栏。有5种阴影会降低不透明度,从100开始,向下以20为增量。如果我有10行,它会像这样:

    <a href="link.php">
      <span class="linkcolour"></span>
      <span class="linkText">Heading 100</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o80"></span>
      <span class="linkText">Heading 80</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o60"></span>
      <span class="linkText">Heading 60</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o40"></span>
      <span class="linkText ">Heading 40</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o20"></span>
      <span class="linkText">Heading 20</span>
    </a>
    <a href="link.php">
      <span class="linkcolour"></span>
      <span class="linkText">Heading 100</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o80"></span>
      <span class="linkText">Heading 80</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o60"></span>
      <span class="linkText">Heading 60</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o40"></span>
      <span class="linkText ">Heading 40</span>
    </a>
    <a href="link.php">
      <span class="linkcolour o20"></span>
      <span class="linkText">Heading 20</span>
    </a>

    我试图想出一种动态设置LinkColor类属性的方法,这样第一个项目设置为“LinkColor”,第二个项目设置为“LinkColor o80”,3d设置为“LinkColor o60”,等等。在5项之后,它再次开始,并根据需要重复。以下是我的foreach循环结构:

    <?php
    foreach($linkItems as $item) {
        $linkItem = $item->getField('Link');
        $linkColour = '';   
        ?>
    
        <a href="link.php">
            <span class="<?php echo $linkColour; ?>"></span>
           <span class="linkText"><?php echo $linkItem; ?></span>
         </a>
    <?php
    } // foreach $linkItems
    ?>
    

    $linkColour 变量,所以它遵循上述模式?

    3 回复  |  直到 8 年前
        1
  •  2
  •   deepanshu223    8 年前

    你可以用多种方法来解决这个问题。 例如,您可以在一个数组中声明可用的CSS类并对其进行循环。修改示例后,可以使用以下内容

    <?php
    $linkColourArray = ["","o80","o60","o40","o20"];
    $count = 0;
    foreach($linkItems as $item) {
        $linkItem = $item->getField('Link');
        $colourIndex = $count%5;
        $linkColour = $linkColourArray[$colourIndex]; 
        $count++;
        ?>
    
        <a href="link.php">
            <span class="linkcolour <?php echo $linkColour; ?>"></span>
           <span class="linkText"><?php echo $linkItem; ?></span>
         </a>
    <?php
    } // foreach $linkItems
    ?>
    
        2
  •  0
  •   Esteban    8 年前

    % 给出除法余数的运算符:

    $i = 0;
    
    for ($linkItems as $item) {
            $linkColour = 'linkcolour';
            $mod = $i % 5;
            if ($mod != 0) {
                    $linkColour .= ' o'.(100 - (20 * $mod)) ;
            }
    
            echo $linkColour."\n";
            $i++;
    }
    

    例如:

    • 3 % 5 -> 3 3 / 5 = 0 * 5 + 3
    • 6 % 5 -> 1 ,因为: 6 / 5 = 1 * 5 + 1

    那么如果你有 0 您正处于5的倍数的迭代中,因此不应用该类。

    否则,您可以将余数乘以20,然后将其减至100,以更正类。

    • 1 % 5 = 1 -> class would be 100 - 1 * 20 = 80
    • 2 % 5 = 2 -> class would be 100 - 2 * 20 = 60
    • ...
    • 5 % 5 = 0 -> do not add class

    等等等等

    输出:

    linkcolour
    linkcolour o80
    linkcolour o60
    linkcolour o40
    linkcolour o20
    linkcolour
    linkcolour o80
    linkcolour o60
    ...
    
        3
  •  0
  •   Dinesh Kumar    8 年前

    制作一个数组,只需遍历该数组即可获得如下值

    <?php
    
    $arraycolor = array('linkcolour','linkcolour o80','linkcolour o60','linkcolour o40','linkcolour o20');
    
    $link = array('1','2','3','4','5','6','7','8','9','10');
    
    $i=0;
    foreach($link as $v)
    {
    
    ?>
    <a href="link.php">
            <span class="<?php echo $arraycolor[$i] ?>"></span>
           <span class="linkText"><?php echo $arraycolor[$i] ?></span>
         </a>
    <br/>
    <?php
        $i++;
        if($i==count($arraycolor))
        { 
            $i=0;
        }
    
    }
    ?>
    

    输出:

    linkcolour 
    linkcolour o80 
    linkcolour o60 
    linkcolour o40 
    linkcolour o20 
    linkcolour 
    linkcolour o80 
    linkcolour o60 
    linkcolour o40 
    linkcolour o20 
    
    推荐文章