网格布局 grid(1)

目录

  • 网格布局 grid(1)

    • 实现方式
    • 对容器设置的属性
      • 行高与列宽的设置
      • 单元格的间距
      • 内容的位置
      • 表格在容器的位置
    • 兼容问题

网格布局 grid(1)

实现方式

display:grid 也可成为行内元素 display:inline-grid

tip:设为网格布局以后,容器内的子元素的 float 、 display:inline-block/table-cell , vertical-align 和 column-*等
各项设置属性都将失效

对容器设置的属性

行高与列宽的设置

grid-template-columns 定义每一列的列宽
grid-template-rows 定义每一行的行高

.container{
    display:grid;
    grid-template-columns:  100px 100px 100px;
    grid-template-rows: 100px 100px 100px;
}

grid中对属性赋提供了多种方式
上面可以使用33.3% , 33.3% , 33.3%
tip: 当重复的数值过多的时候还可以使用repeat()

repeat()

这个方法主要用于过多重复,简化代码使用
其接受两个参数

  1. 第一个为重复的次数
  2. 第二个为重复的值
.container{
    display:grid;
    grid-template-columns:  repeat(3,100px);/*repeat(3,33.3%)也是一种写法*/
    grid-template-rows: repeat(3,100px);
}

repeat()并不是只可以写重复的单个值,它也可以写成重复模式

例:

#contanner{
    display: grid;
    grid-template-columns:repeat(3,80px 20px 50px);
    grid-template-rows:90px;
}

auto-fill 关键字

有时单元格的大小是固定的,但是容器的大小不确定。如果希望每一列或者每一行容纳尽可能多的单元格,这时可以使用auto-fill关键字表示自动填充。

auto-fit 关键字

与上面auto-fit类似,但是有不同的地方(详见以后)

fr 关键字

为了方便表示比列,网格布局提供了fr关键字(fraction)的缩写

如果两列的宽度为1fr2fr,就表示后者是前者的两倍

minmax()函数

函数产生一个长度范围,表示长度就在这个范围,接受两个参数 最小和最大
.container{
    width:200px;
    display:grid;
    grid-template-columns: 1fr 1fr minmax(100px , 1fr);
    grid-template-rows: repeat(3,100px);
}

auto 关键字

例:grid-template-columns: 50px auto 50px;

第二列的宽度基本上是等于该列单元格最大宽度,除非在单元格内容设置了min-width,且这个值大于最大宽度。

单元格的间距

grid-row-gap 设置行与行的间隔(行间距)
grid-column-gap 设置列与列的间隔(列间距)

grid-gap 简写 (前缀 grid- 可去)

gap: <grid-row-gap> <grid-column-gap>;
如果grid-gap 省略了第二个值,浏览器会默认第二个值会等于第一个值

内容的位置

justify-items属性设置单元格内容的水平位置(左中右)
align-items 属性设置单元格内容的垂直位置(上中下)

属性如下:

  1. start:对齐单元格的起始边缘
  2. end:对齐单元格的结束边缘
  3. center:单元格内部居中
  4. stretch:拉伸、占满单元格的整个宽度(默认值)

place-items为简写

place-items : <align-items> <jsutify-items>

表格在容器的位置

justify-content 属性是整个内容区域在容器里面的水平位置(左中右)
align-content 属性是整个内容区域的垂直位置(上中下)

属性如下:

  1. start:对齐容器的起始边框
  2. end:对齐容器的结束边框
  3. center:容器内部居中
  4. stretch:项目大小没有指定时,;拉伸占据整个网格容器。
  5. space-around:每个项目两侧的间隔相等,所以,项目之间的间隔比项目与容器边框的间隔大一倍
  6. space-bewteen: 项目与项目的间隔相等,项目与容器边框之间没有间隔
  7. space-evenly: 项目与项目之间的间隔相等,项目与容器边框之间也是同长度的间隔

place-content 简写

place-content : <align-content> <justify-content>

grid-auto-columns/rows

有时,一些项目的指定位置,在现有网格的外部,比如网格只有三列,但是某一个项目指定在第五行。这时,浏览器会自动生成多余的网格,以便放置项目
打开示例代码

```css
#container{
display: grid;
grid-template-columns: 100px 100px 100px;
grid-template-rows: 100px 100px 100px;
grid-auto-rows: 50px;
}

.item {
font-size: 2em;
text-align: center;
border: 1px solid #e5e4e9;
}

.item-1 {
background-color: #ef342a;
}

.item-2 {
background-color: #f68f26;
}

.item-3 {
background-color: #4ba946;
}

.item-4 {
background-color: #0376c2;
}

.item-5 {
background-color: #c077af;
}

.item-6 {
background-color: #f8d29d;
}

.item-7 {
background-color: #b5a87f;
}

.item-8 {
background-color: #d0e4a9;
grid-row-start: 4;
grid-column-start: 2;
}

.item-9 {
background-color: #4dc7ec;
grid-row-start: 5;
grid-column-start: 3;
}
```

