记录阮一峰grid教程笔记

news2024/9/9 0:58:45

前言

        看了阮一峰的grid教程,做一个笔记,主要自己看,有理解错误的地方后续更正,有新的理解后续补充。教程链接如下:

CSS Grid 网格布局教程 - 阮一峰的网络日志

        grid主要分为容器属性和项目的属性,在行列布局(比如九宫格)这种具有二维特征的布局中还是挺好用的。

        下面是笔记内容。

容器属性

1、grid-template-columns和grid-template-rows 用来划分区域

        意义:定义布局的行和列,

1、可以指定具体的px(可以用repeat函数简化。【 repeat(num重复次数,fr重复数据) 】)。

2、也可以是百分比。

3、也可以是fr(表示片段,对容器的剩余可用空间(去除gap等)分比例,反正fr不会超出容器,而百分比则可能超出容器)。

.container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  /* 简化: grid-template-columns: repeat(2, 1fr); */
  grid-template-rows: 1fr 1fr;
}

auto-fill和auto-fit 区别

关键字:auto-fill和auto-fit 。

在简单使用时,auto-fill和auto-fit差别不达,要查看他们的区别需要和minmax结合使用。

下面先看auto-fill的简单使用。

auto-fill简单使用:

        比如容器宽300px,但是grid-template-columns值定义了 repeat(auto-fill, 80px) ,这样会尽可能多的容下宽80px的列。

        最终这个容器有多少列,不是像上一节那样写死的,而是计算出来的。

.container{
    /* 其他属性 */
    grid-template-columns: repeat(auto-fill, 80px);
    /* 每列80px,容器尽可能多的容下更多的列 */
    width:300px;
}

比如下图每列是80px,最多容下3*80=240px < width:300px,所以是3列。

区别 

        前提:要看出区别,repeat时的重复数据就不能是固定的值,需要结合minmax来使用,比如设置为:  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));

       1、 在剩余空间不足时,auto-fit和auto-fill没啥区别,他们都会以最小的宽来放下更多的项目,效果图如下:

        

        2、在剩余空间充足的情况,区别就显现了。auto-fill【足够..的量】会判断剩余空间,如果剩余空间还够放下一个和前面等宽的项目(即使是空白的项目),则会用这写空白项目和已有的真实项目一起来平分剩余空间;

        而auto-fit【适合、合身】则不会方空白的项目,直接是已有的真实项目来平分剩余空间。(这更符合常识)

        效果图如下:

 测试代码如下:

<style>
        .grid-container-1 {
            display: grid;
            height: 200px;
            grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
            
            /* grid-template-columns: repeat(auto-fill, 100px); */
            grid-template-rows: repeat(auto-fill, minmax(100px, 1fr));
            gap: 10px;
            justify-items: center;
            align-items: center;
        }


        .grid-container-2 {
            display: grid;
            height: 200px;
            grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
            /* grid-template-columns: repeat(auto-fit, 100px); */
            grid-template-rows: repeat(auto-fit, minmax(100px, 1fr));
            gap: 10px;
            justify-items: center;
            align-items: center;
        }

        .grid-container-1>.grid-item {
            width: 100%;
            background-color: green;
            font-size: 24px;
        }

        .grid-container-2>.grid-item {
            width: 100%;
            background-color: red;
            font-size: 24px;
        }

    </style>

 <!-- auto-fill和minmax结合使用,容器会计算剩余空间,如果能放下一项(比如大于最小值100px),则会放入空白项。
        但是auto-fit则是会把已有的项进行拓宽,不会放入空白项。要验证这一效果需要把容器宽拖大。
    -->
    auto-fill
    <div class="grid-container-1">
        <div class="grid-item">1</div>
        <div class="grid-item">2</div>
        <div class="grid-item">3</div>
        <div class="grid-item">4</div>
        <div class="grid-item">5</div>
        <div class="grid-item">6</div>
        <div class="grid-item">7</div>
        <div class="grid-item">8</div>
        <div class="grid-item">9</div>
    </div>
    auto-fit

    <div class="grid-container-2">
        <div class="grid-item">1</div>
        <div class="grid-item">2</div>
        <div class="grid-item">3</div>
        <div class="grid-item">4</div>
        <div class="grid-item">5</div>
        <div class="grid-item">6</div>
        <div class="grid-item">7</div>
        <div class="grid-item">8</div>
        <div class="grid-item">9</div>
    </div>

