首页 > 其他分享 >grid 布局

grid 布局

时间:2023-11-12 15:35:48浏览次数:26  
标签:auto 布局 网格 1fr grid template columns

1fr 表示剩余的100% 空间

  • 1fr 的意思是“100%的剩余空间”, .25fr 意味着“25%的剩余空间”。当时当 fr 大于 1 的时候,则会重新计算比例来分配。
    repeat 重复的变量
  • grid-template-columns:repeat(2,1fr)=grid-template-columns:1fr 1fr;

Grid布局解决列等分问题

blog.csdn.net成就一亿技术人!

Grid布局解决列等分问题

实际需求:

在这里插入图片描述

通常我们一般会选择用flex布局来实现:

{
	display: flex;
	flex-direction: row;
	justify-content : space-between;
}

但是这样的方式会导致最后一行不沾满的情况下排列出现问题,像这样:-
在这里插入图片描述

其实我们是希望其他行等分,最后一行左对齐的效果的,如果一定要用flex来做,就必须写占位的div,让最后一行沾满,让每一行的个数相等,达到等分效果。但是在屏幕自适应,内容大小不确定且不固定一行显示多少个的情况下,这个逻辑就显得相对复杂,所以最后考虑用grid布局来实现。

之前有分享过grid的一些基础用法,这次的重点也不在基础上,所以直接跳过,直接上进入主题-
grid布局基础链接

首先要普及一下demo用到的一些概念

1、等分(fr)单位

Grid 带来了一个全新的值,称为等分单位,即 fr 。它允许你将容器可用空间分成你想要的多个等分空间。

{
	display: grid;
    grid-template-columns: 1fr 1fr 1fr;
}

结果:-
在这里插入图片描述

2、repeat()-
可以创建重复的网格轨道。这个适用于创建相等尺寸的网格项目和多个网格项目。repeat()接受两个参数:第一个参数定义网格轨道应该重复的次数,第二个参数定义每个轨道的尺寸-
所以下面两个写法结果相等

{
	display: grid;
    grid-template-columns: 1fr 1fr 1fr;
}

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

效果和上个例子一样

3、auto-fit (自适应)-
但是我们不希望固定行的次数,希望自动填充次数,充满外面的容器,可以用auto-fill或者auto-fit

{
    display: grid;
    grid-template-columns: repeat(auto-fit, 200px);
}

结果:-
在这里插入图片描述

现在这个网格已经可以通过容器的宽度来改变列的数量。但是貌似还不能完全满足需求-
它只是尽可能的把100px宽的盒子往一列里面塞,我们永远得不到我们想要的灵活性,因为它们很少会加起来正好等于容器的宽度,所以右边经常会留白。

4、minmax()-
可以通过minmax()函数来创建网格轨道的最小或最大尺寸。-
minmax()函数接受两个参数:第一个参数定义网格轨道的最小值,第二个参数定义网格轨道的最大值。可以接受任何长度值,也接受auto值。auto值允许网格轨道基于内容的尺寸拉伸或挤压-
所以在代码上改成:

 {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

在这里插入图片描述

所以现在列的宽度至少 200px 。但是,如果有更多的可用空间,网格将分配给每个列,因为列的值变成了一个等分单位 1fr ,而不是 200px

项目实际效果:

在这里插入图片描述

虽然css网格布局能轻松做到平均分配内容,但是实际实用上还是会有部分问题,比如要考虑浏览器的兼容,还有当只有一行数据没有参考行的时候,需要另外写兼容

用户和浏览器支持-
全球占85%网站流量的浏览器支持-
!(/i/ll/?i=20181115224240488.png在这里插入图片描述-
在这里插入图片描述

跳转到 Cubox 查看

标签:auto,布局,网格,1fr,grid,template,columns
From: https://www.cnblogs.com/ko25891wan/p/17827245.html

相关文章

  • JVM系列-第7章-对象的实例化内存布局与访问定位-cnblog
    title:JVM系列-第7章-对象的实例化内存布局与访问定位tags:-JVM-虚拟机categories:-JVM-1.内存与垃圾回收篇keywords:JVM,虚拟机。description:JVM系列-第7章-对象的实例化内存布局与访问定位。cover:'https://gitee.com/youthlql/randombg/raw/master/lo......
  • 【安卓13】谷歌原生桌面launcher3源码修改,修改桌面布局(首屏应用、小部件、导航栏、大
    前言近期接到一个关于谷歌EDLA认证的需求,我负责的是谷歌原生桌面布局的修改,通过研究源码,将涉及到了一些修改思路发出来,大家可以参考一下有没有对你有用的信息。主要修改内容有:1、搜索栏、底部导航栏未居中2、中部应用未按要求排布,详情请参考摹客3、在原生Google桌面未添加中......
  • DataGridView循环刷新、导出为xlsx文件,加载保存json配置文件
    Winform中的DataGridView控件DataSource属性绑定到数据库,实现循环更新,并且可导出xsxl文件、暂停等功能。注:使用第三方库有EPPlus(操作Eecel)、Newtonsoft.net(Json序列化/反序列化)、Guna2(控件库)winform布局如下:创建LoadConFigJson方法:启动应用程序时,加载读取配置文件 ......
  • DataGridView绑定数据之后如何修改列值
    privatevoiddataGridView1_CellFormatting(objectsender,DataGridViewCellFormattingEventArgse){if(e==null||e.Value==null||!(senderisDataGridView))return;DataGridViewview=(DataGridView)send......
  • gridview无数据行时显示表头的方法
     GridView当数据源为空时如何实现显示表头问题:asp.net2.0中引入的GridView控件当其数据源为空时(GridView.DataSource=null)不能显示出表头.解决:方法一:采用其EmptyTemplate来实现,模版中写一个静态的table;缺点:麻烦,每个GridVIew都需要设置一下.方法二:若数据源为DataTab......
  • 2.品牌浮动布局----纯文字
    品牌浮动布局,纯文字类型1<!DOCTYPEhtml>2<html>3<head>4<style>5.flex-container{6display:flex;7flex-wrap:wrap;8background-color:DodgerBlue;9}1011.flex-container>div{12background-color:#f1f1f1......
  • 1.商品左右布局
    实现商品左右布局,自动往下排列1<!DOCTYPEhtml>2<html>3<head>4<style>5.center{6display:flex;7flex-wrap:wrap;8margin:auto;9width:100vw;10border:1pxsolid#73AD21;11padding:5px;12}13......
  • numpy.meshgrid() in Python
    numpy.meshgrid函数用于从表示笛卡尔索引或矩阵索引的两个给定一维数组中创建矩形网格。网格函数是从MATLAB中得到启发的。语法numpy.asarray(arr,dtype=None,order=None)参数x1,x2,…,xn:array_like表示网格坐标的一维数组。indexing:{‘xy’,‘ij’},可选输出的笛卡尔(‘xy......
  • flex布局
    flex布局flex使用后部分行内和块级元素,均可设置宽高div{display:flex;width:400px;height:400px;background-color:orange;}span{width:100px;height:50px;......
  • 弹性盒子flex布局轻松实现瀑布流
    这里介绍下简单实现瀑布流的方法,适合一次性加载完的数据列表。如果是分页加载那就需要更复杂的计算了,但也可以在本案例的基础上进行扩展。关键代码:js部分:letcolumCount=2letgoodsList=this.properties.goodsList//创建跟列数相同的新列表letwaterFallArr=newArr......