Vue项目中grid布局的应用

2023-11-11

Vue项目中grid布局的应用

一、使用背景

Flex布局是轴线布局,Grid 布局则是将容器划分成“行"和“列”,可以看作是二维布局,Grid布局远比 Flex布局强大。(存在兼容性问题)

二、常见属性

demo代码

html

<div id="app_container">
    <div class="box-item" v-for="(item, index) in 10" :key="index"
    :style="{background:colors[index]}">
      {{ index + 1 }}
    </div>
  </div>

data

colors:['#FF4728','#FF9223','#449B43','#006EC6','#C57FB0',
        '#FDD29A','#B8A67C','#CEE0A8','#43BDEF','#F3355E']

css

#app_container{
    width:400px;
    height:400px;
    padding:10px;
    border:5px solid #87C5ED;
    background:#FFE9CC;
    display:grid;
    /* grid-template-columns:100px 100px 100px; */
    grid-template-columns:repeat(3,100px);
    .box-item{
        color:#fff;
        font-size:24px;
        padding:10px 2px;
    }
}

1. grid-template-*属性

1.1 columns列相关配置

1.1.1 指定列的个数

grid-template-columns指定列的个数,不填写则自动分配,此时每个模块的高度会自适应。

① 下面这段代码的意思是将div划分为3列,每列的宽度为100px

/* grid-template-columns:100px 100px 100px; */
    grid-template-columns:repeat(3,100px);/**作用同上*/

效果图如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/c08189c892c24a82929fcfef60811bb2.png
② 当划分为4列时,高度也会自适应增长,效果图如下:

grid-template-columns:repeat(4,100px);

在这里插入图片描述

1.1.2 auto-fill属性:自动填充

当单元格的大小是固定的,但是容器的大小不确定,这个属性就会自动填充
设置列宽100排序,列的个数不固定

grid-template-columns: repeat(auto-fill,100px);

效果如下:
在这里插入图片描述

1.1.3 fr(比例关系)

grid-template-columns:repeat(4,1fr); // 宽度平均分成四等份 
grid-template-columns:1fr 2fr 3fr;   // 列宽这样是分成6份各占 1 2 3 份 效果如下图 

① 分为4列,等比例布局
在这里插入图片描述
② 分为3列,布局分别为1份,2份,3份。
在这里插入图片描述

1.1.4 minmax()

minmax() 函数产生一个长度范围,表示长度就在这个范围之中,它接受两个参数,分别为最小值和最大值

/**表示最小列宽150px,最大列宽1fr*/
grid-template-columns: 1fr minmax(150px,1fr);  // 第一个参数最小值,第二个最大值

效果如下图:(由于最小150px,下图区域宽度400px,所以最多容纳两列)
在这里插入图片描述

1.1.5 auto(由浏览器自己决定长度)

/**表示分为3列,第1列和第3列宽度100px,中间列列宽自适应*/
grid-template-columns: 100px auto 100px;

效果图如下:
在这里插入图片描述

1.1.6 网格线 格式:[网格线名] 列宽 [网格线名]

可以用方括号定义网格线名称,方便以后给盒子定位使用

/**组成格式:[网格线名] 列宽 [网格线名],有几个列宽表示分隔为几列*/
grid-template-columns: [c1] 100px [c2] 100px [c3] 100px [c4];

效果图如下:
在这里插入图片描述
加上间隙gap后效果图如下:
请添加图片描述

1.2 rows行的相关配置

1.2.1 指定行的高度

grid-template-rows指定列的个数,不填写则自动分配,此时每个模块的高度会自适应。

grid-template-rows:50px 100px 150px;

效果如下:
在这里插入图片描述

2. grid-gap / grid-column-gap(间隙)属性

使用方法
列间隙

column-gap:10px;

在这里插入图片描述

行间隙

column-gap:10px;

在这里插入图片描述
行列间隙
以上两行代码可以用下面的一行代码来代替:

gap:10px;

在这里插入图片描述

3. grid-template-areas属性(定义区域名)

grid-template-areas用于定义区域,一个区域由单个或多个单元格组成,名字相同则表示在一个区域
网格元素需要指定放置于哪一个grea-area区域中,不然会不生效

① 基础用法

grid-template-areas:'a b c'
                    'd e f'
                    'g h i';

在这里插入图片描述

拓展延伸:将”test“ div放到a区域
在这里插入图片描述

