css-grid使用

2023-10-27

grid

网格布局,flex是一维的,grid是二维的。
和flex一样,grid的概念也有三个,一个是整体的容器,一个是格子,一个是格子中存放的元素(也就是grid子元素);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PSARlw6i-1692416147621)(./images/grid.png)]

概念

容器和项目

在元素上声明 display:grid 或 display:inline-grid 来创建一个网格容器。这个元素的所有直系子元素将成为网格项目。

网格轨道:

grid-template-columns 和 grid-template-rows 属性来定义网格中的行和列。容器内部的水平区域称为行,垂直区域称为列。

网格单元

一个网格单元是在一个网格元素中最小的单位, 从概念上来讲其实它和表格的一个单元格很像。

网格线

划分网格的线,称为"网格线"。应该注意的是,当我们定义网格时,我们定义的是网格轨道,而不是网格线。Grid 会为我们创建编号的网格线来让我们来定位每一个网格元素。
m 列有 m + 1 根垂直的网格线,n 行有 n + 1 跟水平网格线。
一般而言,是从左到右,从上到下,1,2,3 进行编号排序。当然也可以从右到左,从下到上,按照 -1,-2,-3…顺序进行编号排序

使用

  • display: grid
  • display: inline-grid
    理解参考flex;
    当一个父元素使用grid显示,它内部就是grid子元素。

分配item空间大小对于子元素的意义

指定grid的大小,指定的大小是整个元素的所有区域(包括margin);

行列指定

隐式和显示网格

显式网格包含了你在 grid-template-columns 和 grid-template-rows 属性中定义的行和列。如果你在网格定义之外又放了一些东西,或者因为内容的数量而需要的更多网格轨道的时候,网格将会在隐式网格中创建行和列;
假如有多余的网格(也就是上面提到的隐式网格),那么它的行高和列宽可以根据 grid-auto-columns 属性和 grid-auto-rows 属性设置。它们的写法和grid-template-columns 和 grid-template-rows 完全相同。如果不指定这两个属性,浏览器完全根据单元格内容的大小,决定新增网格的列宽和行高

默认排列

默认布局就是常规布局,item由内部元素内容撑开。

grid容器属性

grid-template-rows: 100px 100px 200px;

指定几个就是指定几行,数值指定的行的高度

  • grid-template-rows: repeat(10, 100px); 指定10个100px
  • grid-template-rows: repeat(autofill, 100px); 每列100px,自动填充完毕父元素宽度
  • grid-template-rows: 1fr 1fr 2fr;
    fraction – 分数,就是按比例对父元素进行分配
  • grid-template-rows: repeat(4, 1fr); 平均分为4份
    网格线可以进行命名,命名之后,就可以在原本使用网格线索引的位置直接使用自定义命名的网格线。
  • grid-template-columns: [main-start] 1fr [content-start] 1fr [content-end] 1fr [main-end];
  • grid-template-rows: [main-start] 100px [content-start] 100px [content-end] 100px [main-end];
    可以指定的值:
  • 100px 固定值
  • 1fr 相当比例
  • auto 自动扩充
  • minmax() 最大最小范围
  • auto-fill 列数量、行数量自适应
  • repeat() 重复几个数字 repeat(auto-fill, 100px);

grid-template-columns: 100px 100px 100px;

指定几个就是指定几列,数值指定的是列的长度

grid-auto-rows: 200px

当没有指定行方向的

  • auto 内容撑开

grid-column-gap: 10px

列与列之间单元格的间隔

grid-row-gap: 10px

行与行之间单元格的间隔

grid-template-areas

定义区域,定义完毕后可以在网格元素使用grid-area中引用区域

  grid-template-areas: 'a b c'
                       'a b c'
                       'a b c';

定义单元格区域,匿名区域使用.表示;
区域的命名会影响到网格线,每个区域的起始网格线会自动命名为区域名-start;终止网格线会自动命名为区域名-end

grid-auto-flow

划分网格后,容器的子元素会按照顺序,自动放置在每一个网格

  • row 该关键字指定自动布局算法按照通过逐行填充来排列元素,在必要时增加新行。如果既没有指定 row 也没有 column,则默认为 row。
  • column 该关键字指定自动布局算法通过逐列填充来排列元素,在必要时增加新列。
  • dense 该关键字指定自动布局算法使用一种“稠密”堆积算法,如果后面出现了稍小的元素,则会试图去填充网格中前面留下的空白。这样做会填上稍大元素留下的空白,但同时也可能导致原来出现的次序被打乱。

place-items

  • justify-items 单元格中元素水平方向的对齐方式
  • align-items 单元格中元素垂直方向的对齐方式
  • start | end | center | stretch 上、中、下、拉伸

place-content

指定整个内容区域的排布方式

  • justify-content
  • align-content
  • start | end | center | stretch | space-around | space-between | space-evenly;

