使用 CSS Grid 创建 3×3 网格布局并实现滚动效果

使用 css grid 创建 3x3 网格布局并实现滚动效果

本文将详细讲解如何使用 CSS Grid 布局创建一个 3×3 的网格,并且当元素数量超过9个时,允许用户通过横向滚动来查看剩余的元素。这种布局方式常用于需要在有限的空间内展示大量内容,同时保证首屏展示效果的场景。

实现原理

核心思路是利用 CSS Grid 的 grid-auto-flow 属性控制元素的排列方向,并结合 overflow-x 属性实现横向滚动。通过 CSS 自定义属性,我们可以方便地控制网格的列数、行数和间距。

具体实现步骤

HTML 结构:

首先,我们需要一个包含所有元素的容器,例如一个 div 元素,并为每个元素添加一个类名,例如 card。

立即学习“前端免费学习笔记(深入)”;

ONE
TWO
THREE
FOUR
FIVE
SIX
SEVEN
EIGHT
NINE
TEN
ELEVEN
TWELVE
THIRTEEN
FOURTEEN

CSS 样式:

接下来,我们需要为容器 .cards 设置 CSS 样式,以实现 3×3 的网格布局和横向滚动效果。

.cards {  /* 定义列数 */  --cols: 3;  /* 定义行数 */  --rows: 3;  /* 定义网格间距 */  --gap: 5px;  /* 计算每个元素的宽度 */  --width: calc((100% - var(--gap) * (var(--cols) - 1)) / var(--cols));  display: grid;  position: relative;  /* 设置元素排列方向为 column dense */  grid-auto-flow: column dense;  /* 定义行数 */  grid-template-rows: repeat(var(--rows), 1fr);  /* 定义列宽 */  grid-auto-columns: var(--width);  /* 设置网格间距 */  grid-gap: var(--gap);  /* 允许横向滚动 */  overflow-x: auto;}.card {  background-color: dodgerblue;  color: white;  padding: 1rem;  height: 4rem;}

代码解释:

–cols: 自定义属性,用于设置网格的列数。–rows: 自定义属性,用于设置网格的行数。–gap: 自定义属性,用于设置网格元素之间的间距。–width: 自定义属性,用于计算每个网格元素的宽度,确保元素能够均匀分布在容器中。display: grid: 将容器设置为 Grid 布局。position: relative: 允许子元素使用绝对定位。grid-auto-flow: column dense: 设置元素的排列方向为列,并启用 dense 模式,尽可能填充网格中的空缺。grid-template-rows: repeat(var(–rows), 1fr): 定义网格的行数,1fr 表示每行占据相等的可用空间。grid-auto-columns: var(–width): 定义网格的列宽,使用之前计算好的 –width 值。grid-gap: var(–gap): 设置网格元素之间的间距。overflow-x: auto: 允许容器在水平方向上滚动,当内容超出容器宽度时显示滚动条。

注意事项

可以根据实际需求调整 –cols、–rows 和 –gap 的值,以改变网格的布局。grid-auto-flow: column dense 属性确保元素按照列的顺序排列,并尽可能填充网格中的空缺。如果不需要填充空缺,可以将 dense 移除。overflow-x: auto 属性只在内容超出容器宽度时才会显示滚动条。如果需要始终显示滚动条,可以使用 overflow-x: scroll。

总结

通过使用 CSS Grid 布局和 grid-auto-flow 属性,我们可以轻松创建一个固定大小的网格,并将剩余元素放置在网格右侧,通过横向滚动的方式展示。这种布局方式适用于需要在有限空间内展示大量内容,同时保证首屏展示效果的场景。通过调整 CSS 自定义属性,可以灵活控制网格的列数、行数和间距,从而实现不同尺寸的网格布局。

以上就是使用 CSS Grid 创建 3×3 网格布局并实现滚动效果的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1580096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 21:10:40
下一篇 2025年12月14日 21:38:06