上面对grid-auto-columns/rows的赋值,那些值代表着网格线,columns是从左到右的算起,rows是从上到下算起(详细请看);

兼容问题

目前各大浏览器已经可以有效的支持grid属性,但是这个属性对于低版本浏览器不支持,对于IE浏览器不支持,但是目前的IE Edge新版也是可以支持这项属性。

下图为各大浏览器支持情况:

本文参考http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html

原文地址:https://www.cnblogs.com/strongtyf/p/12111181.html

时间: 2024-11-03 14:52:41

网格布局 grid(1)的相关文章

CSS多列布局Multi-column、伸缩布局Flexbox、网格布局Grid详解

新css属性为我们提供了更加便捷的网页布局方式.来自微软的thomas lewis将带你认识去Grid Alignment,Flexibox Box以及Multi-column Layout这三大领域. 这篇文章最早出现在the April 2012 issue (226)这期的.net杂志上-这杂志是面向网页设计者以及开发者,全球销量最高的杂志. 按照以往来说,用CSS来布局看起来总是一样非常繁杂的工作.然而,随着一个个新标准的推出,网页设计者已经能够实现非常轻松地进行布局工作了. 主流的浏览

CSS3 网格布局(grid layout)基础知识 - 隐式网格自动布局(grid-auto-rows/grid-auto-columns/grid-auto-flow)

网格模板(grid-template)属性及其普通写法(longhands)定义了一个固定数量的轨道,构成显式网格. 当网格项目定位在这些界限之外,网格容器通过增加隐式网格线生成隐式网格轨道. 这些隐含的和显式的网格线一起构成隐式网格(implicit grid). 隐式网格轨道的尺寸由网格自动行(grid-auto-rows)和网格自动列(grid-auto-columns)属性来确定. 网格自动流(grid-auto-flow)属性用来控制无明确位置的网格项的自动定位(auto-placem

网格布局 grid

推荐阅读:http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html 1. 启动网格布局 div { display: grid; } 启动后,子元素的float.display: inline-block.display: table-cell.vertical-align和column-*等设置都将失效 2. 行列高度 div { display: grid; grid-template-columns: 50px 100

一个简单的响应式横向网格布局框架Responsive Grid System

网页设计中有一个怎么也绕不开的问题,那就是布局问题.一般来说,一个div可能会分割成很多部分,同样是横向分割成两部分,但是在不同的项目中,我们可能会用不同的css代码,网格系统其实就是为这一类似的问题提供一个统一的解决办法. 网格布局有很多,但是有很多非常复杂,往往无法二次开发.Responsive Grid System是国外的一个网站,他们提供了一种非常简单的实现.其实每一个前端开发人员都可以写出这样的框架,但是,从头开始也许会让很多人动力不足.这个框架代码很简单,对我而言,采用它的原因仅仅

python之tkinter使用-Grid(网格)布局管理器

1 # 使用tkinter编写登录窗口 2 # Grid(网格)布局管理器会将控件放置到一个二维的表格里,主控件被分割为一系列的行和列 3 # stricky设置对齐方式,参数N/S/W/E分别表示上.下.左.右 4 # columnspan:指定控件跨越多列显示 5 # rowspan:指定控件跨越多行显示 6 # padx.pady分别设置横向和纵向间隔大小 7 8 import tkinter as tk 9 10 root = tk.Tk() 11 root.title("请登录&quo

Grid网格布局

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>网格布局</title> <style> .container { display: grid; grid-template-columns: 100px 100px 100px 100px 100px: grid-template-rows: 100px 100px 100px 10

网格布局之grid

1 <!DOCTYPE HTML> 2 <!DOCTYPE html> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 6 <title> 7 网格布局 8 </title> 9 <link rel="stylesheet" hre

CSS网格布局(Grid)教程

一.概述 CSS网格布局(Grid)是一套二维的页面布局系统,它的出现将完全颠覆页面布局的传统方式. 首先来介绍几个概念: 想象一个三行三列的布局,网格线就是构成网格所有的线条,三行三列的布局每行就会有4条网格线. 网格轨道就是相邻两条平行的网格线之间的部分. 和flex布局一样,他会有父容器和子项目,在这儿我们称为网格容器和网格项. 接下来,我们从网格容器到网格项的各个基本属性来介绍网格布局. 二. 网格容器 将属性 display 值设为 grid 或 inline-grid 就创建了一个网

CSS Grid 网格布局教程

一.概述 网格布局(Grid)是最强大的 CSS 布局方案. 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局.以前,只能通过复杂的 CSS 框架达到的效果,现在浏览器内置了. 上图这样的布局,就是 Grid 布局的拿手好戏. Grid 布局与 Flex 布局有一定的相似性,都可以指定容器内部多个项目的位置.但是,它们也存在重大区别. Flex 布局是轴线布局,只能指定"项目"针对轴线的位置,可以看作是一维布局.Grid 布局则是将容器划分成"行"