② 相同名称区域

    grid-template-areas:'a a a'
                        'b b b'
                        'c c c';

在这里插入图片描述

如果两个div指定同一个区域的话,则第二div会把第一个div覆盖掉

在这里插入图片描述

③ 不需要利用区域

区域不需要利用,则用点’.'表示。
区域的命名会影响到网格线,每个区域的起始网格线会自动命名为区域名-start,终止网格线会自动命名为区域名-end

grid-template-areas:
    "one one two"
    "one one two"
    ". . four";

在这里插入图片描述

4. grid-auto-flow属性

划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是"先行后列".即先填满第一行,再开始放入第二行(就是子元素的排放顺序)

4.1 列 纵向排序

grid-auto-flow: column;

在这里插入图片描述

4.2 行 横向排序

grid-auto-flow: row;

在这里插入图片描述

4.3 行 row dense

row dense属性值表示换行时留下的空间可以由下面的元素填补上去;
下面这个例子就是将3,4元素向上移动了

grid-auto-flow: row dense;

在这里插入图片描述

5. 水平方向justify-items/ 垂直方向align-items

justify-items和align-items的缩写是place-items : start end

justify-self属性设置单元格内容的水平位置(左中右),和justify-items属性用法完全一致,但只作用于单个项目(水平方向);
align-self属性设置单元格内容的垂直位置(上中下),和align-items属性用法完全一致,但只作用于单个项目(垂直方向);

justify-itemsalign-items选项为:

justify-item:start | end | center | stretch

justify-contentalign-content选项为:

/** 水平方向 */
justify-content: start | end | center | stretch | space-around | space-between | space-evenly;   
/** 垂直方向 */
align-content: start | end | center | stretch | space-around | space-between | space-evenly;     

ex1:justify-items:center;
在这里插入图片描述
ex2:justify-content:space-between;
在这里插入图片描述

6. grid-auto-columns / grid-auto-rows属性

当设置的元素超过整体区域范围后,这个属性可以用来设置多出来的项目宽和高

/**设置多出元素的高*/
grid-auto-rows:50px;

在这里插入图片描述
在这里插入图片描述

7. grid-column-start / grid-column-end grid-row-start / grid-row-end

7.1 指定项目具体位置

指定item的具体位置,依据为在哪根网格线

/**表示从第一根网格线开始,以第三根网格线终止。*/
grid-column-start:1;
grid-column-end:3;

上面两行的缩写形式如下:

grid-column: 1 / 3;

在这里插入图片描述

7.2 指定项目所占的格数,跨列数

    grid-column-start: 1;
    grid-column-end: 3;
    grid-row-start: 1;
    grid-row-end: 3;

上面四行可以用grid-area缩写

形式:grid-row-start / grid-column-start / grid-row-end / grid-column-end

  grid-area:1/1/3/3;

在这里插入图片描述
行从第2行网格线开始到第4行网格线结束;列从第1列网格线开始到第3列网格线结束
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue项目中grid布局的应用 的相关文章

