使用CSS nth-child() 选择器(最推荐)
这是最现代、最简洁、最推荐的方法,它通过纯CSS实现,不修改PHP模板文件,逻辑清晰,且性能最好。

核心思想: 利用CSS的nth-child(5n+1)选择器,选择每行的第一个元素(即第1, 6, 11, 16...个元素),然后给它添加一个左边距(margin-left)来模拟空格的效果。
操作步骤:
-
打开你的列表页模板文件 这个文件通常位于
/templets/你的模板目录/ list_栏目ID.htm或者/templets/你的模板目录/ list.htm。 -
找到循环列表项的代码块 找到类似这样的代码,它被
{dede:list}或{dedarclist}标签包裹。
(图片来源网络,侵删){dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:list} -
给循环项添加一个共同的父容器并赋予类名 为了方便CSS选择,最好给
<li>的父级(通常是<ul>)添加一个类名,article-list。<ul class="article-list"> {dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:list} </ul> -
在CSS文件中添加样式 打开你的CSS文件(
/templets/你的模板目录/style.css),添加以下CSS代码:/* 给 article-list 下的每个 li 元素添加一个基础左边距,作为“空格” */ .article-list li { margin-left: 20px; /* 20px 是你想要的空格宽度,可以调整 */ float: left; /* 如果需要横向排列,通常需要浮动 */ width: 200px; /* 设置一个固定宽度,确保每行数量一致 */ /* 其他样式... */ } /* 关键步骤:选择每行的第一个元素,并取消它的左边距 */ .article-list li:nth-child(5n+1) { margin-left: 0; }
代码解释:
.article-list li: 为所有列表项设置一个左边距,这个左边距就充当了“空格”的角色。.article-list li:nth-child(5n+1): 这是CSS3的强大功能。nth-child()选择器匹配其父元素中的第 N 个子元素。5n表示 "5的倍数" (5, 10, 15, ...)。+1表示 "加上1"。5n+1就表示选择第 1, 6, 11, 16, ... 个子元素。- 我们将这些元素的
margin-left设为0,就抵消了之前设置的左边距,从而形成了“五行一空格”的视觉效果。
使用织梦的底层字段 [field:global.autoindex/](备选方案)
如果你对CSS不熟悉,或者你的项目环境比较特殊,可以使用织梦自带的底层变量来实现。

核心思想: 利用 [field:global.autoindex/] 来获取当前文章的序号(从1开始),然后通过 dede:if 条件判断来判断这个序号是否能被5整除,如果能整除,则输出一个空的 <li> 作为占位符。
操作步骤:
-
打开列表页模板文件,找到列表循环部分。
-
修改循环代码,在循环内部加入判断逻辑。
{dede:list pagesize='10'} <!-- 获取当前文章序号 --> [field:global name=autoindex runphp="yes"] $autoid = @me; @me = ''; if($autoid % 5 == 0){ @me = '<li class="empty-space"></li>'; } [/field:global] <!-- 正常的文章列表项 --> <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:list}
代码解释:
[field:global name=autoindex runphp="yes"]: 获取当前文章在列表中的序号,并启用PHP运行。$autoid = @me;: 将序号赋值给变量$autoid。if($autoid % 5 == 0): 判断$autoid是否能被5整除( 是取模运算符)。- 如果能整除(即序号是5, 10, 15...),则
@me被赋值为一个带有特定类名的空<li>。 - 如果不能整除,
@me保持为空。
- 如果能整除(即序号是5, 10, 15...),则
- 正常输出文章列表项
<li>。
-
在CSS中为空
<li>添加样式 在你的CSS文件中,添加以下代码,确保这个占位符<li>不会影响布局,并且有正确的尺寸。.empty-space { width: 200px; /* 必须和正常列表项的宽度一样 */ float: left; /* 必须和正常列表项的浮动方式一样 */ height: 0; /* 高度为0,不占内容高度 */ overflow: hidden; /* 隐藏溢出部分,确保不留痕迹 */ /* 其他可能需要的样式... */ }
使用jQuery实现(不推荐,仅作了解)
这种方法不推荐用于SEO和性能,因为它依赖于JavaScript,在页面加载完成前,布局可能会“跳动”,但作为了解,可以知道有这种方法。
核心思想: 使用jQuery选择器,找到每行的第5个元素,然后在它后面插入一个空的<li>。
操作步骤:
-
在模板中引入jQuery库(通常在
<head>标签内)。<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
-
在列表HTML结构外包裹一个
<div>,方便jQuery选择。<div id="article-container"> <ul class="article-list"> {dede:list pagesize='10'} <li> <a href="[field:arcurl/]">[field:title/]</a> </li> {/dede:list} </ul> </div> -
在页面底部添加jQuery脚本。
<script> $(document).ready(function(){ // 选择 article-list 下的所有 li var items = $('.article-list li'); // 遍历这些 li items.each(function(index){ // index 从 0 开始,所以判断 index+1 是否能被5整除 // (index + 1) % 5 == 0 表示每5个的最后一个 if ((index + 1) % 5 == 0) { // 在当前 li 后面插入一个空的 li $(this).after('<li class="empty-space"></li>'); } }); }); </script> -
CSS样式和方法二中的
.empty-space样式一样。
总结与建议
| 方法 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|
CSS nth-child() |
性能最佳、代码最简洁、逻辑清晰、符合现代Web标准 | 需要了解CSS3选择器 | ⭐⭐⭐⭐⭐ (强烈推荐) |
| 织梦底层字段 | 逻辑直观,不依赖外部技术 | 代码稍显复杂,PHP运行在模板中可能略有性能开销 | ⭐⭐⭐⭐ (备选方案) |
| jQuery | 灵活,可处理更复杂场景 | 依赖JS,可能影响SEO,页面加载有跳动,性能最差 | ⭐ (不推荐) |
对于绝大多数情况,请优先选择 使用CSS nth-child() 选择器,它是最优雅、最专业的解决方案。
