在 CSS Grid 中为网格间隙设置不同的长度

2024-04-17

我正在使用 CSS 网格创建布局,并且希望每行之间有不同的空间。

我可以通过在每个元素上使用边距来很好地创建布局,但这种方式掩盖了代码的简单性。有什么网格技巧可以实现这一点吗?grid-row-gap似乎只采用一个值,该值用于所有行。

我想要实现的是这样的布局:

https://jsfiddle.net/8swzgk0b/1/ https://jsfiddle.net/8swzgk0b/1/

.grid {
  display: grid;
  grid-template-columns: auto 25% 25%;
  grid-template-rows: auto auto auto;
  width 100%;
  margin: 20px;
  grid-column-gap: 40px;
  /* grid-row-gap: 40px 60px; */
}

div {
  background: #838383;
  height: 80px;
}

.wide {
  grid-column: 1 / span 3;
  margin-bottom: 5px;
}

.row-2 {
  background: green;
  margin-bottom: 10px;
}

.row-3 {
  background: blue;
  margin-bottom: 30px;
}

.row-4 {
  background: red;
  margin-bottom: 20px;
}
<div class="grid">
  <div class="wide"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
</div>

我可以做任何网格技巧来实现这一目标吗?grid-row-gap似乎只采用一个值,该值用于所有行。