指定行列的数据

  • 100px 固定像素
  • 1fr 按比例分配
  • minmax(100px, 1fr) 指定最大最小值
  • auto 由浏览器决定大小,直接将剩余空间占据

grid元素属性

grid-column-start: 1

规定从哪一列开始显示项目,或者跨越多少列

grid-column-end: 3

规定在哪一条列线(column-line)上停止显示项目,或跨越多少列。

grid-row-start: 1

grid-row-end: 3

指定的是网格线,指定元素占据网格范围,网格线索引从1开始;
简写:

  • grid-column: 1 / 3
  • grid-row: 1 / span 2
  • 负数为网格从后往前数的位置

place-self

  • justify-self
  • align-self

注意

子元素内容撑开grid网格

当网格高度或者宽度设置为fr或者auto的时候,当子元素高度或者宽度超过了网格设置,子元素会将网格撑开;

解决方法

  1. 将网格宽度或者高度设置为px、百分比,但是此时不能设置grid-gap,设置之后就会出现子元素内容溢出的问题
  2. 网格中的元素设置overflow: hidden
    • 网格元素设置width: 100%; height: 100%; overflow: hidden之后,如果子元素越界,可以将对应的子元素设置为width: 100%; height: 100%; overflow: auto,这样就可以通过滑动进行子元素全部内容查看

grid-gap设置导致内容溢出

此时要留意gird-template-rows或者gird-template-columns的设置是不是用的百分比或者固定数值,如果是的话,那么设置grid-gap就可能会造成内容溢出,就百分比而言,grid整体长度和宽度是先计算百分比,后叠加grid-gap;此时可以使用fr的形式,这种情况下会刨除grid-gap后再去计算fr,这样就可以避免内容溢出;

grid格子与padding

grid格子分配的是grid元素content内容区的区域,因此如果当子元素超过grid单元格的时候,就会出现滚动条(overflow: auto);而滚动条会紧贴grid格子,可以通过设置padding来分隔开这两部分,看起来会更舒服。

移动端使用grid栅格元素高度为整个grid容器高度

这个要排查一下grid元素是否有设置display: grid,没哟设置改属性,即使设置了grid-template-rows;然后grid栅格元素中设置了height: 100%之后,栅格子元素的高度就会直接为grid元素的高度,而不是栅格的高度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

