CSS布局 - 网格布局 -- 笔记3

目录

  • 网格布局
    • 基础网格
    • 网格剖析

CSS 提供了一些控制网页布局的几个重要工具,这里介绍网格布局。

网格布局

CSS 网格可以定义由行和列组成的二维布局,然后将元素放置到网格中。有些元素可能只占据网格的一个单元,另一些元素则可能占据多行或多列。网格的大小既可以精确定义,也可以根据自身内容自动计算。你既可以将元素精确地放置到网格某个位置,也可以让其在网格内自动定位,填充划分好的区域。

基础网格

跟 Flexbox 类似,网格布局也是作用于两级的 DOM 结构。设置为 display: grid 的元素成为一个网格容器(gridcontainer)​。它的子元素则变成网格元素​。

看个例子:

<div class="grid"><div class="a">a</div><div class="b">b</div><div class="c">c</div><div class="d">d</div><div class="e">e</div><div class="f">f</div>
</div>.grid {display: grid; # 使用display: grid定义一个网格容器。容器会表现得像一个块级元素,100%填充可用宽度grid-template-columns: 1fr 1fr 1fr; # 分数单位: 三列等宽grid-template-rows: 1fr 1fr; # 等高的两行grid-gap: 0.5em; # 网格单元格添加间隔
}.grid > * {backgroud-color: gray;color: white;padding: 2em;border-radius: 0.5em;
}
  • 使用display: grid定义一个网格容器。容器会表现得像一个块级元素,100%填充可用宽度

也可以使用 inline-grid​,这样元素就会在行内流动,且宽度只能够包含子元素,不过 inline-grid的使用频率不高。

  • grid-template-columns 和 grid-template-rows: 定义了网格每行每列的大小。本例使用了一种新单位fr,代表每一列(或每一行)的分数单位(fraction unit)​。这个单位跟 Flexbox 中 flex-grow 因子的表现一样。grid-template-columns: 1fr 1fr 1fr 表示三列等宽。不一定非得用分数单位,可以使用其他的单位,比如px、em 或百分数。也可以混搭这几种单位,例如,grid-template-columns: 300px 1fr 定义了一个固定宽度为300px的列,后面跟着一个会填满剩余可用空间的列。2fr 的列宽是 1fr 的两倍

  • grid-gap 属性定义了每个网格单元之间的间距。也可以用两个值分别指定垂直和水平方向的间距(比如grid-gap: 0.5em 1em)​

网格剖析

在这里插入图片描述

  • 网格线(grid line):网格线构成了网格的框架。一条网格线可以水平或垂直,也可以位于一行或一列的任意一侧。指定了grid-gap的话,它就位于网格线上。
  • 网格轨道(grid track):一个网格轨道是两条相邻网格线之间的空间。网格有水平轨道(行)和垂直轨道(列)​。
  • 网格单元(grid cell):网格上的单个空间,水平和垂直的网格轨道交叉重叠的部分。
  • 网格区域(grid area):网格上的矩形区域,由一个到多个网格单元组成。该区域位于两条垂直网格线和两条水平网格线之间。

