美文网首页
grid布局入门

grid布局入门

作者: hengking | 来源:发表于2019-05-12 21:01 被阅读0次

之前我们讲过flex布局在实际项目中开发,今天我们来看看另一个新布局grid——网格布局

用过UI框架的童鞋一定对网格布局不陌生,大部分UI框架里都有。element layout布局ant design grid布局

本次介绍只会介绍一些常用属性

容器属性

  • grid布局
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .container{
            display: grid;
        }
    </style>
</head>
<body>
    <div class="container">
        <span>1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>7</span>
        <span>8</span>
        <span>9</span> 
    </div>
</body>
</html>

打开chrome调试我们看到


1.png

也可以变成行内 display:inline-grid

  • grid-template-columns && grid-template-rows

1.grid-template-columns定义列属性

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

2.grid-template-rows定义行属性

.container{
    display: grid;
    grid-template-rows: 100px 100px 100px;
}
grid-template-columns && grid-template-rows相关其他属性

(1).宽度高度可以使用百分比

.container {
  display: grid;
  grid-template-columns: 33.33% 33.33% 33.33%;
  grid-template-rows: 33.33% 33.33% 33.33%;
}
2.png

(2).repeat()
使用repeat()可以少些重复的宽高
例如:

.container {
  display: grid;
  grid-template-columns: repeat(3, 33.33%);
  grid-template-rows: repeat(3, 33.33%);
}

重复的值可以是多个数值

grid-template-columns: repeat(2, 100px 20px 80px);

将多个元素看成一个整体
(3).fr 关键字
类似于vw、vh 1vw为宽度的1% 1r可以看做是50%

  • grid-gap
    grid-gap为网格之间的宽度
    grid-gap属性是grid-column-gap和grid-row-gap的合并简写形式
grid-gap: <grid-row-gap> <grid-column-gap>;
 .container {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-gap: 20px 20px;
}
3.png
  • grid-template-areas 可以通过自命名来规定每行块
.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.png

上面的写法grid-template-areas里的内容名称可随便定义,可以相同,每行不限于个数

.container {
    display: grid;
    grid-template-columns: 100px 100px 100px;
    grid-template-rows: 100px 100px 100px;
    grid-template-areas: 'a a a a'
        'd d d d'
        'g g g g';
}
5.png

需要注意的是grid-template-columns和grid-template-rows定义时个数如果大于grid-template-areas定义每列的个数,会显示grid-template-columns定义的个数

.container {
    display: grid;
    grid-template-columns: 100px 100px 100px;
    grid-template-rows: 100px 100px 100px;
    grid-template-areas: 'a a'
        'd d'
        'g g';
}
6.png
  • grid-auto-flow

排列的顺序,默认row先行再列,column先列后行

.container {
    display: grid;
    grid-template-columns: 100px 100px 100px;
    grid-template-rows: 100px 100px 100px;
    grid-template-areas: 'a a a'
        'd d d'
        'g g g';
    grid-auto-flow: column;
}
7.png
  • place-items
    place-items为justify-itemsalign-items缩写
    对齐方式
    1.justify-items 一个内元素水平位置
    2.align-items 一个内元素垂直位置

  • place-content

place-items为justify-contentalign-content缩写

  1. justify-content grid块在容器的水平位置
  2. justify-content grid块在容器的垂直位置

内部属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .container {
            display: grid;
        }
        .item{
        }
    </style>
</head>
<body>
    <div class="container">
        <span class="item">1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
        <span>5</span>
        <span>6</span>
        <span>7</span>
        <span>8</span>
        <span>9</span>
    </div>
</body>
</html>
  • item定在网格哪个网格

grid-column-start属性:左边框所在的垂直网格线
grid-column-end属性:右边框所在的垂直网格线
grid-row-start属性:上边框所在的水平网格线
grid-row-end属性:下边框所在的水平网格线

.item {
  grid-column-start: 2;
  grid-column-end: 4;
}
8.png

span关键词 表示占几个网格

.item {
  grid-column-start: span 2;
}
  • grid-area

放在哪个区域(非常好用)

.container {
    display: grid;
    grid-template-areas: 'a b c'
                        'd e f'
                        'g h i'
}
.item{
    grid-area: e
}
9.png

把item-1放在了areas定义e的位置

  • place-self

place-self是align-self属性和justify-self属性的缩写

  1. justify-self 单格内容水平位置
  2. align-self 单格内容垂直位置
.container {
    display: grid;
    grid-template-areas: 'a b c'
                        'd e f'
                        'g h i'
}
.item{
   grid-area: e;
   place-self: center center;
}
10.png

一些常用的属性,大致学习了一遍,项目中使用更多的还是看文档比较全面

CSS Grid 网格布局教程 —— 阮一峰

相关文章

  • Grid布局入门

    Grid Line 分界线:组成网格结构,它们是垂直或者水平 Grid Track 网格的列或者行 Grid Ce...

  • grid布局入门

    之前我们讲过flex布局在实际项目中开发,今天我们来看看另一个新布局grid——网格布局 用过UI框架的童鞋一定对...

  • Grid布局相关属性

    定义display:grid或inline-grid开启子元素的Grid布局。 不同于flex布局,grid布局是...

  • 【融职培训】Web前端学习 第2章 网页重构16 grid布局

    一、grid布局概述 grid布局与flex布局对比 grid布局可以为网页提供更强大的布局功能,它与flex布局...

  • CSS Grid布局入门

    相信大家都比较熟悉flex布局了,最近有空研究了波grid布局,感觉虽然兼容性还不是太高,应用不是太普遍,但是功能...

  • CSS Grid 布局

    参考资料 CSS Grid 布局完全指南(图解 Grid 详细教程) CSS Grid 系列(上)-Grid布局完...

  • 2020-02-03

    六、栅格布局方式Grid 众人云,Grid布局是CSS中最强的布局方式。Grid 布局与 Flex 布局有一定的相...

  • css Grid布局

    Grid布局 css的布局方式主要有三种:float&position布局、flex布局、grid布局。 floa...

  • Grid布局参考资料

    张鑫旭-写给自己看的display: grid布局教程阮一峰-CSS Grid 网格布局教程 在Grid布局中,f...

  • grid 网格布局

    Grid网格布局 Grid布局是一个二维的布局方法,纵横两个方向总是同时存在。 作用在grid容器上作用在grid...

网友评论

      本文标题:grid布局入门

      本文链接:https://www.haomeiwen.com/subject/hojhaqtx.html