css-grid使用 的相关文章

  • 如何将两个图像放置在一个div的对角

    如你所见 我不是 CSS 专家 我需要一些帮助来了解如何使用两个图像制作这个 div 如下图所示 托马斯是对的 但还有更好的解决方案 div img class align left src alt description of your
  • 将较新版本的 WebKit 嵌入 Android 应用程序

    我正在使用 Web 技术开发 Android 应用程序 CSS 转换 对于应用程序的功能非常重要 因为它们负责滚动和滑动页面 非常缓慢 根据互联网上找到的信息 CSS 过渡不是硬件加速的 除非进行 3 维转换 我发现很多文章说我应该放置 w
  • CSS3 中均匀间隔的导航链接占据 ul 的整个宽度

    我想创建一个水平导航链接列表 其中导航链接均匀分布并占据封闭容器的整个宽度 ul 导航链接可以有不同的宽度 第一个和最后一个链接应与链接的开头和结尾对齐 ul 分别 意味着链接不居中 如下所示 left side right side li
  • 使用 PHP 将 class="active" 添加到活动页面

    动态标头 CSS 类更改为活动使用 PHP 目录 我想要的班级 li 在活动目录下更改标签 现在 每个指南都向我展示了当您的页面等于它时如何执行此操作 但我想更改 这 li li 取决于我所在的目录 例如 如果说我在 http exampl
  • 使用jquery和css点击按钮后旋转div文本

    我想使用 jquery 和 css 单击按钮后旋转 div 文本 如果用户点击Rotate Left按钮 然后文本在左侧旋转 or用户点击Rotate Right按钮然后文本在右侧旋转 Example div Happy Birthday
  • 可见性的替代方案:折叠在 IE 和 Chrome 上不起作用

    以下页面 table border 1 tr class cccc td one td tr table 仅适用于 Firefox IE 始终显示该行 而 Chrome 隐藏该行但显示其垂直空间 那么 如何仅使用 CSS 完全隐藏一行呢
  • 拖放区缩略图宽度图像大小

    如何更改上传图像的缩略图大小 我在我的javascript中尝试过thumbnailWidth 350 但是这不会增加缩略图大小 而缩略图只是看起来放大了 如何操作图像缩略图大小 HTML section section
  • 仅水平 CSS 视差效果,层数大于 100vw

    如何用水平引导网站仅 CSS 视差效果 要求 仅 CSS 视差 父层必须具有宽度 高度 100vw 100vh 子层的宽度 高度必须 gt 100vw 100vh child layers must visually align 100 w
  • 使用溢出时无法隐藏滚动条:auto

    我有这个CSS div background color red position relative height 414px overflow auto width 902px margin 0px auto 我尝试过overflow y
  • c# 如何生成锦标赛括号 HTML 表

    所以我已经被这个问题困扰了三个星期 但我一生都无法弄清楚 我想做的是使用表格获得这种输出 演示 http www esl world net masters season6 hanover sc2 playoffs rankings htt
  • 响应式导航栏隐藏其下方的元素

    我创建了一个响应式导航栏 但它使下面的元素 Flexslider 插件 消失 在我制作导航栏之前 下面的 Flexslider 可以正常显示 但现在不行 导航栏的 z index 为 2 所以我不知道问题是什么 我应该如何 更改什么才能允许
  • IE7 显示问题:菜单中的表格

    我写了一个菜单样式 在 IE8 FF3 6 GC7 中运行良好 现在的问题是 我的老板希望它甚至可以在 IE7 上运行 我真的很努力地让它在 IE7 上运行 但无法获得相同的外观 menu css a outline none menu m
  • 使用 CSS 的平行四边形导航背景

    我正在尝试创建此导航菜单 绿色突出显示是活动页面 灰色是悬停状态 我可以使用以下 CSS 制作平行四边形 ul nav li a text decoration none padding 4px 10px border radius 3px
  • 从 Bootstrap 中删除字形

    如何从 bootstrap 3 中删除所有字形实例 看起来它已经大量嵌入到 css 文件中了 我正在努力使文件大小尽可能最小 只需简单地克隆引导程序https github com twbs bootstrap sass https git
  • CSS 中的像素与像素密度

    我对 HTML 和 CSS 非常陌生 我突然想到 当决定某个东西是 5px 时 比如说 由于像素的物理尺寸取决于密度 所以 5px 在 100 ppi 的屏幕上看起来肯定比在 300 ppi 的屏幕上看起来更大ppi 这是正确的吗 如果是
  • 删除数据表列中的额外填充

    你好 我创建了 JQuery DataTables 如下所示 所以我的问题是如何删除 图片 列中过多的填充 这就是我初始化表的方式 violators tbl DataTable aoColumnDefs bSortable false a
  • 禁用引导列上的滚动

    我正在尝试禁用引导列上的滚动 这是我的代码 div class container fluid h 100 div class row h 100 div class col 4 h 100 bg dark fixed div div cl
  • 如何设置菜单按钮和菜单项的样式

    我尝试更改菜单按钮中的样式 我可以更改菜单按钮样式 但不能更改其菜单项 无论我尝试什么 菜单按钮内的菜单项都保持不变 menu button fx background color black menu button label fx ba
  • 为什么元素上的负底部边距会降低该元素父元素的高度?

    这可能是由于边距折叠造成的 我知道边距折叠 至少知道它如何影响相邻元素 但我不明白当涉及负边距时它如何在嵌套元素上工作 例如 在此标记和随附的 CSS 中 Markup div class parent div class child Ch
  • CSS 是否有不等于选择器?

    CSS中有类似 不等于 的东西吗 例如 我有以下代码 input 但对于某些输入 我需要将其作废 我想通过将类 reset 添加到输入标签来做到这一点 例如

