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

CSS 核心知识点 - grid

思维导图

参考网址: https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_grid_layout

一、什么是 grid?

        CSS Grid布局是在CSS3规范中引入的一种新的布局方式,旨在解决传统布局方法(如浮动、定位、表格布局)存在的许多问题。CSS Grid布局规范最早由W3C提出,经过多年的发展和标准化,于2017年成为W3C的推荐标准。

二、grid 布局相比 flex 布局有那些方便之处?

Html + Css 核心知识 - flex (超详细)_html flex-CSDN博客

网格布局更为方便

问题场景一:例如想要实现页面内显示多个元素、每个元素大小尺寸间距相同、每行显示个数固定、按行由左向右排序、且在页面中均匀分布。如下所示

这时候很多人第一时间想到了 flex、单行用flex很方便、多行的话需要进行一些额外运算

.father{height: 80vh;width: 80vw;background-color: #f5f5f5;display: flex;flex-wrap: wrap;align-content: start;gap: 10px;}  .son{width: calc((100% - 50px) / 6);aspect-ratio: 1 / 1; /* 设置宽高比为1:1 */border: 1px solid red;box-sizing: border-box;}

那有没有不用计算的方案呢! grid 这时候就排上的用场了!

.father{height: 80vh;width: 80vw;background-color: #f5f5f5;display: grid;/* grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; */grid-template-columns: repeat(6, 1fr); /* 定义六个等宽的列 */align-content: start;gap: 10px;}  .son{/* width: calc((100% - 50px) / 6); */aspect-ratio: 1 / 1; /* 设置宽高比为1:1 */border: 1px solid red;box-sizing: border-box;}

问题场景二、实现等比例大小不同盒子布局、场景如下

这时候用其他方案处理就比较麻烦了、而 grid 就能很方便处理

.father{height: 80vh;width: 80vw;background-color: #f5f5f5;display: grid;/* grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; */grid-template-columns: repeat(6, 1fr); /* 定义六个等宽的列 */align-content: start;gap: 10px;}  .son{/* width: calc((100% - 50px) / 6); */aspect-ratio: 1 / 1; /* 设置宽高比为1:1 */border: 1px solid red;box-sizing: border-box;min-width: 200px;}#item1{grid-column: 1/3;grid-row: 1/3; }#item8{grid-column: 5/7;grid-row: 2/4; }

根据可用空间自动填充列(这点个人觉得非常好用)。

.father{height: 80vh;width: 80vw;background-color: #f5f5f5;display: grid;/* grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr; */grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));align-content: start;gap: 10px;}  .son{/* width: calc((100% - 50px) / 6); */aspect-ratio: 1 / 1; /* 设置宽高比为1:1 */border: 1px solid red;box-sizing: border-box;}

可以看到宽度是被自动填充到333px

填充到了 359px

http://www.lryc.cn/news/391585.html

相关文章:

  • pyecharts可视化案例大全(1~10)
  • SpringBoot 启动流程一
  • 打印机删除副本以后无法安装打印机驱动
  • Vue3中为Ant Design Vue中Modal.confirm自定义内容
  • 智能猫砂盆到底哪家好用?自费实测聚宠、糯雪、CEWEY真实反馈!
  • 初阶数据结构之二叉树
  • 代码随想三刷动态规划篇8
  • ​​服务拆分的原则
  • 离线安装docker社区版
  • 徒手绘制 Android 通用进度条
  • 【TB作品】矩阵键盘电话拨号,ATMEGA16单片机,Proteus仿真 atmega16矩阵键盘电话拨号
  • JavaScript(6)——数据类型转换
  • 概率论与数理统计_下_科学出版社
  • Android 复习layer-list使用
  • 汉光联创HGLM2200N黑白激光多功能一体机加粉及常见问题处理
  • 引领汽车软件开发走向ASPICE认证之路
  • 【C/C++ new/delete和malloc/free的异同及原理】
  • Maven Archetype 自定义项目模板:高效开发的最佳实践
  • vue的ESLint 4格缩进 笔记
  • 【前端项目笔记】8 订单管理
  • 构建Yarn依赖树:深入解析与实践指南
  • 社区活动|FlowUs知识库的发展|先进技术的落地应用|下一代生产力工具你用了吗
  • Python基础语法(与C++对比)(持续更新ing)
  • LeetCode-Leetcode 1120:子树的最大平均值
  • AI在软件开发中的角色:助手还是取代者?
  • jboss 7.2
  • 鸿蒙开发:Universal Keystore Kit(密钥管理服务)【密钥生成介绍及算法规格】
  • 电气-伺服(4)CANopen
  • JavaFx基础知识
  • 学会python——用python制作一个登录和注册窗口(python实例十八)