自从用习惯flex布局我基本已经不怎么使用float了。
现在又出现了grid布局,就像flex的升级版,布局上十分强大。
主要属性:
grid-template-columns://竖向排列
grid-template-rows://横向排列
首先比较一下flex和grid实现自适应九宫格,高度800px,宽度适应:

flex

超过一层后样式就复杂了,特别是边框的处理有点复杂。(方法很多,不一一去展示了)。

<html>
<head>
<style type="text/css">
.box {
padding: 10px;
padding-bottom: 0;
padding-right: 0;
display: flex;
flex-direction: column;
height: 800px;
width: calc(100vw - 20px);
background-color: #000;
}
.content {
display: flex;
margin-bottom: 10px;
flex: 1
}
.b {
flex: 1;
margin-right: 10px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="box">
<div class="content">
<div class="b">1</div>
<div class="b">2</div>
<div class="b">3</div>
</div>
<div class="content">
<div class="b">4</div>
<div class="b">5</div>
<div class="b">6</div>
</div>
<div class="content">
<div class="b">7</div>
<div class="b">8</div>
<div class="b">9</div>
</div>
<div>
</body>
</html>

 

 
flex

grid

真的好用!方法也可以有很多,相对flex而言写起来简单多了哈

<html>
<head>
<style type="text/css">
.content {
padding: 10;
display: grid;
grid-template-columns: auto auto auto;
grid-template-rows: auto auto auto;
height: 780px; //padding 有个20的宽度
background-color: #000;
grid-gap: 10px;
}
.b {
background-color: yellow;
}
</style>
</head>
<body>
<div class="content">
<div class="b">1</div>
<div class="b">2</div>
<div class="b">3</div>
<div class="b">4</div>
<div class="b">5</div>
<div class="b">6</div>
<div class="b">7</div>
<div class="b">8</div>
<div class="b">9</div>
</div>
</body>
</html>

效果图:

 
grid
接下来就只讲grid了。

常用属性,属性很多,主要练习下常用的一些属性:

  • grid: 1fr 1fr 1fr/1fr 1fr 1fr ; 高度 高度 高度/(一)列 (二)列 (三) 列
grid: 100px 200px 100px /1fr 1fr 1fr;

等于:

grid-template-rows: 100px 200px 100px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-areas: none;
grid-auto-flow: initial;
grid-auto-rows: initial;
grid-auto-columns: initial;
  • grid-template-columns: 100px 100px; //有几列,每列有多大

  • grid-template-rows :100px 100px; //有几行,每行有多大

  • grid-template: [] '1 1 1' 100px [] /auto 50px auto;
    //[名称] '几列' 这行的高度 [名称] /三列对应的三个宽度
    //(名称可为空 '1 1 1' 就是均分三列)

  • grid-gap: 10px 20px ;//上下间隔10px,左右间隔20px

  • grid-gap: 10px;//上下左右间隔10px

  • grid-column-gap

  • grid-row-gap

  • justify-items:
    start:将内容对齐到网格区域(grid area)的左侧
    end:将内容对齐到网格区域的右侧
    center:将内容对齐到网格区域的中间(水平居中)
    stretch:填满网格区域宽度(默认值)

  • align-items:
    start:将内容对齐到网格区域(grid area)的顶部
    end:将内容对齐到网格区域的底部
    center:将内容对齐到网格区域的中间(垂直居中)
    stretch:填满网格区域高度(默认值)

  • justify-items:
    start:将网格对齐到 网格容器(grid container) 的左边
    end:将网格对齐到 网格容器 的右边
    center:将网格对齐到 网格容器 的中间(水平居中)
    stretch:调整 网格项(grid items) 的宽度,允许该网格填充满整个 网格容器 的宽度
    space-around:在每个网格项之间放置一个均匀的空间,左右两端放置一半的空间
    space-between:在每个网格项之间放置一个均匀的空间,左右两端没有空间
    space-evenly:在每个栅格项目之间放置一个均匀的空间,左右两端放置一个均匀的空间

  • align-content:
    start:将网格对齐到 网格容器(grid container) 的顶部
    end:将网格对齐到 网格容器 的底部
    center:将网格对齐到 网格容器 的中间(垂直居中)
    stretch:调整 网格项(grid items) 的高度,允许该网格填充满整个 网格容器 的高度
    space-around:在每个网格项之间放置一个均匀的空间,上下两端放置一半的空间
    space-between:在每个网格项之间放置一个均匀的空间,上下两端没有空间
    space-evenly:在每个栅格项目之间放置一个均匀的空间,上下两端放置一个均匀的空间

这是主体上常用的一些属性了,不想做文档解释了。讲属性的文章挺多的,主要就是练习,多用用。

原文:https://www.jianshu.com/p/41c038baf994

强大的display:grid的更多相关文章

  1. display:grid

    使用grid布局 参考资料http://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html flex布局还没完全用利索,但这个grid布 ...

  2. CSS3中的display:grid网格布局介绍

    1.网格布局(grid): 它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局; 2.基本概念: 容器和项目,如图所示: <div class="content&qu ...

  3. 前端CSS3布局display:grid用法

    前端CSS3布局display:flex用法 1. 先附上代码 点击查看代码 <!DOCTYPE html> <html> <head> <meta char ...

  4. 关于display:grid layout

    .wrapper { display: grid; grid-template-columns: repeat(3, 1fr); grid-gap: 10px; grid-auto-rows: min ...

  5. display:grid

    <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8" ...

  6. css:display:grid布局

    简介 CSS Grid布局 (又名"网格"),是一个基于二维网格布局的系统,主要目的是改变我们基于网格设计的用户接口方式.如我们所知,CSS 总是用于网页的样式设置,但它并没有起到 ...

  7. [转]使用CSS3 Grid布局实现内容优先

    使用CSS3 Grid布局实现内容优先  http://www.w3cplus.com/css3/css3-grid-layout-module.html 本文由大漠根据Rachel Andrew的& ...

  8. grid栅格布局

    前面的话 Grid布局方式借鉴了平面装帧设计中的格线系统,将格线运用在屏幕上,而不再是单一的静态页面,可以称之为真正的栅格.本文将详细介绍grid布局 引入 对于Web开发者来说,网页布局一直是个比较 ...

  9. CSS Grid基于网格的二维布局系统(详细教程)

    .grid-wrap{ display: inline-flex; padding: 20px; background: #f4f4f4; word-break: initial; } .handle ...

随机推荐

  1. 2019_软工实践_Beta(1/5)

    队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述  检测网站不合理的地方,给组员定下相应时间进度的安排 展示GitHub当 ...

  2. 解读 | 你真正理解什么是Cloud Native吗?

    你能做到每周.每天甚至每个钟头向客户发布新特性吗?新加入的开发者能够在他们工作的第一天甚至面试阶段就能部署代码吗?部署新员工的代码后,你能因为确信应用程序运行正常而安然入睡吗?建立快速发布机制,包括支 ...

  3. 上传图片 展示进度条 bootstrap

    <!DOCTYPE html><html><head> <meta charset="utf-8"> <title>Bo ...

  4. 用Java和Nodejs获取http30X跳转后的url

    用Java和Nodejs获取http30X跳转后的url 转 https://calfgz.github.io/blog/2018/05/http-redirect-java-node.html 30 ...

  5. 【翻译】Flink Table Api & SQL —Streaming 概念 ——时间属性

    本文翻译自官网: Time Attributes   https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/table/str ...

  6. Spring MVC -- 验证器

    输入验证是Spring处理的最重要Web开发任务之一.在Spring MVC中,有两种方式可以验证输入,即利用Spring自带的验证框架,或者利用JSR 303实现.本篇博客将介绍这两种输入验证方法. ...

  7. [LeetCode] 317. Shortest Distance from All Buildings 建筑物的最短距离

    You want to build a house on an empty land which reaches all buildings in the shortest amount of dis ...

  8. node 单例

    ScriptManager.getInstance = function () { if (_instance != null) { return _instance; } else { return ...

  9. c#通过socket判断服务器连接是否正常

    判断Socket是否连接上,需要通过发包来确认. 之前确认都是调用调用socket的connected属性,然而该属性是上次的连接是否成功的结果,不及时. // 检查一个Socket是否可连接 pri ...

  10. PHP设计模式 - 合成模式

    组合模式(Composite Pattern)有时候又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系.组合模式使得用户对单个对象和组合对象的使用具有一致性. 常见使用场景: ...