随机推荐

  • GCC详解-gcc之-Wl选项

    1 介绍 Wl后面的东西是作为参数传递给链接器ld的 比如 gcc Wl aaa bbb ccc 最后会被解释为 ld aaa bbb ccc 2 Wl Map xxx txt 生成map文件 如下会生成map文件mymap txt gcc
  • 算法笔记——差分数组

    差分数组 概念 所谓差分数组就是对数组的相邻元素求差保存到一个新的数组中 这个数组就是差分数组 如下所示 序号 0 1 2 3 4 原数组a 1 5 3 4 3 差分数组d 1 4 2 1 1 作用 用于频繁的区间修改 区间修改是对数组的一
  • 618技术揭秘 - 大促弹窗搭投实践

    背景 618 大促来了 对于业务团队来说 最重要的事情莫过于各种大促营销 如会场 直播带货 频道内营销等等 而弹窗作为一个极其重要的强触达营销工具 通常用来渲染大促氛围 引流主会场 以及通过频道活动来提升频道复访等 因此 如果能将运营的策略
  • SQL N+1问题

    什么是N 1问题 在两个表存在一对一 一对多 多对一 多对多等关联信息时 查询一条数据会衍生N条查询的情况就是N 1问题 比如两个实体类A B A与B数一对多 B与A是多对一 在查询A时 会执行的语句如下 1 从A表查找符合要求的属性 此时
  • notepad 使用方法

    1 notepad 替换以特殊字符开头的行 替换每行 之前的所有字符 包括字符 删除包含特定字符 的行 r n
  • TDD三定律

    定律一 在编写不能通过的单元测试前 不可编写生产代码 定律二 只可编写刚好无法通过的单元测试 不能编译也算不过 定律三 只可编写刚好足以通过当前失败测试的生产代码 测试代码的要素 可读性 可读性 可读性 重要事说三遍 编写测试用例的模式 或
  • 竞赛 基于大数据的社交平台数据爬虫舆情分析可视化系统

    文章目录 0 前言 1 课题背景 2 实现效果 实现功能 可视化统计 web模块界面展示 3 LDA模型 4 情感分析方法 预处理 特征提取 特征选择 分类器选择 实验 5 部分核心代码 6 最后 0 前言 优质竞赛项目系列 今天要分享的是
  • HCIP-IERS 部署企业级路由交换网络 - IS-IS 协议原理与配置

    目录 IS IS 协议原理与配置 ISIS 知识点 前言 场景应用 历史起源 路由计算过程 地址结构 路由器分类 邻居HELLO报文 邻居关系建立 DIS及DIS与DR的类比 链路状态信息的载体 链路状态信息的交互 路由算法 网络分层路由域
  • PTA程序设计类实验辅助教学平台-基础编程题--JAVA--7.10 计算工资

    import java util Scanner public class Main public static void main String args Scanner sc new Scanner System in
  • 【深度学习案例】手写数字项目实现-2.Python模型训练

    深度学习入门教程 手写数字项目实现 2 Python模型训练 4 Python基于Pytorch框架实现模型训练 4 1 训练环境 4 2 定义数据加载器 4 3 定义网络 net py 4 4 定义训练器 trainer py 4 5 模
  • 网络安全——Web目录扫描

    一 Web目录扫描原因 1 发现网站后台管理登录页面 可以尝试发现漏洞 进行爆破 2 寻找未授权页面 有些网站在开发时有一些没有授权的页面 在上线后没有及时清除 可以利用这个弱点进行入侵 3 寻找网站更多隐藏信息 二 Web目录扫描方法 1
  • spring事务-编程式事务控制-代码中控制

    1 启动类加注解 EnableTransactionManagement 如果使用声明式注解 Transactional 则不需要加 2 导致事务回滚只有两种情况 事务内代码抛出异常 transactionStatus setRollbac
  • 【正点原子STM32连载】 第四十五章 FLASH模拟EEPROM实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    第四十五章 FLASH模拟EEPROM实验 STM32本身没有自带EEPROM 但是STM32具有IAP 在应用编程 功能 所以我们可以把它的FLASH当成EEPROM来使用 本章 我们将利用STM32内部的FLASH来实现第三十六章实验类
  • cors跨域和ajax跨域,jQuery ajax和跨域(CORS)和基本身份验证

    我在建议的可能重复的问题中尝试了答案 但他们没有改变结果 jQuery ajax和跨域 CORS 和基本身份验证 我一直在尝试从本地PC上的客户端 测试Chrome和IE 通过ajax POST到远程服务器的API 但没有成功 Ajax返回
  • SQL 计算留存率以7日内留存率为例

    SQL 计算留存率 留存率 目标日中初始日的用户数 初始日的用户数 现已计算7日留存率为例进行SQL代码逻辑梳理 表名 Table 字段 user id log date as date select t1 date t2 gap t2 r
  • Spring Boot 中的 @RefreshScope 注解:原理和使用

    Spring Boot 中的 RefreshScope 注解 原理和使用 什么是 RefreshScope 注解 在微服务架构中 配置管理是一个重要的问题 通常 配置是在应用程序启动时加载并缓存起来的 但是 在某些情况下 需要动态地修改配置
  • QML编程 基础 小白

    QT quick 添加quick模块 QQuickView 视图 用来链接QML和程序 QQuickView viewer Quick视图 viewer setSource QUrl QLatin1String qrc qml qmlvid
  • Linux 内核定时器实验————复习到这

    目录 Linux 时间管理和内核定时器简介 内核时间管理简介 内核定时器简介 Linux 内核短延时函数 硬件原理图分析 实验程序编写 修改设备树文件 定时器驱动程序编写 编写测试APP 运行测试 编译驱动程序和测试APP 运行测试 定时器
  • vs2015自带混淆工具DotFuscator使用方法(超简单)

    首先声明 混淆并不能防反编译工具 只能增加反编译出来的代码阅读难度 把方法和变量名变成无意义的声明如把students换成a b等 混淆前记得先备份下 以免混淆失败造成损失 步骤1 打开vs2015 工具 选择PreEmptive Dotf
  • css-grid使用

    文章目录 grid 概念 容器和项目 网格轨道 网格单元 网格线 使用 分配item空间大小对于子元素的意义 行列指定 隐式和显示网格 默认排列 grid容器属性 grid template rows 100px 100px 200px g