You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何将视频列表调整为每行两列顺序加载展示

两列视频布局实现方案

现有代码已经完成数据拉取和单条视频内容渲染,仅需调整JSX类名、补充容器布局样式即可实现每行2个视频的逐行排列效果,无需改动数据遍历的核心逻辑。

调整JSX结构

给遍历生成的单条视频外层节点添加专属类名,修改后的组件代码如下:

const VideoPage = ({ data }) => {
return (
    <div>
        <Layout>
        <Head title="Videos"/>
            <div className={videoStyles.container}>
                {data.allContentfulVideoEmbed.nodes.map((node) => {
                    return (
                        <div className={videoStyles.videoCard}>
                            <div className={videoStyles.videoWrapper}
                            dangerouslySetInnerHTML={{ __html: node.markdownContent.childMarkdownRemark.html }}
                            />
                            <div className={videoStyles.titles}>
                                <p>{node.title}</p>
                            </div>
                        </div>
                    );
                })}
            </div>
        </Layout>
    </div>
)
}

补充CSS Modules样式

在你引入的videoStyles对应的样式文件中,添加以下布局规则,使用Flex布局实现自动换行、两列排列:

.container {
  display: flex;
  flex-wrap: wrap;
  gap: 24px; /* 控制视频项之间的横向、纵向间距,可根据设计需求调整数值 */
  width: 100%;
}

.videoCard {
  width: calc(50% - 12px);
  box-sizing: border-box;
}

/* 可选:移动端适配,屏幕宽度小于768px时自动切换为单列展示 */
@media (max-width: 768px) {
  .videoCard {
    width: 100%;
  }
}

注意事项

  • 若原有.container类已存在其他样式,仅需补充display: flex、flex-wrap: wrap、gap三个属性即可,无需覆盖已有规则
  • calc(50% - 12px)中的12px为gap值的二分之一,若你调整了gap的间距数值,该数值要同步修改为gap值的一半,保证两列宽度加总间距后刚好撑满容器
  • 若需要兼容极老旧浏览器,可将gap替换为margin写法,gap方案在现代浏览器中已全量支持
  • 原有.videoWrapper、.titles类的样式无需修改,不会影响两列布局效果

内容的提问来源于stack exchange,提问作者kenton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 22:30:57