随着grid-row-gap, grid-column-gap and grid-gap属性,您不能对不同的间隙应用不同的宽度。正如您所指出的,每个轴只能使用一个值:一个用于行间隙,另一个用于列间隙(spec https://www.w3.org/TR/css3-grid-layout/#gutters).

您可以使用边距(或填充)来显示额外的空间,但这实际上并不会改变间隙的宽度。它仅扩展行。

在下面的示例中(基于您的代码),grid-row-gap设置为 20px。网格项目有margin-bottom您设置的变体。请注意如何grip-row-gap尺寸永远不会改变。所有更改都发生在行内部。

.grid {
  display: grid;
  grid-template-columns: auto 25% 25%;
  grid-template-rows: auto auto auto;
  grid-column-gap: 40px;
  grid-row-gap: 20px;
}

div {
  background: #838383;
  height: 80px;
}

.wide {
  grid-column: 1 / span 3;
  margin-bottom: 5px;
}

.row-2 {
  background: green;
  margin-bottom: 10px;
}

.row-3 {
  background: blue;
  margin-bottom: 30px;
}

.row-4 {
  background: red;
  margin-bottom: 20px;
}
<div class="grid">
  <div class="wide"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
</div>

如果您想在行之间应用不同大小的间隙,请考虑使用实际行来完成作业:

现在,行之间的间隙有自己独特的高度。

.grid {
  display: grid;
  grid-template-columns: auto 25% 25%;
  grid-template-rows: 80px 5px 80px 10px 80px 30px 80px 20px; /* adjusted */
  grid-column-gap: 40px;
}

.wide {
  grid-column: 1 / span 3;
  background: #838383;
}

.row-2 {
  grid-row-start: 3;
  background: green;
}

.row-3 {
  grid-row-start: 5;
  background: blue;
}

.row-4 {
  grid-row-start: 7;
  background: red;
}
<div class="grid">
  <div class="wide"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-2"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-3"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
  <div class="row-4"></div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CSS Grid 中为网格间隙设置不同的长度 的相关文章

  • 如何使用 PHP 动态插入 CSS 类?

    下面的代码有什么问题 我想在相应的情况下动态插入 当前 CSS 类 li 单击元素 谢谢 section section li
  • CSS 边框底部的曲线

    我需要 CSS 中的这个图像 并且在这个边框内需要一个背景图像 我努力了 border radius 0 0 50 50 webkit border radius 0 0 50 50 但没有得到所需的形状 任何帮助 将不胜感激 边界半径 您
  • 如何设置必须输入特定数字的字段?

    我想知道如何创建一个需要输入特定数字或文本的字段 例如 激活码 以及在输入的确认答案的情况下移动到 网页 并且在未确认的情况下移动到 另一页面 的按钮 使用必需的属性
  • 在 Chrome 中隐藏 HTML 时间输入字段上的图标

    在 Chrome 中 当您type time 属性到输入框 您会在输入旁边看到一个小图标时钟图标 有没有办法去掉这个小时钟图标 基于这个问题的答案 将日期输入三角形更改为日历图标 https stackoverflow com questi
  • 水平和垂直居中 div 位于页面中间,页眉和页脚粘在页面顶部和底部

    我正在尝试制作一个具有固定高度页眉和页脚的页面 页眉位于屏幕顶部 100 宽度 页脚位于底部 100 宽度 我想将一个具有可变高度内容的 div 居中放置在页眉和页脚之间的空间中 在下面的 jsfiddle 中 如果内容比空格短 它会起作用
  • 如何获得 calc() 函数的无单位结果

    我正在使用此计算来获取网页中的流体行高 line height calc 1 42em 1 55 1 42 100vw 300px 1080 300 数学是工作属性 除非我改变font size特定部分 因为line height应使用无单
  • 如何在非 CSS3 浏览器上制作圆角?

    我知道在这种情况下我必须使用图像 每个角一个 例如 如果我需要给定元素周围有一个 4px 的纯蓝色边框 边框半径为 8px 我相应地设计了四幅图像 左上角 png 右上角 png 左下角 png 右下角 png 如果可能的话 我应该如何实现
  • 如何使用 JavaScript 检测 CSS 变量支持?

    最新版本的 Firefox 支持CSS 变量 http www w3 org TR css variables 但 Chrome IE 和许多其他浏览器没有 应该可以访问 DOM 节点或编写一个小方法来返回浏览器是否支持此功能 但我还没有找
  • 动态突出显示时向

    添加项目符号点?

    Update 例子 p Text Text p 在示例中 是否可以选择第二个 文本 单词 p 元素并单击按钮仅动态添加项目符号点到选定的 单词 有没有可能 在一个 p p Text p 突出显示从 p 元素并添加项目符号点到按钮上动态单击的
  • Flexbox 的行之间可以有一条线吗?

    我有一个水平导航 它有点长 需要重新排列以适应狭窄的显示 我使用 flexbox 使其重排成多行 但行数较多时 导航项之间的划分就不那么明显了 我尝试在顶部给它们一个边框 它有点有效 但当然 边框仅在各个导航选项上可见 而不是在所有 Fle
  • 我正在尝试向我的 vue.js 项目添加背景图像

    我想添加覆盖整个页面的背景图像 然而现在看起来是这样的 我希望它跨越整个网页 在 vue js 中这将如何完成 我还想要一个动画工具栏 以便当页面不滚动时工具栏是透明的并呈现背景图像的外观 当它滚动时 工具栏将具有当前的蓝色 这是我的小提琴
  • grid-auto-columns 在 Firefox 中不能完全工作

    我不明白为什么 DIV 3 的大小与 DIV 1 DIV 2 的大小不同 https codepen io anon pen vaVqPW https codepen io anon pen vaVqPW grid display grid
  • Twitter bootstrap:居中缩略图

    我有一个缩略图列表 它们有固定的尺寸 我希望连续缩略图的数量随着窗口的宽度而变化 使用 Twitter Bootstrap 这很容易 http jsfiddle net charlesbourasseau 5WvAL http jsfidd
  • 样式标签中的源映射是否有效?

    我在标签和源映射中遇到 CSS 问题 为了缩短项目的加载时间 我改变了将 CSS 放入 HTML 的方式 将其改为 h1 Source maps working wonderfully h1 进入这个
  • 更快地开发和测试打印样式表的方法(避免每次都进行打印预览)?

    这是我现在的流程 保存对 print css 的更改 打开浏览器并刷新页面 右键单击并选择 打印 gt 打印预览 Firefox 但实际上是任何浏览器 第三步让我烦恼 我想知道是否可以通过插件或其他东西将其从流程中删除 只需选择以打印媒体形
  • 如何向 Rails 应用程序添加自定义字体?

    我想在 RoR 应用程序中使用几种字体 但它们的格式主要是 ttf 和 otf 等 我该如何将这些文件嵌入到我的 Rails 应用程序中 也就是说 一旦我将它们放入我的资产文件夹中 将它们嵌入我的 CSS 和 或 LESS 文件中的语法到底
  • 当百分比填充定义元素高度时忽略 max-height

    The max height当内部填充大于最大高度值时 属性值似乎被忽略 例如 在元素上设置此类会导致最大高度被忽略 max height ignored height 0 or auto makes no difference max h
  • @font-face 和 font-variant 是个坏主意吗?

    如果我使用 font face字体和font variant small caps对于相同的选择器 字体将回退到 Safari 中的下一个系统默认字体 我该如何解决这个问题 我一开始在创建一个示例来复制您的问题时遇到了一些麻烦 这让我意识到
  • 如何让div与包含td的高度相匹配?

    我沿着桌子的一排布置了三个 面板 一个比另外两个高 我希望所有三个面板都与最高的一个的高度相匹配 我尝试将 div 的样式设置为 height 100 但是即使包含的 tds 增长 短面板仍然很短 我的 HTML 是由 JSF 生成的 因此
  • 元素和 svg 形状之间的白线

    大家好 我正在使用由 shapedivider 生成的 svg 整形器 您可以看到 有一条白线 我不知道为什么它在那里以及如何删除它 请你帮助我好吗 有形状分隔符的代码 custom shape divider bottom 1640714

随机推荐

  • Pandas groupby 根据另一列中的值(0 或 1)选择最后一行或倒数第二行

    我有一个与客户的数据框 每个客户都有一些观察结果和变量 其中一些不再是客户 我的问题如下 我想按客户分组 如果客户仍然是客户 则选择最后一行 如果客户不再是客户 则选择倒数第二行 对于客户的所有观察 我有一个名为 churned 的列 如果
  • 获取 Android 操作系统中已注册的 Pending Intent 列表

    我注册了计划在给定时间执行的警报 并且根据计划列表的大小 可以有很多警报 但我有两个问题仍然不清楚 1 如何在操作系统中查询我注册的待处理意图 我需要这个来测试 我想要的伪代码是这样的 List
  • 如何向 ionic 4 应用程序添加和使用 bootstrap?

    我正在构建一个 ionic 4 应用程序 我想使用 bootstrap 而不使用 CDN 方法 我已经使用 npm install bootstrap 安装了 bootstrap 在 Ionic 4 中 可以通过使用 angular jso
  • 如何更改 PostgreSQL 中的最大列宽?

    我有一个简单的 SQL 查询 它从一个表中选择几行 其中一列包含很长的字符串 我想设置最大列宽 以便更容易阅读 我无法通过 pset 访问环境变量 None
  • 测试 SQL 查询的最佳方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我遇到了一个问题 复杂的 SQL 查询总是出错 从本质上讲 这会导致向错误的客户发送邮件以及其他类似的 问题 大家对于创建这样的 SQL 查询有
  • 如何在 Jetpack Compose Pager 中处理多个 TextField 焦点?

    我有一个寻呼机 每个页面上都有一个 TextField 我正在做过渡animateScrollToPage 如何让每个页面上的 TextField 获得焦点 当我给予Modifier focusRequster 到文本字段并检查index
  • 可选链的动态类型与赋值不同

    可选的链接返回always一个可选值 为了反映可以对 nil 值调用可选链接的事实 可选链接调用的结果始终是可选值 即使您正在查询的属性 方法或下标返回非可选值 Swift 编程语言 https developer apple com li
  • QComboBox 是否可以显示与其列表中不同的值?

    在 Linux 上使用 Qt 5 9 我有一个带有多个标签的 QComboBox qc new QComboBox qc gt addItem tr Red qc gt addItem tr Green qc gt addItem tr B
  • 用新的 Dataframe 替换一行

    我正在寻找一种更优雅的方法来从字典的值替换另一个数据帧中的数据帧 这是我必须使用的数据类型的示例 d 1 name bob age 22 Data 4 name sam age 30 Data 2 name tom age 20 Data
  • getDownloadUrl 是付费操作吗?

    我想知道是否getDownloadUrl在 Firebase 存储 Google Cloud Storage 上 一种获取存储上文件的公共 URL 的方法 是付费操作 即使读完之后文档 https cloud google com stor
  • DrawingPanel中刷新图片扩展了JPanel

    我必须在软件底部加载一个小图标 只是有一个加载 确定 错误图标 正如 http www article kth se lindsey JavaCourse Book Part1 Java Chapter06 images html 上的建议
  • 如何在服务器模式下运行H2数据库?

    我需要从我的应用程序以服务器模式启动 H2 数据库 尝试过以下代码 server Server createTcpServer start 这是连接的属性 javabase jdbc url jdbc h2 tcp localhost 90
  • Jekyll - 如何在根目录中创建页面?

    我正在使用 Jekyll 创建页面 文档建议 Jekyll 可以选择在根目录中创建页面 或为新页面创建新目录 From http jekyllrb com docs pages http jekyllrb com docs pages 页面
  • Log4Net 在单独的配置文件中

    我需要为新项目配置 log4net 当我将所有信息保存在 App config 文件中时 一切都工作得很好 我想把log4net的配置放在一个单独的配置文件中 取App1 config 这是我的 app config 完美运行
  • 三个不同表的内连接

    我在 Oracle APEX 工作 我想从三个不同的表中生成报告 患者 病史 治疗 通过INNER JOIN 表格如下 患者 Par Id Pk Pat Name Pat Gender 历史记录 His Id Pk Pat id Fk Tr
  • 生成精灵时指南针添加前斜线

    我刚刚生成了一个带有指南针的精灵 但由于某种原因 它在生成的类 url 中添加了一个前导斜杠 是否可以覆盖这个或者我的 config rb 中有什么错误 谢谢你的帮助 Joe 配置 rb gt http path css dir sass
  • 从嵌套列表创建新列表并将字符串转换为浮点数

    很抱歉问了一个已经被问过一百遍的问题 我是 Python 新手 我找到的解决方案似乎都不能解决我的问题 我有一个来自名为糖尿病的 csv 文件的嵌套列表 我在文件中读取并用逗号分隔元素 如下所示 for line in open diabe
  • .NET 日期时间转字符串

    有没有一种简单的方法可以将 DateTime 对象转换为这样的字符串表示形式 2010 03 03 10 38 48 我不确定上面的格式是什么 但它与通过 ToLongTimeString 等获得的模式不同 这是字符串生成器的情况吗 像这样
  • pyfunc_0 的返回值是 double,但需要 float

    我目前正在尝试更好地了解 Tensorflows CustomLayer 功能 在实现这样的自定义层时 我遇到了以下错误 usr lib python3 dist packages skimage util dtype py 110 Use
  • 在 CSS Grid 中为网格间隙设置不同的长度

    我正在使用 CSS 网格创建布局 并且希望每行之间有不同的空间 我可以通过在每个元素上使用边距来很好地创建布局 但这种方式掩盖了代码的简单性 有什么网格技巧可以实现这一点吗 grid row gap似乎只采用一个值 该值用于所有行 我想要实