Php Smarty使用CSS创建网格/表格结构,无需额外的HTML

Php Smarty使用CSS创建网格/表格结构,无需额外的HTML,php,smarty,smarty3,Php,Smarty,Smarty3,我有一个HTML格式的基本列表,我想把它转换成3列网格。每个列表项都有固定的左侧浮动宽度,因此理想情况下我希望: <ul> <li>List 1</li> <li>List 2</li> <li>List 3</li> <li class="clear">List 4</li> <li>List 5</li> <

我有一个HTML格式的基本列表,我想把它转换成3列网格。每个列表项都有固定的左侧浮动宽度,因此理想情况下我希望:

<ul>
    <li>List 1</li>
    <li>List 2</li>
    <li>List 3</li>
    <li class="clear">List 4</li>
    <li>List 5</li>
    <li>List 6</li>
    <li class="clear">List 7</li>
    <li>List 8</li>
    <li>List 9</li>
    <li class="clear">List 10</li>
</ul>
  • 清单1
  • 清单2
  • 清单3
  • 清单4
  • 清单5
  • 清单6
  • 清单7
  • 清单8
  • 清单9
  • 清单10
目前,我已经尝试了以下方法:

<ul>
{foreach $submenu.child.items as $row} 
    <li class="{if $row@iteration is div by 4}clear{/if}"><a href="#">{$row.label}</a></li>
{/foreach}
</ul>
    {foreach$submenu.child.items as$row}
  • {/foreach}
正如您在下面看到的,这与第一行不同。例如:

<ul>
    <li>List 1</li>
    <li>List 2</li>
    <li>List 3</li>
    <li class="clear">List 4</li>
    <li>List 5</li>
    <li>List 6</li>
    <li>List 7</li>
    <li class="clear">List 8</li>
    <li>List 9</li>
    <li>List 10</li>
</ul>
  • 清单1
  • 清单2
  • 清单3
  • 清单4
  • 清单5
  • 清单6
  • 清单7
  • 清单8
  • 清单9
  • 清单10
更新: 我唯一能做到这一点的方法就是添加额外的HTML。还有别的办法吗

<ul>
{foreach $submenu.child.items as $row} 
    <li><a href="">{$row.label}</a></li>
    {if $row@iteration % 3 == 0}<li class="clearBoth"></li>{/if}
{/foreach}
</ul>
    {foreach$submenu.child.items as$row}
  • {如果$row@iteration%3==0}
  • {/if} {/foreach}

您是否关心第一个条目是否有“清除”

如果你没有,那么

 {if $row@iteration % 3 == 1}
如果你这样做了,那么你需要

 {if $row@iteration > 1 && $row@iteration % 3 == 1}
(或Smarty中的任何语法)


如果您已经解释了这个问题,也就是说,它与计数有关,而与HTML或Smarty无关,那么它会更有帮助

什么有效?会发生什么?IE中没有发生什么?你期待什么?你可以从我粘贴的HTML输出中看到什么效果,这显示了发生了什么。我希望它能像第一个例子一样工作,非常好,谢谢。我真不敢相信我花了多长时间试图弄明白这一点,我与“0”如此接近,我也将在将来尝试重新表述这个问题。我只是想举尽可能多的例子,让你明白我想做什么。我很感激你这么做,但如果你不知道你想从中得到什么,例子是没有帮助的!你提到IE让我觉得这是CSS或微妙的HTML的问题,在某些浏览器中有效,而在其他浏览器中无效。