相关推荐

  • HTML怎么制作密码输入框_HTMLpassword类型input的安全输入框实现

    使用type=”password”可创建密码输入框,通过小眼睛图标用JS切换显示隐藏,结合HTTPS、长度限制和确认框提升安全与体验。 制作密码输入框很简单,HTML 提供了专门的 type=”password” 来实现安全输入效果。用户在输入时看到的…

    好文分享 2025年12月22日
    000
  • 从URL提取子字符串并复制到剪贴板的教程

    本文档将指导你如何使用 JavaScript 从 URL 中提取特定的子字符串(例如,URL 参数值),并将其复制到剪贴板。我们将使用 URLSearchParams API 来解析 URL,提取目标参数,然后使用 navigator.clipboard.writeText() 方法将提取的参数复制…

    2025年12月22日
    000
  • 使用CSS实现鼠标悬停触发的下拉菜单

    本文介绍如何使用纯CSS实现鼠标悬停时展开的下拉菜单,无需依赖任何JavaScript框架。文章提供了三种不同的实现方法,每种方法都利用了CSS的:hover伪类选择器和子选择器,通过控制display、height和opacity等属性,实现下拉菜单的显示与隐藏效果。每种方法都附带了详细的代码示例…

    2025年12月22日
    000
  • 使用CSS实现悬停下拉菜单

    本文介绍了如何使用纯CSS实现鼠标悬停时展开的下拉菜单,无需依赖任何JavaScript框架。通过:hover伪类和子选择器,提供了三种不同的CSS实现方案,分别通过控制display、height和opacity属性来达到下拉菜单的显示与隐藏效果,并附带详细的代码示例,方便开发者根据实际需求选择最…

    2025年12月22日
    000
  • 使用CSS :hover 实现鼠标悬停下拉菜单

    本文将介绍如何使用纯CSS实现鼠标悬停触发的下拉菜单,无需依赖任何JavaScript框架。 实现原理 核心思想是利用CSS的 :hover 伪类来检测鼠标悬停状态,并结合子选择器 (>) 来控制下拉菜单的显示和隐藏。通过控制 display、height 或 opacity 属性,可以实现不…

    2025年12月22日
    000
  • 使用 CSS 实现鼠标悬停触发的下拉菜单

    本文介绍了如何使用纯 CSS 实现鼠标悬停时展开的下拉菜单,无需依赖任何 JavaScript 框架。通过 :hover 伪类和子选择器,我们可以轻松地控制下拉菜单的显示与隐藏,并提供了三种不同的实现方式,分别通过控制 display、height 和 opacity 属性来实现下拉效果。 使用 C…

    2025年12月22日
    000
  • Django表单输入重定向到动态URL路径的实现

    本文详细介绍了如何在Django项目中,将HTML表单的输入值动态地追加到URL路径中,而非作为查询参数或停留在原页面。通过引入一个中间视图来处理%ignore_a_1%,获取用户输入,并利用Django的redirect功能将其重定向到包含该输入值的目标URL路径,从而实现更简洁、用户友好的URL…

    2025年12月22日
    000
  • Angular按钮中复杂标签文本的局部样式控制指南

    本文旨在解决Angular按钮标签中部分文本的样式化问题。当按钮的label属性被整体绑定时,难以对其中特定部分进行独立样式控制。教程将详细介绍如何通过在元素内部使用多个标签来构建复合文本内容,从而实现对每个文本片段的精细化样式管理,并提供最佳实践建议,包括使用CSS类和动态样式绑定。 理解Angu…

    2025年12月22日
    000
  • jQuery中更新包含嵌套元素的HTML内容:避免常见陷阱

    本文探讨了在使用jQuery的.html()方法更新包含嵌套子元素的HTML内容时常犯的错误,特别是将 元素嵌套在另一个 内部的问题。我们将详细介绍如何正确地替换目标元素的内部HTML,同时保留其原有结构和样式,并通过示例代码演示正确的实现方式,确保内容更新的准确性和页面的结构完整性。 理解问题:j…

    2025年12月22日
    000
  • 在 Rails 应用中嵌入 PDF 文件教程

    本教程详细指导如何在 Ruby on Rails 应用中将 PDF 文件嵌入到 HTML 视图中。核心方法是利用 HTML 的 标签,结合 Rails 的 asset_path 助手处理资产管道中的文件,或通过硬编码 URL 并配置静态文件服务。文章还区分了文件嵌入与服务器端文件发送(send_fi…

    2025年12月22日
    000
  • 在 Ruby on Rails 应用中优雅地嵌入 PDF 文件

    本文将详细介绍如何在 Ruby on Rails 应用程序中将 PDF 文件嵌入到 HTML 视图中。主要方法包括利用 HTML 的 标签,结合 Rails 的 asset_path 辅助方法处理资产管道,以及在特定情况下直接硬编码文件路径并配置静态文件服务。通过这些方法,开发者可以灵活地在网页中展…

    2025年12月22日
    000
  • jQuery动态更新H1元素内容:避免嵌套标签与样式丢失的正确实践

    本教程旨在解决使用jQuery的.html()方法更新包含子元素的 标签内容时,常见的因错误嵌套导致样式丢失的问题。我们将深入探讨如何正确地仅替换目标元素的内部HTML,从而在不破坏原有结构和样式的前提下,实现动态内容更新,确保页面元素的视觉一致性。 问题剖析:不正确的元素内容更新方式 在网页开发中…

    2025年12月22日
    000
  • HTMLpositionfixed和sticky定位的格式属性区别和应用

    fixed元素始终固定在视口,脱离文档流,适用于全局固定组件;sticky元素在滚动到阈值时才吸附,仍占位,适合局部粘附场景。 fixed 和 sticky 是 CSS 中两种常用的定位方式,它们都能让元素脱离正常的文档流并实现固定效果,但在行为和应用场景上有明显区别。 fixed 定位的特点与用法…

    2025年12月22日
    000
  • 利用 标签为HTML页面所有请求设置代理前缀

    本文旨在解决HTML页面所有HTTP请求在页面加载前预置代理URL的挑战,尤其是在Service Workers不适用此场景的情况下。文章详细介绍了如何通过在文档的区域使用HTML 标签,将所有相对URL请求(包括脚本、样式、图片和链接)统一重定向到指定的代理基准URL,并提供了实现示例、关键注意事…

    2025年12月22日 好文分享
    000
  • CSS与JavaScript实现非子/非兄弟元素悬停交互效果教程

    本教程探讨了如何通过悬停一个元素来控制另一个非子元素或非兄弟元素的可见性或样式。文章详细介绍了CSS的相邻/通用兄弟选择器在同级元素间的应用,以及JavaScript通过事件监听实现任意元素间复杂交互的通用方法。此外,还介绍了CSS :has()伪类这一新兴特性,及其在实现此类效果时的潜力与兼容性考…

    2025年12月22日
    000
  • altium如何生成htm_用Altium生成HTM文件方法

    Altium Designer虽不支持直接导出HTM文件,但可通过Web Publisher功能生成包含HTML文件的网页包,再将index.html重命名为.htm即可。具体步骤:1. 使用Draftsman创建文档并导出为PDF,再用第三方工具转为HTM;2. 在Output Job中启用Web…

    2025年12月22日
    000
  • CSS选择器与JavaScript:实现非直接关联元素的交互效果

    本文探讨了如何在网页中实现一个元素(触发器)在被悬停时,控制另一个非其子元素或非其直接兄弟元素(目标)的样式变化。针对这一挑战,文章详细介绍了三种主要方法:利用CSS的:has()伪类(需注意兼容性)、通过JavaScript事件监听器实现灵活控制,以及适用于特定结构的CSS相邻兄弟选择器(~)。通…

    2025年12月22日
    000
  • 如何在Django视图中正确获取HTML select表单的值并进行处理

    本教程详细阐述了在Django视图中如何从HTML select表单中正确获取用户选择的值。通过修正HTML option标签的value属性,并使用request.POST.get()方法,您可以高效地获取表单数据,并将其应用于数据库删除等操作,确保数据处理的准确性和可靠性。 1. 理解HTML …

    2025年12月22日
    000
  • Angular按钮文本局部样式化:实现精细化控制

    本教程将指导如何在Angular中对按钮标签的特定部分应用独立样式。通过放弃单一的label属性,转而利用多个元素包裹文本内容,并结合CSS类或Angular的样式绑定,实现对按钮文本的字体大小、颜色等属性的精细化控制,提升UI的灵活性和可维护性。 传统label属性的局限性 在angular中,当…

    2025年12月22日
    000
  • Angular按钮局部文本样式化指南

    本教程将指导您如何在Angular应用中为按钮标签的特定文本部分应用不同的样式,例如字体大小和颜色。通过将按钮标签分解为多个独立的元素,您可以实现对每个文本段的精细化样式控制,从而提升用户界面的视觉表现力和可读性,并强调了将样式从内联移至CSS/SCSS文件的最佳实践。 挑战:统一标签的局限性 在a…

    2025年12月22日
    000

发表回复

登录后才能评论
关注微信