随机推荐

  • thymeleaf模板报红

    问题 解决 忽略所有警告或错误 1 或者忽略Thymeleaf有关警告或错误 2 2 取消这个勾 关闭IDEA对于thymeleaf的数据验证选项
  • BP神经网络的详细推导

    文章目录 概述 一 神经元模型 二 感知机与多层网络 三 误差逆传播算法 四 全局最小与局部最小 五 BP算法的改进 1 引入动量法 2 尺度变换法 3 自适应学习率调整法 六 BP神经网络的训练 1 产生数据样本集 2 确定网络的类型和结
  • QMap倒序遍历

    for QList
  • 中英文期刊卷号和期号

    一 中文期刊 国内期刊为了给期刊排序方便查询 都按照时间分卷和期 卷是期之上的时间分类 卷是从创刊开始按照年度排序的编号 期是这一年中按时间排序的编号 比如2017年3月发表的论文 按照卷号期号排可能就是 第23卷第3期 国内对期刊卷号期号
  • 【简述】VSCode使用ssh连接linux服务器并安装使用jupyter notebook/Anaconda/pytorch

    1 通过管理员获得该Unbutu服务器的IP 账号 密码 2 打开VSCode 安装扩展Remote SSH 3 在VsCode左侧边栏点击Remote Explorer使用该扩展 新建Remote 输入IP 账号并连接 4 在上方弹出窗口
  • Unix/Linux编程:fork()进程详解

    文章目录 理论 进程 fork wait exec fork 实践 验证 fork函数被调用一次但返回两次 子进程和父进程之间不共享数据空间 父子进程间的文件共享 fork的内存语义 同步信号以规避 fork 之后的竞争条件 fork 解决
  • Flutter切换页面后保持状态不刷新

    1 使用IndexedStack实现 IndexedStack继承自Stack 它的作用是显示第index个child 其它child在页面上是不可见的 但所有child的状态都被保持 所以这个Widget可以实现我们的需求 我们只需要将现
  • PointNet介绍

    论文 PointNet Deep Learning on Point Sets for 3D Classification and Segmentation 代码 https github com charlesq34 pointnet 0
  • 【无标题】C++课程学习笔记(南科大于仕琪老师)

    这几天我突然想写CSDN了 前段时间我打开了我的CSDN 发现我其实只写了3篇文章 其实写CSDN是一个好习惯 我之前这么多年都没有发现这个好习惯 现在我要求自己只有有所心得就应该写下来 一方面与大家共勉 另一方面通过和大家的交流我希望自己
  • UDS诊断之负响应码

    1 0x10服务 服务诊断会话控制 否定响应码 NRC 定义 Defination 0x12 服务器支持诊断请求中的服务标识符 Service ID 但不支持收到的子功能参数时 回复此编码 0x13 请求服务的诊断报文中的数据长度与定义不一
  • Linux虚拟化网络之路由转发实战

    一 Linux路由配置 如果要在不同网段直接通讯 需要添加路由 Linux添加路由命令如下 route add del net host target netmask Nm gw Gw dev If add 添加一条路由规则 del 删除一
  • 简单的shell文件编写:拷贝特定的可执行文件到某特定目录下。

    写这个文件夹是为了把自己在fedora9上交叉编译的可执行文件复制到arm板上便于执行 这样每次都不用输入一长串文件名了 调用这个脚本 它会自动 拷贝ARM可执行文件到指定的目录下 例子是 home stephen stephenshare
  • 平均年薪30万的深度学习算法工程师,正面临100万的人才缺口

    深度学习的突破极大推动了人工智能的发展 并广泛应用在计算机视觉 自然语言处理等领域中 谷歌 百度的IDL 腾讯的AI lab 华为等都在重金布局人工智能 同时 以深度学习为核心技术的人工智能企业不断涌现 我们耳熟能详的有 格林深瞳 商汤科技
  • 【IPv6】设置win10和win11允许访问IPv6站点

    设置win10和win11允许访问IPv6站点 步骤如下 1 打开控制面板 2 点击 网络和 Internet 3 点击 网络和共享中心 4 点击连接的网络 5 点击 属性 6 把 Internet 协议版本 6 TCP IPv6 选项勾上
  • Android调用环信的EaseUI V3.0发送语音不成功的问题。

    这两个在集成环信实现IM功能 在开发过程中遇到一个问题 发送文字 表情 图片 位置都是正常的 但是语音就是一直发送不成功 并且只是在第一次安装app登录账号之后发送语音的时候才会出现发送不成功的问题 如果把app杀掉重新打开或者退出账号重新
  • 【华为OD机试】最大股票收益【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 假设知道某段连续时间内股票价格 计算通过买入卖出可获得的最大收益 输入一个大小为 n 的数 price p1 p2 p3 p4 pn pi 是第i天的股票价格 pi
  • Quartus如何生成顶层文件里的小模块,解决波形图无法导入输入输出

    生成模块 有这么个模块叫SRAM 就可以在顶层文件里找到了 解决波形图无法导入输入输出 统一名字 文件夹名字和 qpf文件一致和顶层文件名字一样 还和波形图文件一样
  • nodejs npm run build 打包压缩zip文件

    步骤1 安装 npm install archiver D 步骤2 根目录下新建zip js 内容如下 const fs require fs const archiver require archiver 创建文件输出流 let outp
  • This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.

    困难 是智者的机遇 是人与人差距所在 疑惑 D pytools anaconda PyCharm 2018 3 5 helpers pycharm matplotlib backend backend interagg py 62 User
  • Vue项目中grid布局的应用

    Vue项目中grid布局的应用 一 使用背景 二 常见属性 1 grid template 属性 1 1 columns列相关配置 1 1 1 指定列的个数 1 1 2 auto fill属性 自动填充 1 1 3 fr 比例关系 1 1