minmax函数

产生一个范围,如下为:大于100ox小于1fr的值

grid-template-columns: 1fr 1fr minmax(100px, 1fr);

网格线的名称

grid-template-columns属性和grid-template-rows属性里面,还可以使用方括号,指定每一根网格线的名字,方便以后的引用。 【哈,感觉没啥用】


.container {
  display: grid;
  grid-template-columns: [c1] 100px [c2] 100px [c3] auto [c4];
  grid-template-rows: [r1] 100px [r2] 100px [r3] auto [r4];
}


2、grid-gap 区域间隔

grid-gap:<grid-row-gap grid-column-gap> 的合并

省略第二个值默认取第一个的值,后面两个值的都是这样取值。

3、grid-template-areas 区域起名

需要和每个项目的grid-area属性相结合使用,


.container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
  grid-template-areas: 'a b c'
                       'd e f'
                       'g h i';
}

4、grid-auto-flow 填充顺序

每项默认按照“先行后列” 顺序填充,值为row,可以改为column后“先列后行”。

grid-auto-flow: column;

column的情况如下: 

其他值

        除了row和column两个值,还有设置row-dense和column-dense(dense:密集的),他们两个的意思尽可能填满,不要出现空格。

.grid-container-3 {
    display: grid;
    height: 200px;
    grid-template-columns: repeat(3, 100px);
    grid-template-rows: repeat(3, 100px);
    
    grid-auto-flow: row dense; /* //会保证第一行填满,依次尽量不出现空格 */
    gap: 10px;
    justify-items: center;
}
.grid-container-3>.grid-item:nth-child(1){
    grid-column: span 2;
}
.grid-container-3>.grid-item:nth-child(2){
    grid-column:span 2;
}

本来3会在4的,但是设置需要row dense就需要把行填满,刚好位置也够,所以3会上去。

row的效果

 

row-dense的效果:

5、justify-item、align-item、place-item 单元格内容的对齐

justify-item设置单元格内容的左右对齐,align-item是单元格内容的上下对齐,place-item是align-item和justify-item的简写。

place-items: <align-items> <justify-items>;

6、justify-content、align-content、place-content 内容区域在容器的对齐

同样justify-content是水平、align-content是垂直方向,place-content是align-content+justify-content的简写.

7、grid-auto-columns和grid-auto-rows 设置额外区域的网格大小

有时候项目只有3列,但是某个项目指定到第5列,如果不用这两个属性设置额外的单元格大小,则会根据这个单元格的内容来。

.container {
  display: grid;
  grid-template-columns: 100px 100px 100px;
  grid-template-rows: 100px 100px 100px;
  grid-auto-rows: 50px;  /* 8,9的height就是50px*/
}

【我测下来,rows是有用,但是column好像因为指定了grid-template-columns,grid-auto-columns的值会等于grid-template-columns。后续用到了再探究。】

项目属性

1、grid-column和grid-row 指定某一项在网格中的位置

grid-column是 grid-column-start / grid-column-end 的简写,start和end用斜线分割。

grid-row 是grid-row-start / grid-row-end的简写

我们还可以用span 关键字来表示跨越

.item-1 {
  grid-column-start: span 2;// 垮2列
}
.item{
    grid-column: 2 / span 2; /* 第2列,并且 垮2列*/
}

2、grid-area 指定这个项目放在哪个区域

可以看做上面的简写。

.item-1 {
  grid-area: e; /*要用区域名称的方式,就需要父容器用grid-template-areas定义了区域名称。*/
}

这样1就位于e的位置:

除了用区域名字,还可以用行列下标的方式指定位置并扩展,用斜线分割:

