新闻中心 网络推广 网站建设 优化推广 首页>新闻>新闻中心

每行都要加一条横线如何写代码来循环输出。

时间:2025-10-12   访问量:0

如图所示,客户出了一个很特殊的设计稿。

每一行都下面都会有一条横线。

然后数据又是通过后台来循环输出的。

这样的设计要循环输出单个数据的时候,就有点麻烦。

同时,虽然一行三个,但是第一个居左,第二个居中,第三个居右。


每行都要加一条横线如何写代码来循环输出。

先看HTML生成:

 {hmcms:list num=10 order='sorting asc,id desc'}          
      <div class="caselist wow fadeIn">
        <a href="[list:link]" target="_blank">
            <div class="case-box"><img src="[list:ico]"></div>
            <div class="desc mt-4">
                <div class="title text-center fs-16 fs-sm-18 mb-2 color333">[list:title]</div>
                <div class="subtitle text-center fs-14 fs-sm-16">[list:subtitle]</div>
            </div>
        </a>
      </div>
       {/hmcms:list}


下面是CSS:

 .case-row {
      border-bottom: 2px solid #e6e6e6;   
      padding:20px 0 10px 0;
    }
    .caselist {
    display: inline-block;   /* 改为 inline-block,使其宽度为内容宽度 */
    width: auto;
    text-align: center;
    margin: 50px 0 10px;     /* 你可以调整上下距离 */
    vertical-align: top;     /* 保证多行垂直对齐 */
    }

    .case-box {
     width: 300px;   
    }

    .case-box img {
       width:300px;
       height: 420px;
      object-fit: cover;
      display: block;
    }
    
    @media(max-width: 768px){
        .caselist { 
        display: block; 
        width: 100%; 
        } 
    }



然后加上JS:

<script>
document.addEventListener('DOMContentLoaded', function () {
  const container = document.querySelector('.case-list-box');
  if (!container) return;
  // 保存原始 items(从模板输出的 .caselist)
  const originalItems = Array.from(container.querySelectorAll('.caselist'));

  function rebuild() {
    const w = window.innerWidth;
    // 决定每行几列(与你的断点一致)
    const perRow = (w < 992) ? 2 : 3;

    // 清空容器并重建 rows
    container.innerHTML = '';
    for (let i = 0; i < originalItems.length; i += perRow) {
      const rowItems = originalItems.slice(i, i + perRow);
      const row = document.createElement('div');
      row.className = 'row case-row';

      // 为每个 item 创建 col 并根据位置设置对齐
      rowItems.forEach((item, idx) => {
        const col = document.createElement('div');

        // 基本的列类(在不同屏宽下控制列宽)
        // 注意:col-lg-4 在大屏时每列三等分;col-6 在窄屏时两列
        col.className = 'col-6 col-md-6 col-lg-4 d-flex';

        // 决定该列内部的水平对齐(使 .caselist 在 col 内左/中/右)
        let alignClass = 'justify-content-center'; // 默认居中
        if (perRow === 2) {
          // 两列模式:都居中
          alignClass = 'justify-content-center';
        } else { // perRow === 3
          if (rowItems.length === 3) {
            // 完整三列:第1 start,第2 center,第3 end
            alignClass = (idx === 0) ? 'justify-content-start' :
                         (idx === 1) ? 'justify-content-center' : 'justify-content-end';
          } else if (rowItems.length === 2) {
            // 大屏最后一行只有两个:我们按 [start, center] 布局(通常比两边留白更协调)
            alignClass = (idx === 0) ? 'justify-content-start' : 'justify-content-center';
          } else {
            // 只有一个元素(最后一行仅1个)——左对齐
            alignClass = 'justify-content-start';
          }
        }

        // 把对齐类加上去
        col.className = col.className + ' ' + alignClass;

        // 把原始 item 节点插入(节点会被移动,不会复制)
        col.appendChild(item);
        row.appendChild(col);
      });

      container.appendChild(row);
    } // end for
  } // end rebuild

  // 初次构建 & resize 监听(防抖)
  rebuild();
  let timer = null;
  window.addEventListener('resize', function () {
    clearTimeout(timer);
    timer = setTimeout(rebuild, 120);
  });
});
</script>


上一篇:二级联动的选择下拉跳转不同的链接

下一篇:没有了!

服务咨询
1对1咨询,专业客服为您解疑答惑
联系销售
15899750475
在线咨询
联系在线客服,为您解答所有的疑问
ARE YOU INTERESTED IN ?
感兴趣吗?

有关我们服务的更多信息,请联系项目经理

15899750475 杨先生