当前位置: 首页 > news >正文

HTML+CSS - 网页布局之网格布局

1. dispaly设置

display是 CSS 中用于设置元素的显示方式的属性。它决定了元素如何被渲染到页面上。不同的display值会改变元素的显示行为,包括布局、排版以及对其他元素的影响。

其中网格容器是最常用的几种方式之一,在文档中创建类似于网格的效果,将组件十分方便的进行填充布局。

2. 创建网格容器

1. 设置元素显示方式为grid

.container{display:grid;
}

创建一个网格图,初始为一例一行。

2. 设置网格列的个数与宽度

grid-template-columns:repeat(3,1fr);

px代表实数排布,设置多少,间隔多少。

fr代表比例表示,在可编辑位置进行比例排布。

3. 设置网格行的个数与高度

grid-template-rows:repeat(2,100px);

设置多少行,每一行的高度。

3. 网格细节修改

2.1 设置间隔大小

grid-gap:10px; /*行列间隔大小一致*/
grid-column-gap:10px; /*网格列的大小,即间隔宽度*/
grid-row-gap:10px; /*网格行大小,即间隔高度*/

设置每一个块状体彼此之间的距离 

2.2 显式网格与隐式网格

显式网格是我们用 grid-template-columns 或 grid-template-rows 属性创建的。而隐式网格则是当有内容被放到网格外时才会生成的。

隐式网格会自动生成,根据我们所设置的相关参数持续排布。若没有指定行的大小,则默认为auto

2.3 自动填充多列

.container {display: grid;grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));grid-auto-rows: minmax(100px, auto);grid-gap: 20px;
}

设置列:每一列最小200px宽度,最大1fr的比例,根据大小自动生成有多少列数

设置行:最小100px的高度,最大不设限

3. 网格元素放置

3.1 直接放置

	.container {display: grid;grid-template-columns: repeat(3, 1fr); /* 三列,每列占据相等的空间 */grid-template-rows: repeat(2, 100px);  /* 两行,每行100px高 */gap: 10px; /* 网格单元之间的间隙 */}

一般而言,会自动将网格布局所含概的子类类别自动按照代码顺序填充进去

3.2 自定义位置放置

• grid-column & grid-row

<div class="container"><div class="item1">1</div><div class="item2">2</div><div class="item3">3</div><div class="item4">4</div><div class="item5">5</div><div class="item6">6</div>
</div>
.item1 { grid-column: 1 / 2; grid-row: 1 / 2; }
.item2 { grid-column: 2 / 3; grid-row: 1 / 2; }
.item3 { grid-column: 3 / 4; grid-row: 1 / 2; }
.item4 { grid-column: 1 / 2; grid-row: 2 / 3; }
.item5 { grid-column: 2 / 3; grid-row: 2 / 3; }
.item6 { grid-column: 3 / 4; grid-row: 2 / 3; }

 grid-column 是 CSS Grid 布局中的一个属性,用于指定一个网格项目在网格中的列位置。它可以定义项目开始和结束的列线,控制项目跨越的列数。

grid-column: <start-line> / <end-line>;

• 设置起始

.item1 {grid-column: 1 / 3; /* 从第1列线开始,跨越到第3列线 */
}

第一个块状体的末尾线默认为第二个块状体的起始线。 

• 设置跨越

.item2 {grid-column: 2 / span 2; /* 从第2列线开始,跨越2列 */
}

span所定义跨越2列 

3.3 设置起始位置

grid-column-start 是 CSS Grid 布局中的一个属性,用于指定网格项目开始在哪一列的网格线。它可以单独使用,也可以和 grid-column-end 配合使用来定义项目跨越的列范围。

.item {grid-column-start:1; /*项目从第一列开始*/grid-column-start: span 2; /* 项目跨越2列,从当前位置往后 */
}

搭配grid-column-end:

.item {grid-column-start: 1; /* 从第1列线开始 */grid-column-end: 4;   /* 到第4列线结束 */
}

4. 网格布局实例

使用HTML编写网页内容

	<body>