设计不必填满每个网格单元。在想留白的地方让网格单元为空即可。
使用Flexbox布局时,需要按照一定方式嵌套元素。比如用Flexbox定义了列,然后将另一个Flexbox嵌套在里面定义行。用网格实现同样的布局需要改一下HTML结构:将嵌套的HTML拉平。放在网格里的每个元素都必须是主要网格容器的子元素。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Grid Document</title><style>:root {box-sizing: border-box;}*,::before,::after {box-sizing: inherit;}body {background-color: #709b90;font-family: Arial, Helvetica, sans-serif;}/* 网格容器 */.container {display: grid;grid-template-columns: 2fr 1fr; /* 定义两个垂直的网格轨道 */grid-template-rows: repeat(4, auto); /* 定义四个水平轨道,大小为auto */grid-gap: 1.5em;max-width: 1080px;margin: 0 auto;}/* 下面这几个网格元素,必须是网格容器的子元素 */header,nav {grid-column: 1 / 3; /* 从1号垂直网格线跨越到3号垂直网格线 */grid-row: span  1; /* 刚好占据一条水平网格轨道 */}/* 下面也是,将其他网格元素定位到不同的网格线之间 */.main {grid-column: 1 / 2;grid-row: 3 / 5;}.sidebar-top {grid-column: 2  / 3;grid-row: 3 / 4;}.sidebar-bottom {grid-column: 2 / 3;grid-row: 4 / 5;}.title {padding: 1.5em;background-color: #fff;}.title > :first-child {margin-top: 0;}.title * + * {margin-top: 1.5em;}.page-heading {margin: 0;}.site-nav {display: flex;margin: 0;padding: .5em;background-color: #5f4b44;list-style-type: none;border-radius: .2em;}.site-nav > li {margin-top: 0;}.site-nav > li > a {display: block;padding: .5em 1em;background-color: #cc6b5a;color: white;text-decoration: none;}.site-nav > li + li {margin-left: 1.5em;}.site-nav > .nav-right {margin-left: auto;}.login-form h3 {margin: 0;font-size: .9em;font-weight: bold;text-align: right;text-transform: uppercase;}.login-form input:not([type=checkbox]):not([type=radio]) {display: block;width: 100%;margin-top: 0;}.login-form button {margin-top: 1em;border: 1px solid #cc6b5a;background-color: white;padding: .5em 1em;cursor: pointer;}.centered {text-align: center;}.centered small {text-transform: uppercase;}.cost {display: flex;justify-content: center;align-items: center;line-height: .7;}.cost > span {margin-top: 0;}.cost-currency {font-size: 2em;}.cost-dollars {font-size: 4em;}.cost-cents {font-size: 1,5em;align-self: flex-start;}.cta-button {display: block;background-color: #cc6b5a;color: white;padding: .5em 1em;text-decoration: none;}</style>
</head>
<body><div class="container"><header><h1 class="page-heading">Ink</h1></header><nav><ul class="site-nav"><li><a href="/">Home</a></li><li><a href="/features">Features</a></li><li><a href="/pricing">Pricing</a></li><li><a href="/support">Support</a></li><li class="nav-right"><a href="/about">About</a></li></ul></nav><main class="main title"><h1>Team collaboration done right</h1><p>Thousands of teams from all over this world turn to <b>Ink</b> to communicate and get things done.</p></main><div class="sidebar-top title"><form class="login-form"><h3>Login</h3><p><label for="username">Username</label><input id="username" type="text" name="username"></p><p><label for="password">Password</label><input id="password" type="password" name="password"></p><button type="submit">Login</button></form></div><div class="sidebar-bottom title centered"><small>Starting at</small><div class="cost"><span class="cost-currency">$</span><span class="cost-dollars">20</span><span class="cost-cents">.00</span></div><a class="cta-button" href="/pricing">Sign up</a></div></div>
</body>
</html>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/98916.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/98916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

合约开发完后部署测试

一 编译npx hardhat compile二 测试npx hardhat test三部署注意部署的时候2.0和3版本有所区别&#xff0c;3.0如下# 部署到本地网络&#xff08;如已运行 npx hardhat node&#xff09; npx hardhat ignition deploy ./ignition/modules/MyModule.ts --network localhost# 部署…

产品无法正确解析复杂表格和流程图,有什么替代方案或优化方法?

在真实办公场景中&#xff0c;文档内的元素往往不具备标准化和格式化特征&#xff0c;像双栏表格、无线图表等复杂元素十分常见。而传统 OCR 工具在面对这类复杂文档时&#xff0c;存在明显的能力短板&#xff1a;它无法准确判断复杂表格的结构逻辑以及内容的顺序逻辑&#xff…

《Html模板》HTML数学题目生成器 - 让数学练习更简单(附源码)

目录专栏导读&#x1f9ee; HTML数学题目生成器 - 让数学练习更简单项目简介✨ 核心功能&#x1f3af; 灵活的运算类型选择&#x1f4ca; 智能题目生成算法⚙️ 个性化参数设置&#x1f5a8;️ 专业打印优化&#x1f3a8; 用户体验设计现代化界面交互体验&#x1f6e0;️ 技术实…

Go语言设计模式(七)组合模式

组合模式是指将一组相似对象当做一个单一对象的设计模式.1.组成角色:1.1组件:组合中的对象声明接口,主要用于访问和管理其子组件.1.2叶子节点:定义组合中原始对象行为的类.叶子节点表示组合中的叶对象.1.3组合:又称为容器,存储子组件并在组件接口中实现与子组件有关的类.1.4客户…

AI 3D 生成工具知识库:当前产品格局与测评总结

聚焦于 AI 3D 生成领域的领军产品、功能比较及实测性能。内容分为产品格局、通用功能、测评系统与基准测试&#xff0c;以及单视图生成实测结果。所有信息基于脚本分析&#xff0c;并交叉验证了产品名称、团队背景&#xff08;如 VAST AI 的 TripoSR/Meshy 的 Meshy-1、影眸科技…

淘客app的容器化部署与编排:基于Kubernetes的微服务架构实践

淘客app的容器化部署与编排&#xff1a;基于Kubernetes的微服务架构实践 大家好&#xff0c;我是阿可&#xff0c;微赚淘客系统及省赚客APP创始人&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在淘客app的业务迭代中&#xff0c;传统物理机部署面…

当GitHub不再纯粹:Python自动化测试的未来是AI还是危机?

全球最大的开源代码平台&#xff0c;彻底被卷进了AI洪流&#xff01;作为全球最大的“程序员交友平台”&#xff08;手动狗头&#xff09;&#xff0c;GitHub 可以说是每一个开发者又爱又恨的“家”。没错&#xff0c;就是那个全球最大、没有之一的开源代码托管平台&#xff01…

Spring Boot + MySQL 创建超级管理员

Spring Boot系统创建超管实现方式1. 数据库脚本初始化&#xff08;最直接的方式&#xff09;2. Spring Boot 启动时自动创建&#xff08;代码级初始化&#xff09;2.1 实体类定义2.2 Repository 接口2.3 初始化组件2.4 配置密码加密器3. 通过接口手动创建&#xff08;最安全的方…

杨辉三角**

一、题目给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。示例 1:输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2:输入: numRows 1 输出: [[1]]提示:1 <…

Vue3 的单文件组件(.vue 文件)中,在 <script>、<template>、<style> 标签外输入内容不会导致程序报错

在 <script>、<template>、<style> 标签外首行误输入内容 vtsvts <script setup lang"ts" name"BaseDocxPreviewDialog"> /*** docx文件预览模态框组件*/ defineOptions({ name: "BaseDocxPreviewDialog" }); import { …

LVS负载均衡群集和LVS+Keepalived群集

1、群集 1.1群集的含义 由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名与IP地址&#xff09;&#xff0c;相当于一台大型计算机。 1.2 企业群集分类 负载均衡群集&#xff1a;提高应用系统的响应能力、尽可能处理更多的…

LeetCode力扣-hot100系列(5)

这一篇主要讲一讲回溯&#xff0c;除了N皇后问题是困难题&#xff0c;不过N皇后知道了咋做也不难。回溯整体上还是好做的&#xff0c;直到套路容易做出来&#xff0c;题目容易理解。回溯[1]全排列问&#xff1a;给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的…

机器学习05——多分类学习与类别不平衡(一对一、一对其余、多对多)

上一章&#xff1a;机器学习04——决策树 下一章&#xff1a;机器学习06——支持向量机 机器学习实战项目&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到进阶&#xff0c;大学生就业 / 竞赛必备 文章目录一、多分类学习&#xff08;一&#xff09;…

2025.9.11总结

阅读《拿铁因素》有感昨天看完《拿铁因素》&#xff0c;这本书让我明白&#xff0c;如果不去主动去管理自己的财务&#xff0c;解决自己从前的财务问题&#xff0c;我很难过上自己想要的生活。今天就所读的内容&#xff0c;探究如何将这本书的内容运用到自己的一个日常生活中。…

Android,Jetpack Compose,坦克大战游戏案例Demo

代码如下&#xff08;这只是个简单案例而已&#xff09;&#xff1a; package com.example.myapplicationimport android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.Canvas impo…

zookeeper是啥

ZooKeeper是一个开源的分布式协调服务&#xff0c;主要用于解决分布式系统中的数据一致性、状态同步和协作问题‌。它通过提供高可用、强一致性的服务&#xff0c;成为分布式系统的“指挥中心”‌。以下是其核心功能和应用场景&#xff1a;核心功能 分布式同步‌ 通过原子广播协…

【开题答辩全过程】以 基于Android的智慧旅游APP开发为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

如何选择?SEO 与 GEO 的 5 个核心分野

在 30 秒内&#xff0c;以下是您需要了解的有关 SEO 和 GEO 之间差异的信息&#xff1a; SEO&#xff08;搜索引擎优化&#xff09;&#xff1a;让您的网站出现在 Google 搜索中。目标&#xff1a;吸引用户点击您的链接。GEO&#xff08;生成引擎优化&#xff09;&#xff1a;…

基于MATLAB的光学CCD全息成像仿真程序实现

基于MATLAB的光学CCD全息成像仿真程序实现一、流程 #mermaid-svg-g3dkhZSC3Go4a2kH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-g3dkhZSC3Go4a2kH .error-icon{fill:#552222;}#mermaid-svg-g3dkhZSC3Go4a2kH .er…

Java大厂面试实录:产业互联网大数据与AI服务场景下的微服务与智能搜索(含详细解读)

Java大厂面试实录&#xff1a;产业互联网大数据与AI服务场景下的微服务与智能搜索&#xff08;含详细解读&#xff09; 场景开场 &#x1f3ed;&#x1f984; 午后阳光正好&#xff0c;王老登背着“Java一把梭”的背包&#xff0c;精神抖擞地走进了产业互联网大数据与AI服务大厂…