css 每个LI的备用类

6ojccjat  于 2023-02-10  发布在  其他
关注(0)|答案(4)|浏览(140)

我正试着给每一个LI上一节交替的课。

<li class="odd">
text
</li>
<li class="even">
text
</li>
<li class="odd">
text
</li>
<li class="even">
text
</li>

这是我的代码:

<ul>
 <?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
 <?php if($extraField->value): ?>
  <li class="<?php echo ($key%2) ? "odd" : "even"; ?> type<?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
Text here
  </li>
 <?php endif; ?>
 <?php endforeach; ?>
</ul>

有人能帮忙吗...谢谢

5rgfhyps

5rgfhyps1#

尝试:

<?php $count = 0; // need to set first value
<?php foreach ($this->item->extra_fields as $key=>$extraField): ?>
   <?php if($extraField->value): ?>
      <li class="<?php echo (++$count % 2) ? "odd" : "even"; ?> type <?php echo ucfirst($extraField->type); ?> group<?php echo $extraField->group; ?>">
         Text here
      </li>
   <?php endif; ?>
<?php endforeach; ?>

Link to pre/post increment docs if needed

93ze6v8z

93ze6v8z2#

我会这样做...这是关键的独立,你最好看看什么样的李类将是什么样子。

<ul>
 <?php 
    foreach ($this->item->extra_fields as $key=>$extraField) {
       if($extraField->value) {
          $toggle = ($toggle=="odd"?"even":"odd");
          echo '<li class="',$toggle,' type',ucfirst($extraField->type),' group', $extraField->group,'">';
          echo 'Text here';
          echo '</li>';
       }
   } 
  ?>
</ul>
li9yvcax

li9yvcax3#

jQuery可以很容易地做到这一点,如果这是一个选项,它的:odd:even选择器应该做什么,你正在寻找没有太多的麻烦。

eanckbw9

eanckbw94#

我知道这是旧的,但我谦虚地提出一个更清洁的解决方案:

<ul>
    <?php
        $odd = true;
        foreach ( $this->item->extra_fields as $key => $extraField ) {
            
            // Output template.
            $template = '<li class="%1$s">%2$s</li>';

            // Create our classes.
            $classes = [
                ( $odd ) ? 'odd' : 'even',
                'type' . ucfirst($extraField->type),
                'group' . $extraField->group
            ];

            // Create our class string.
            $class_string = implode( ' ', $classes );

            // Print our content out.
            printf( $template, $class_string, 'Text here' );

            // Flip the classname for next time.
            $odd = ! $odd;
        }
    ?>
</ul>

当然,通过使用更少的变量,它还可以更干净。这正是我的风格。

相关问题