.item-1 {
  grid-area: 1 / 1 / 3 / 3; /* 下标的方式就可以直接写 */
    /* start row / end row / start column / end column*/
}

3、justify-self、align-self 、place-self 设置单独一项单元格内容的对齐

.item-1  {
  justify-self: start;
}

place-self=<align-self justify-self>

END

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

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

相关文章

React 学习——Context机制层级组件通信

核心思路&#xff1a;&#xff08;适用于所有层级&#xff0c;不仅仅是爷孙 父子&#xff09; createContext方法创建一个上下文对象在顶层组件 通过Provider组件提供数据在底层组件&#xff0c;通过useContext钩子函数使用数据 import { createContext, useContext } from …

NSSRound#4 Team

[NSSRound#4 SWPU]1zweb 考察&#xff1a;phar的反序列化 1.打开环境&#xff0c;审计代码 1.非预期解 直接用file伪协议读取flag,或直接读取flag file:///flag /flag 2.正常解法 用读取文件读取index.php,upload.php的源码 index.php: <?php class LoveNss{publi…

Java面试八股之Spring DAO的作用

Spring DAO的作用 Spring DAO (Data Access Object) 是 Spring 框架的一个重要组成部分&#xff0c;它提供了一套用于简化数据访问操作的抽象层。Spring DAO 的核心目的是使开发人员能够更容易地处理数据访问相关的异常&#xff0c;并提供一致的异常处理机制&#xff0c;同时简…

翻译: 可视化深度学习神经网络一

这是一个随意书写的28*28像素、分辨率很低的数字 3 但你的大脑一看见就能轻松辨识出来 &#xff0c;我想要你好好欣赏这点 人脑能够毫无障碍地辨识是非常厉害的 我的意思是&#xff0c;这个、这个、还有这个&#xff0c;都能被识别为 3 即使前后图像的图形组成有很大差异 当你…

什么情况?我代码没了

前两天检视代码时&#xff0c;发现PR里面有两个提交的描述信息一模一样&#xff0c;于是我提出应该将这两个提交合并成一个&#xff0c;保持提交树的清晰。 1 先储存起来&#xff01; 而同事这时正在开发别的特性&#xff0c;工作区不是干净的&#xff0c;没法直接执行 git r…

c程序杂谈系列(职责链模式与if_else)

从处理器的角度来说&#xff0c;条件分支会导致指令流水线的中断&#xff0c;所以控制语句需要严格保存状态&#xff0c;因为处理器是很难直接进行逻辑判断的&#xff0c;有可能它会执行一段时间&#xff0c;发现出错后再返回&#xff0c;也有可能通过延时等手段完成控制流的正…

python生成二维码指向说明书

python生成二维码转向文档 python生成二维码指向说明书 import qrcode# 生成包含本地文档路径的二维码 def generate_qrcode(local_file_path):qr qrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRECT_L,box_size10,border4,)qr.add_data(local_file_pa…

为什么要做边界值测试?

边界值测试的理解 边界值测试&#xff08;Boundary Value Testing&#xff09;是一种常用的软件测试方法&#xff0c;它侧重于测试输入值的边缘或临界条件。这些边缘条件通常包括最小值、最大值以及接近这些最小值和最大值的值。边界值测试的基本思想是&#xff0c;许多软件错…

微信支付API列表

接入前准备 更新时间&#xff1a;2023.08.24 在正式接入微信支付App服务前&#xff0c;你需要进行以下准备步骤&#xff1a; 选择接入模式&#xff1a;普通商户或普通服务商申请参数&#xff1a;AppID、商户号App支付页面规范 #选择接入模式 商户需要判断自己公司注册区域…

SuperMap GIS基础产品FAQ集锦(20240729)

一、SuperMap iDesktopX 问题1&#xff1a;您好&#xff0c;想请教一下&#xff0c;白模可以调整颜色吗 11.2.0 【解决办法】 右键白模图层&#xff0c;制作单值专题图&#xff0c;即可调整白模颜色。 问题2&#xff1a;这边有份矢量数据&#xff0c;导入到桌面里面要放很大…

Node.js + Axios 上传附件到 Gitee 仓库指定 Release

在软件开发过程中&#xff0c;自动化发布流程是提升效率的关键环节之一。本文将介绍如何使用 Node.js 和 Axios 库来自动化地向 Gitee 仓库的最新版本中上传发布包。通过读取项目中的 package.json 文件&#xff0c;获取版本信息&#xff0c;并自动将构建好的包文件上传到 Gite…

我们的前端开发逆天了!1 小时搞定了新网站,还跟我说 “不要钱”

大家好&#xff0c;我是程序员鱼皮。前段时间我们上线了一个新软件 剪切助手 &#xff0c;并且针对该项目做了一个官网&#xff1a; 很多同学表示官网很好看&#xff0c;还好奇是怎么做的&#xff0c;其实这个网站的背后还有个有趣的小故事。。。 鱼皮&#xff1a;我们要做个官…

【gofar远为门锁】酒店智能门锁源码 对接收银CyberWinApp-SAAS本地化-未来之窗行业应用跨平台架构

通过写房卡按钮写房卡 一、查看门锁读卡器信息 二、玄武星辰查到对应名称 如何知道自己家门锁的app&#xff0c;使用未来之窗【玄武芯辰】查询 通过上面我看出叫做gofar 在【玄武芯辰】输入gofar&#xff0c;人工智能会提示app信息 三、设置门锁控制app 在上一步找到app&a…

web服务器配置-(apache+nginx)

⼀、web基本概念和常识 Web&#xff1a;为⽤户提供的⼀种在互联⽹上浏览信息的服务&#xff0c;Web 服务是动态的、可交互的、跨平台的和图形化的。 Web 服务为⽤户提供各种互联⽹服务&#xff0c;这些服务包括信息浏览服务&#xff0c;以及各种交互式服务&#xff0c;包括聊…

LinuxCentos中安装apache网站服务详细教程

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作…

【Opencv】色彩空间 color space

import os import cv2 img cv2.imread(os.path.join(.,dog.jpg)) # 在opencv中使用imread,读取的图片每个像素都是bgr色彩&#xff0c;蓝色&#xff0c;绿色&#xff0c;红色 cv2.imshow(img,img) cv2.waitKey(0) # 颜色空间转化&#xff1a;BGR2RGB img_rgb cv2.cvtC…

爱快路由的dns强制客户端代理真是个强大的功能

大致情况是这样的&#xff1a;同事说在linux服务器/etc/resolv.conf上随便写个IP地址【不在线的】&#xff0c;dns地址也能解析&#xff0c;让我帮忙查查。 我看了下也感觉纳闷&#xff0c;试了下不光在服务器上&#xff0c;我本地的pc随便设置了个dns解析也是一样的。 通过wir…

【黄啊码】零代码动手创建ModelScope Agent

还没开始学习&#xff0c;先来回复一下&#xff0c;什么是Agent Agent包含的模块 好了&#xff0c;开始发放干货&#xff1a; 1、创建通义千问API (新注册用户有一定的限时免费额度) 2、登录阿里云账号&#xff0c;打开 DashScope管理控制台&#xff0c;开通 DashScope灵积模…

C#网络连接:TCP/IP模式下的网络连接与同步

1&#xff0c;目的 为了测试局域网的消息同步&#xff0c;简单写了下TCP/IP模式的同步&#xff0c;参考这个帖子。 2&#xff0c;核心库部分 using System; using System.Net; using System.Net.Sockets; using System.Text;namespace Coldairarrow.Util.Sockets {/// <s…

【React】useEffect 钩子详解

文章目录 一、useEffect 概念二、useEffect 的基本用法1. 无依赖项2. 空依赖项数组3. 带依赖项的 useEffect 三、useEffect 的常见应用场景1. 数据获取2. 订阅与清除3. 动画与定时器 四、useEffect 的进阶用法1. 多个 useEffect2. 条件执行副作用 五、注意事项 useEffect 是 Re…