<div class="container"><header>This is my lovely blog</header><article><h1>My article</h1><p>Duis felis orci, pulvinar id metus ut, rutrum luctus orci. Cras porttitorimperdiet nunc, at ultricies tellus laoreet sit amet. Sed auctor cursusmassa at porta. Integer ligula ipsum, tristique sit amet orci vel, viverraegestas ligula. Curabitur vehicula tellus neque, ac ornare ex malesuadaet. In vitae convallis lacus. Aliquam erat volutpat. Suspendisse acimperdiet turpis. Aenean finibus sollicitudin eros pharetra congue. Duisornare egestas augue ut luctus. Proin blandit quam nec lacus variuscommodo et a urna. Ut id ornare felis, eget fermentum sapien.</p><p>Nam vulputate diam nec tempor bibendum. Donec luctus augue eget malesuadaultrices. Phasellus turpis est, posuere sit amet dapibus ut, facilisis sedest. Nam id risus quis ante semper consectetur eget aliquam lorem. Vivamustristique elit dolor, sed pretium metus suscipit vel. Mauris ultricieslectus sed lobortis finibus. Vivamus eu urna eget velit cursus viverraquis vestibulum sem. Aliquam tincidunt eget purus in interdum. Cum sociisnatoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</p></article><aside><h2>Other things</h2><p>Nam vulputate diam nec tempor bibendum. Donec luctus augue eget malesuadaultrices. Phasellus turpis est, posuere sit amet dapibus ut, facilisis sedest.</p></aside><footer>Contact Taoabo@qq.com</footer>
</div></body>

原有HTML文档: 

使用css进行修饰

	<style>.container{display:grid;grid-template-columns: 1fr 3fr;grid-gap:20px;}header{grid-column:1/3;grid-row: 1;}article{grid-column:2;grid-row:2;}aside{grid-column:1;grid-row:2;}footer{grid-column:1/3;grid-row:3;}footer {border-radius: 5px;padding: 10px;background-color: rgb(207, 232, 220);border: 2px solid rgb(79, 185, 227);}header{font-size: 50px;border-radius: 5px;background-color: #90EE90;padding:10px;}</style>

效果展示: 

5. 参考资料

网格 - 学习 Web 开发 | MDN

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL从入门到精通——实战45例
  • 压力测试(内存、磁盘、网络、cpu)
  • SAP学习笔记 - 开发04 - Fiori UI5 开发环境搭建
  • Git 使用教程:从入门到精通
  • Vue3 动态组件
  • 常见的站长工具接口有哪些?站长们该如何选择?
  • Echarts中文版 2D世界地图
  • Leetcode 寻找重复数
  • Vue3: setup语法糖
  • B2C电商接口解决方案||搭建电商项目必备电商接口
  • Redis中的AOF重写过程及其实际应用
  • Linux echo,printf 命令
  • 工业一体机选型如何考虑硬件和软件兼容性
  • Spring Cloud全解析:熔断之Hystrix线程隔离导致的问题
  • web群集--nginx配置文件location匹配符的优先级顺序详解及验证
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • CSS中外联样式表代表的含义
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • JS笔记四:作用域、变量(函数)提升
  • js面向对象
  • leetcode46 Permutation 排列组合
  • nodejs调试方法
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Shell编程
  • vue--为什么data属性必须是一个函数
  • 构造函数(constructor)与原型链(prototype)关系
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 理解在java “”i=i++;”所发生的事情
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • -- 数据结构 顺序表 --Java
  • 学习JavaScript数据结构与算法 — 树
  • 一个完整Java Web项目背后的密码
  •  一套莫尔斯电报听写、翻译系统
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​iOS实时查看App运行日志
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #pragma预处理命令
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • ( 10 )MySQL中的外键
  • (12)Linux 常见的三种进程状态
  • (AngularJS)Angular 控制器之间通信初探
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (利用IDEA+Maven)定制属于自己的jar包
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .jks文件(JAVA KeyStore)
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET开发者必备的11款免费工具
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400