首页 > 其他分享 >自适应多列布局

自适应多列布局

时间:2024-09-12 16:14:59浏览次数:13  
标签:flex 元素 布局 适应 宽度 多列 200px

关于多列布局,我们平时开发中,可能会遇到如下需求:
一个父元素中包含 n 个子元素,每一行显示m个子元素,并且根据设备宽度实现自适应布局。
针对这种布局方式,可以使用 CSS Grid 或 CSS Flexbox 来实现:

方案一:使用 CSS Grid 实现自适应列布局

CSS Grid 通过设置 grid-template-columns 为 repeat(auto-fit, minmax(minColumnWidth, 1fr)) 来实现自适应列数。

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自适应列布局</title>
    <style>
        /* 父元素 */
        .container {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); /* 设置最小列宽为200px,列数自适应 */
            gap: 10px; /* 子元素间距 */
        }

        /* 子元素样式 */
        .item {
            background-color: #4CAF50;
            color: white;
            padding: 20px;
            text-align: center;
            font-size: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- n 个子元素 -->
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
    </div>
</body>
</html>

解释:
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));:
auto-fit 会根据父容器的宽度自动适配列数。
minmax(200px, 1fr) 表示每一列的最小宽度为 200px,最大宽度为 1fr(即均分剩余空间)。
gap: 10px; 设置了子元素之间的间距。
当页面宽度减小到无法再容纳多列时,布局会自动适配为更少的列,直至只有一列。

方案二:使用 Flexbox 实现自适应列布局

Flexbox 布局也可以实现类似的自适应列布局,特别是在简单的场景下。

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>自适应列布局 - Flexbox</title>
    <style>
        /* 父元素 */
        .container {
            display: flex;
            flex-wrap: wrap; /* 自动换行 */
            gap: 10px;
        }

        /* 子元素 */
        .item {
            background-color: #2196F3;
            color: white;
            padding: 20px;
            text-align: center;
            font-size: 20px;
            flex: 1 1 200px; /* 子元素最小宽度为200px,最大为自适应 */
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <div class="container">
        <!-- n 个子元素 -->
        <div class="item">1</div>
        <div class="item">2</div>
        <div class="item">3</div>
        <div class="item">4</div>
        <div class="item">5</div>
        <div class="item">6</div>
    </div>
</body>
</html>

flex-wrap: wrap;:让子元素在超出父容器的宽度时自动换行。
flex: 1 1 200px;:
1 1 表示子元素可以按比例缩放。
200px 表示子元素的最小宽度,超过200px时均分剩余空间。

标签:flex,元素,布局,适应,宽度,多列,200px
From: https://www.cnblogs.com/dubayaoyao/p/18410474

相关文章

  • HarmonyOS开发之Swiper页面布局
    在HarmonyOSNEXT中使用Swiper组件进行页面布局时,为了提供更好的用户体验,我们可以实现一些自定义的动画效果以及自定义指示器。以下是两个具体的实现方案:场景一:Swiper页面支持自定义动画要实现Swiper页面支持自定义动画,我们需要设置Swiper组件的属性,并添加相应的事件处理程序来控制......
  • TPAMI 2024 | 点云分割领域自适应的组合语义混合
    CompositionalSemanticMixforDomainAdaptationinPointCloudSegmentation点云分割领域自适应的组合语义混合CristianoSaltori,FabioGalasso,GiuseppeFiameni,NicuSebe,FabioPoiesi,ElisaRicci代码:https://github.com/saltoricristiano/cosmix-uda摘......
  • 移动端web app自适应布局探索与总结
    1、困扰多时的问题在这之前做webapp开发的的时候,在自适应方面一般都是宽度通过百分比,高度以iPhone6跟iPhone5之间的一个平衡值写死,我们的设计稿都是iPhone5的640*1136标准,所以高度一般取个大概值,各种图标的宽高也是取平衡值写死,然后部分样式通过媒体查询来设置,例如背景图的......
  • WPF UNO 测试固定尺寸且水平和垂直对齐设置 Stretch 的元素在容器内的布局行为
    本文将告诉大家我对WPF的自定义布局容器和自定义控件进行的布局行为测试中的一个小点,即测试固定元素的尺寸的情况下或元素尺寸为有限尺寸的情况下,同步设置元素的水平和垂直对齐为Stretch来测试元素在容器内的布局行为,元素分别在容器给元素的布局尺寸大于元素的尺寸和小于元素......
  • 【CSS in Depth 2 精译_028】第五章 网格布局 + 5.1 构建基础网格
    当前内容所在位置(可进入专栏查看其他译好的章节内容)第一章层叠、优先级与继承(已完结)1.1层叠1.2继承1.3特殊值1.4简写属性1.5CSS渐进式增强技术1.6本章小结第二章相对单位(已完结)2.1相对单位的威力2.2em与rem2.3告别像素思维2.4视口的相对单位2.5......
  • C# .netcore NPOI库 实现报表的列自适应删减
    实际需求:业务上的一个需求,数据库表A中的B字段存放的是该条数据的一些标签,标签存在两级【即一级标签和二级标签】,现在要是实现将这些标签统计到报表中,一级标签作为表头,二级标签作为填充值。由于之前的报表每增加一个列都需要去数据库表中增加这个字段名称,然后代码中写统计逻辑,这......
  • Ethereum学习笔记 ---- 使用 Remix 调试功能理解 bytes 在 memory 中的布局
    目录编写合约编译、部署、调用合约调试交易1.调用函数bytesInMemory(),分析bytes的MemoryLayout执行RETUR前的最后一刻,stack快照如下执行完毕时刻的MemoryLayout对MemoryLayout的分析2.调用函数bytesArrayInMemmory(4),分析bytes[]的MemoryLayout执行RETUR前......
  • 震惊!!一男子用尽了各种方式都搜不到这个资源,于是他竟然将手伸向了......!?pyqt pyside
    震惊!!一男子用尽了各种方式都搜不到这个资源,于是他竟然将手伸向了......!?pyqtpyside随窗口自适应、可缩放、拖动QLabel需求场景实现功能和使用1.参数设置2.设置图片3.缩放4.拖动5.小惊喜(裁剪图片)完整使用案例1.使用QtDesigner设计一个简单界面2.引用制......
  • 弹性布局flex
    我们在做web页面,由其是后台的页面的时候,需要菜单栏和右侧内容区域分隔开来,例如如下的功能: 就需要使用flex弹性内容的布局。当我们为父盒子设置为flex后,子元素的float,clear和vertical-align属性将失效在flex布局中,是分为主轴和侧轴两个方向,同样的叫法有:行和列、x轴和y轴默......
  • VSCode 常用快捷键总结:涵盖编辑器操作、文件管理、查找替换、代码格式化、调试、视图
    编辑器操作光标与选择Ctrl+D:匹配当前选中的词汇或行,再次选中可操作。Alt+Click:在多个位置插入光标。Ctrl+Alt+↑/↓:在上下行插入光标。Shift+Alt+I:在选中范围内所有行结束符插入光标。Shift+Alt+(dragmouse):鼠标拖动区域,同时在多个行结束符插入光标。Ct......