display:grid网格布局属性说明
网格父级 :display:grid(块级网格)/ inline-grid(行内网格)
注意:当设置网格布局,column、float、clear、vertical-align的属性是无效的。
HTML:
<ul class="ls02 f18 mt50 sysmt30">
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
</ul>CSS:
<style>
.ls02{display:grid;grid-template-columns:580px 285px 285px;grid-template-rows:160px 160px;justify-content:space-between;gap:20px;}
.ls02 li{position:relative;overflow:hidden;}
.ls02 li:first-child{grid-row:span 2;}/*单独设置第一个元素跨两行*/
.ls02 li span{display:block;position:absolute;left:0;bottom:0;width:100%;background:rgba(0,0,0,0.6);color:#fff;white-space:nowrap;text-align:center;overflow:hidden;text-overflow:ellipsis;padding:10px;box-sizing:border-box;}
</style>
HTML:
<ul class="ls03">
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
<li><img src="图片"><span>文字摘要文字</span></a></li>
</ul>CSS:
<style>
.ls03{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(auto-fill,160px);gap:20px;}/*设置列4平分且行高重复160px*/
.ls03 li{overflow:hidden;position:relative;}
.ls03 li span{display:block;position:absolute;left:0;bottom:0;width:100%;background:rgba(0,0,0,0.6);color:#fff;white-space:nowrap;text-align:center;overflow:hidden;text-overflow:ellipsis;padding:10px;box-sizing:border-box;}
</style>
网格父级grid常用属性:
grid-template-columns: 定义每一列的列宽。
grid-template-rows:定义每一行的行高。
column-gap:定义列与列之间的列间距,原属性名为:grid-column-gap。
row-gap:定义行与行之间的行间距,原属性名为:grid-row-gap。
gap:定义列间距和行间距,是column-gap与row-gap的简写形式,原属性名为:grid-gap。
grid-template-areas:定义网格区域名称。
grid-auto-flow:定义单元格排列顺序。
justify-items:定义单元格中内容的水平位置(左中右)。
align-items:定义单元格中内容的垂直位置(上中下)。
place-items: 定义单元格中内容的水平位置和垂直位置,是justify-items和align-items的简写形式。
justify-content:定义容器中整体内容的水平位置(左中右)。
align-content:定义容器中整体内容的垂直位置(上中下)。
place-content:定义容器中整体内容的水平位置和垂直位置,是justify-content和align-content的简写形式。
grid-auto-columns:定义容器中多余网格的列宽。
grid-auto-rows:定义容器中多余网格的行高。
grid-template-areas:通过字符串语法定义网格的区域布局。
grid-template:该属性是 grid-template-columns、grid-template-rows、grid-template-areas 这三个属性的简写形式。
grid:该属性是grid-template-rows、grid-template-columns、grid-template-areas、 grid-auto-rows、grid-auto-columns、grid-auto-flow 这六个属性的简写形式。
HTML结构:<ul class="grid-container">
<li>第一个网格内容</li>
<li>第二个网格内容</li>
<li>第三个网格内容</li>
<li>第四个网格内容</li>
<li>第五个网格内容</li>
<li>第六个网格内容</li>
<li>第七个网格内容</li>
<li>第八个网格内容</li>
</ul>
grid-template-columns:
.grid-container{
display:grid;/*设置grid布局*/
gap:10px 20px;/*行间距均为10 列间距为20*//*固定宽度列*/
grid-template-columns:100px 200px 150px; /* 三列,宽度分别为 100px、200px、150px *//*使用 fr 单位按比例分配剩余空间*/
grid-template-columns:1fr 2fr 1fr; /* 三列,中间列宽度是两侧的两倍 *//*混合固定和灵活宽度*/
grid-template-columns:200px 1fr 1fr; /* 第一列 200px,剩余空间由后两列平分 *//*重复语法 repeat()*/
grid-template-columns:repeat(4,1fr); /* 四列,每列宽度相等 */
grid-template-columns:repeat(3,100px); /* 三列,每列 100px 宽 *//*自适应列数 auto-fill/auto-fit*/
grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); /* 自动填充列,每列至少 200px,最多平均分配 */
grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); /* 类似 auto-fill,但会收缩空白列 *//*自动宽度 auto*/
grid-template-columns:auto 1fr auto; /* 两侧列宽由内容决定,中间列填充剩余空间 *//* 最小 / 最大宽度约束 minmax()*/
grid-template-columns:minmax(150px,300px) 1fr; /* 第一列宽度在 150px~300px 之间,第二列填充剩余空间 *//*命名网格线*/
grid-template-columns:[col1-start] 100px [col1-end col2-start] 200px [col2-end];/*混合多种单位*/
grid-template-columns:150px minmax(200px, 1fr) auto; /* 固定宽度 + 弹性宽度 + 内容自适应 */}
.grid-container li{background:#ccc;}
gird-template-rows:
.grid-container{
display:grid;/*设置grid布局*/
gap:10px 20px;/*行间距均为10 列间距为20*//*固定高度行*/
grid-template-rows: 100px 200px; /* 两行,高度分别为 100px 和 200px *//*比例分配行高*/
grid-template-rows: 1fr 3fr; /* 两行,第二行高度是第一行的三倍 *//*混合固定和灵活高度*/
grid-template-rows: 80px 1fr; /* 第一行 80px,剩余空间由第二行填充 *//*重复语法 repeat()*/
grid-template-rows: repeat(3, 100px); /* 三行,每行 100px 高 */
grid-template-rows: repeat(2, 1fr); /* 两行,高度相等 *//*自适应行高 auto*/
grid-template-rows: auto 1fr; /* 第一行高度由内容决定,第二行填充剩余空间 *//*最小 / 最大高度约束 minmax()*/
grid-template-rows: minmax(100px, auto); /* 行高至少 100px,最大由内容决定 *//*自动填充行 auto-fill/auto-fit*/
grid-template-rows: repeat(auto-fill, minmax(100px, 1fr)); /* 自动创建行,每行至少 100px *//*命名网格线*/
grid-template-rows: [header-start] 80px [header-end content-start] 1fr [content-end];/*多行模板*/
grid-template-rows: 50px auto 50px; /* 顶部栏、内容区、底部栏的典型布局 *//*隐式行高(配合 grid-auto-rows)当内容超出显式定义的行时,使用 grid-auto-rows 定义隐式创建的行高*/
grid-auto-rows: 120px; /* 隐式创建的行高为 120px */}
.grid-container li{background:#ccc;}
gap(row-gap行间距 / column-gap列间距):
/*可用单位px、em/rem、%、vw/vh等*/
.grid-container{
display:grid;/*设置grid布局*/
gap:10px 20px;/*行间距均为10 列间距为20*/column-gap:20px; /* 列间距 20px */
row-gap:10px; /* 行间距 10px */
}
place-items(align-items垂直 / justify-items水平):
.grid-container{
display:grid;/*设置grid布局*//*基础对齐值*/
place-items:start; /* 元素对齐到容器的起始位置 */
place-items:end; /* 元素对齐到容器的结束位置 */
place-items:center; /* 元素在容器中居中对齐 */
place-items:stretch; /* 元素拉伸以填充容器空间(默认值) */align-items:start; /* 项目沿行的起始边缘对齐(顶部)*/
align-items:end; /* 项目沿行的结束边缘对齐(底部)*/
align-items:center; /* 项目在行中居中对齐 */
align-items:stretch; /* 项目拉伸以填充行的高度(默认值) */justify-items:start; /* 项目左对齐(默认值)等同于 justify-items:left; */
justify-items:end; /* 项目右对齐 等同于 justify-items:right;*/
justify-items:center; /* 项目居中对齐 */
justify-items:stretch; /* 项目拉伸以填充单元格宽度 */
justify-items:baseline; /* 项目按文本基线对齐 *//*安全对齐值*/
place-items:safe center; /* 确保内容不溢出容器,必要时回退到 start */
place-items:unsafe center; /* 强制居中,可能导致内容溢出 */align-items:safe center; /* 居中对齐,但如果内容溢出,会自动回退到 start 以防止内容被裁剪 */
align-items:unsafe center; /* 强制居中对齐,即使内容可能溢出容器 */justify-items:safe center; /* 居中对齐,但防止内容溢出 */
justify-items:unsafe center; /* 强制居中,可能导致内容溢出容器 *//*分别设置垂直和水平对齐*/
place-items:center start; /*align-items和justify-items综合写法 垂直居中,水平居左 */
place-items:end stretch; /* 垂直居底,水平拉伸 */}
place-content(justify-content水平 / align-content垂直):
.grid-container{
display:grid;/*设置grid布局*//*水平方向对齐*/
justify-content:start; /* 左对齐(默认值) */
justify-content:end; /* 右对齐 */
justify-content:center; /* 居中对齐 */
justify-content:space-between; /* 项目间均匀分布,首尾贴边 */
justify-content:space-around; /* 项目两侧间隔相等(首尾间距为中间的一半) */
justify-content:space-evenly; /* 所有间隔完全相等 */
justify-content:stretch; /* 拉伸以填充容器宽度(需显式设置列宽) *//*垂直方向对齐*/
align-content:start; /* 顶部对齐(默认值) */
align-content:end; /* 底部对齐 */
align-content:center; /* 居中对齐 */
align-content:space-between; /* 项目间均匀分布,首尾贴边 */
align-content:space-around; /* 项目两侧间隔相等(首尾间距为中间的一半) */
align-content:space-evenly; /* 所有间隔完全相等 */
align-content:stretch; /* 拉伸以填充容器高度(需显式设置行高) *//*place-content 简写属性*/
place-content:center; /* 等价于 align-content:center; justify-content:center; */
place-content:start end; /* 垂直顶部,水平右对齐 */
place-content:space-around stretch; /* 垂直方向间隔相等,水平方向拉伸 */}
grid-auto-columns:
/*可用单位px、em/rem、%、vw/vh等*/
.grid-container{
display:grid;/*设置grid布局*//*
grid-auto-columns 属性用于定义隐式创建的列轨道的尺寸。
当你放置的项目超出了显式定义的列范围时,浏览器会自动创建隐式列,
此时该属性控制这些列的宽度。*/grid-auto-columns:150px; /* 隐式列宽度固定为 150px */
grid-auto-columns:1fr; /* 隐式列宽度平均分配剩余空间 */
grid-auto-columns:auto; /* 隐式列宽度由内容决定 */
grid-auto-columns:minmax(100px, 200px); /* 列宽至少 100px,最大 200px */
grid-auto-columns:minmax(100px, auto); /* 列宽至少 100px,最大由内容决定 */
grid-auto-columns:100px 200px; /* 第一个隐式列 100px,第二个 200px,循环重复 */}
grid-template(grid-template-columns列宽 / grid-template-rows行高 / grid-template-areas区域):
.grid-container{
display:grid;/*设置grid布局*//*grid-template-columns 定义网格的列数量和宽度 */
grid-template-columns:100px 200px 150px; /* 三列,宽度分别为 100px、200px、150px */
grid-template-columns:1fr 2fr 1fr; /* 三列,按 1:2:1 比例分配剩余空间 */
grid-template-columns:repeat(4, 1fr); /* 四列,每列宽度相等 */
grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); /* 自动填充列,每列至少 200px */
grid-template-columns:[col1-start] 100px [col1-end col2-start] 200px; /* 命名列线 *//*grid-template-rows 定义网格的行数量和高度 */
grid-template-rows:80px 1fr 100px; /* 三行,中间行弹性填充 */
grid-template-rows:repeat(3, 100px); /* 三行,每行 100px 高 */
grid-template-rows:minmax(100px, auto); /* 行高至少 100px,最大由内容决定 */
grid-template-rows:[header-start] 80px [header-end content-start] 1fr; /* 命名行线 *//*grid-template-areas 通过字符串定义网格的区域布局 */
grid-template-areas:"header header header" /* 第一行:header 区域跨越三列 */"sidebar main main" /* 第二行:sidebar 占一列,main 占两列 */"footer footer footer"; /* 第三行:footer 区域跨越三列 *//* 将项目放入命名区域
.header { grid-area:header; }
.sidebar { grid-area:sidebar; }
.main { grid-area:main; }
.footer { grid-area:footer; }
.:表示空单元格
连续相同名称:表示区域跨越多个单元格
*//* grid-template 同时定义 grid-template-rows、grid-template-columns 和 grid-template-areas */
/* 基本语法:[行定义] / [列定义] */
grid-template:100px 1fr / 200px 1fr; /* 两行两列,无命名区域 *//* 带命名区域的复杂语法 */
grid-template:[header-start] "header header header" 80px [header-end][content-start] "sidebar main main" 1fr [content-end][footer-start] "footer footer footer" 60px [footer-end]/ 200px 1fr 1fr; /* 列定义在最后 */}
grid:
grid是一个简写属性,用于同时设置 grid-template-rows, grid-template-columns, grid-template-areas, 以及隐式网格的 grid-auto-rows, grid-auto-columns, 和 grid-auto-flow。
.grid-container{
display:grid;/*设置grid布局*/grid:none; /* 默认值 *//* 显式网格:[行定义] / [列定义] */
grid:100px 1fr / 200px 1fr;/* 带命名区域的显式网格 */
grid:"header header" 80px"sidebar main" 1fr"footer footer" 60px/ 200px 1fr;/* 显式 + 隐式网格:[行定义] / [列定义] [自动流] [自动行/列大小] */
grid:100px 1fr / 200px 1fr auto-flow dense 150px;/* 同时继承行和列 */
grid:subgrid / subgrid;/* 基于内容自动调整尺寸 */
grid:min-content max-content / auto 1fr;/* 自动填充的网格 */
grid:auto-flow dense 100px / repeat(auto-fill, minmax(150px, 1fr));
}
相关文章:

display:grid网格布局属性说明
网格父级 :display:grid(块级网格)/ inline-grid(行内网格) 注意:当设置网格布局,column、float、clear、vertical-align的属性是无效的。 HTML: <ul class"ls02 f18 mt50 sysmt30&…...

排序算法之高效排序:快速排序,归并排序,堆排序详解
排序算法之高效排序:快速排序、归并排序、堆排序详解 前言一、快速排序(Quick Sort)1.1 算法原理1.2 代码实现(Python)1.3 性能分析 二、归并排序(Merge Sort)2.1 算法原理2.2 代码实现…...

Java 并发编程归纳总结(可重入锁 | JMM | synchronized 实现原理)
1、锁的可重入 一个不可重入的锁,抢占该锁的方法递归调用自己,或者两个持有该锁的方法之间发生调用,都会发生死锁。以之前实现的显式独占锁为例,在递归调用时会发生死锁: public class MyLock implements Lock {/* 仅…...

基于对抗性后训练的快速文本到音频生成:stable-audio-open-small 模型论文速读
Fast Text-to-Audio Generation with Adversarial Post-Training 论文解析 一、引言与背景 文本到音频系统的局限性:当前文本到音频生成系统性能虽佳,但推理速度慢(需数秒至数分钟),限制了其在创意领域的应用。 研究…...
BUFDS_GTE2,IBUFDS,BUFG缓冲的区别
1、IBUFDS_GTE2 这是 Xilinx FPGA 中专门为 高速收发器(SerDes/GTX/GTH/GTY)参考时钟设计的差分输入缓冲器。 主要功能是将外部的差分时钟信号(如LVDS、LVPECL等)转换为FPGA内部的单端时钟信号,并保证信号的完整性和高…...

ADC深入——SNR、SFDR、ENOB等概念
目录 SNR(Spurious‑Free Dynamic Range 信噪比) ENOB(Effective Number Of Bits 有效位) SFDR(Spurious‑Free Dynamic Range) 感觉SNR和SFDR差不多?看看下图 输入带宽 混叠 带通采样/欠…...
ThinkPad X250电池换电池芯(理论技术储备)
参考:笔记本电池换电芯的经验与心得分享 - 经典ThinkPad专区 - 专门网 换电池芯,需要克服以下问题: 1 拆电池。由于是超声波焊接,拆解比较费力,如果暴力撬,有可能导致电池壳变形... 2 替换电池芯的时候如…...

硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡
硬件厂商的MIB文档详解 | 如何查询OID? | MIB Browser实战指南-优雅草卓伊凡 一、硬件厂商的MIB文档是什么? 1. MIB的本质:设备的”数据字典” MIB(Management Information Base) 是SNMP协议的核心数据库,定义了设备…...

阿里开源通义万相 Wan2.1-VACE,开启视频创作新时代
0.前言 阿里巴巴于2025年5月14日正式开源了其最新的AI视频生成与编辑模型——通义万相Wan2.1-VACE。这一模型是业界功能最全面的视频生成与编辑工具,能够同时支持多种视频生成和编辑任务,包括文生视频、图像参考视频生成、视频重绘、局部编辑、背景延展…...

小学数学题批量生成及检查工具
软件介绍 今天给大家介绍一款近期发现的小工具,它非常实用。 软件特点与出题功能 这款软件体积小巧,不足两兆,具备强大的功能,能够轻松实现批量出题。使用时,只需打开软件,输入最大数和最小数,…...

5.13/14 linux安装centos及一些操作命令随记
一、环境准备 VMware Workstation版本选择建议 CentOS 7 ISO镜像下载指引 虚拟机硬件配置建议(内存/处理器/磁盘空间) 二、系统基础命令 一、环境准备 1.VMware Workstation版本选择建议 版本选择依据 选择VMware Workstation的版本时,…...
OpenCV 背景建模详解:从原理到实战
在计算机视觉领域,背景建模是一项基础且重要的技术,它能够从视频流中分离出前景目标,广泛应用于运动目标检测、视频监控、人机交互等场景。OpenCV 作为计算机视觉领域最受欢迎的开源库之一,提供了多种高效的背景建模算法。本文将深…...
Transformer 模型与注意力机制
目录 Transformer 模型与注意力机制 一、Transformer 模型的诞生背景 二、Transformer 模型的核心架构 (一)编码器(Encoder) (二)解码器(Decoder) 三、注意力机制的深入剖析 …...
卡顿检测与 Choreographer 原理
一、卡顿检测的原理 卡顿的本质是主线程(UI 线程)未能及时完成某帧的渲染任务(超过 16.6ms,以 60Hz 屏幕为例),导致丢帧(Frame Drop)。检测卡顿的核心思路是监控主线程任务的执行时…...

Baklib加速企业AI数据智理转型
Baklib智理AI数据资产 在AI技术深度渗透业务场景的背景下,Baklib通过构建企业级知识中台架构,重塑了数据资产的治理范式。该平台采用智能分类引擎与语义分析模型,将分散在邮件、文档、数据库中的非结构化数据转化为标准化的知识单元…...

基于协同过滤的文学推荐系统设计【源码+文档+部署】
基于协同过滤的文学推荐系统设计 摘要 随着信息技术的飞速发展和文学阅读需求的日益多样化,构建一个高效、精准的文学推荐系统变得尤为重要。本文采用Spring Boot框架,结合协同过滤算法,设计并实现了一个基于用户借阅行为和社交论坛互动的文学…...
在c/c++中,如何使用链表进行插入、删除和遍历功能。
首先,链表由节点组成,每个节点应该包含数据和指向下一个节点的指针。 结构体可以包含数据域和指针域。 比如,假设链表存储整数,那节点的结构体应该有一个int类型的数据和一个指向同样结构体的指针。结构体定义大概是这样的&…...

数据结构与算法——单链表(续)
单链表(续) 查找在指定位置之前插入结点在指定位置之后插入结点删除pos位置的结点删除pos位置之后的结点销毁 查找 遍历:pcur指向头结点,循环,当pucr不为空进入循环,pucr里面指向的数据为要查找的值的时候…...

全面且深度学习c++类和对象(上)
文章目录 过程和对象类的引入,类的定义类的访问限定符及封装类的访问限定符封装 类的实例化类大小内存对齐规则: this指针this特性 过程和对象 C语言面向过程设计,c面向对象设计, 举例:洗衣服 C语言:放衣服…...

开源情报如何成为信息攻防的关键资源
相比于传统情报,开源情报具有情报数量大、情报质量好、情报成本低、情报可用性强等优势。这是开源情报能够成为信息攻防关键资源的主要原因。 海量信息让开源情报具有更大潜力。一是开源情报体量巨大。信息化时代是信息爆炸的时代,网络上发布的各种信息…...

【风控】用户特征画像体系
一、体系架构概述 1.1 核心价值定位 风控特征画像体系是通过多维度数据融合分析,构建客户风险全景视图的智能化工具。其核心价值体现在: 全周期覆盖:贯穿客户生命周期的营销、贷前、贷中、贷后四大场景立体化刻画:整合基础数据…...
Android开发-文本输入
在Android应用开发中,文本输入是用户与应用交互的最常见方式之一。无论是登录界面、搜索框还是表单填写,都需要处理用户的文本输入。本文将介绍如何在Android应用中实现和管理文本输入,包括基本控件的使用、事件监听、输入验证以及一些高级功…...

Unity:场景管理系统 —— SceneManagement 模块
目录 🎬 什么是 Scene(场景)? Unity 项目中的 Scene 通常负责什么? 🌍 一个 Scene 包含哪些元素? Scene 的切换与管理 📁 如何创建与管理 Scenes? 什么是Scene Man…...
elementUI源码学习
学习笔记。 最近在看element的table表格优化,又去看了一下element源码框架。element 的架构是很优秀,通过大量的脚本实现工程化,让组件库的开发者专注于事情本身,比如新加组件,一键生成组件所有文件,并完成…...

SZU 编译原理
总结自 深圳大学《编译原理》课程所学相关知识。 文章目录 文法语法分析自顶向下的语法分析递归下降分析LL(1) 预测分析法FIRST 集合FOLLOW 集合 文法 乔姆斯基形式语言理论: 表达能力:0型文法 > 1型文法 > 2型文法 > 3型文法。 0 型文法&am…...
实时技术方案对比:SSE vs WebSocket vs Long Polling
早期网站仅展示静态内容,而如今我们更期望:实时更新、即时聊天、通知推送和动态仪表盘。 那么要如何实现实时的用户体验呢?三大经典技术各显神通: SSE(Server-Sent Events):轻量级单向数据流WebSocket:双向全双工通信Long Polling(长轮询):传统过渡方案假设目前有三…...

【程序员AI入门:模型】19.开源模型工程化全攻略:从选型部署到高效集成,LangChain与One-API双剑合璧
一、模型选型与验证:精准匹配业务需求 (一)多维度评估体系 通过量化指标权重实现科学选型,示例代码计算模型综合得分: # 评估指标权重与模型得分 requirements {"accuracy": 0.4, "latency": …...
北斗导航 | 基于深度学习的卫星导航数据训练——检测识别故障卫星
深度学习+故障卫星识别 **1. 数据准备与预处理****2. 模型选择与设计****3. 训练策略****4. 模型优化与验证****5. 实时部署与集成****6. 持续学习与更新****示例模型架构(LSTM + Attention)****挑战与解决方案**🥦🥦🥦🥦🥦🥦🥦🥕🥦🥦🥦🥦🥦🥦�…...

ARM Cortex-M3内核详解
目录 一、ARM Cortex-M3内核基本介绍 (一)基本介绍 (二)主要组成部分 (三)调试系统 二、ARM Cortex-M3内核的内核架构 三、ARM Cortex-M3内核的寄存器 四、ARM Cortex-M3内核的存储结构 五、ARM Co…...
基于Unity的简单2D游戏开发
基于Unity的简单2D游戏开发 摘要 本文围绕基于Unity的简单2D游戏开发进行深入探讨,旨在分析其开发过程中的技术架构与实现策略。通过文献综述与市场分析,研究发现,近年来Unity引擎因其优秀的跨平台特性及可视化编程理念,成为2D游戏开发的主要工具。文章首先梳理了游戏开发的…...