--前言
因为这个星期写一个小的项目用到flex布局和grid布局,虽然这两种布局都是兼容性都有问题,但是别急,我觉的以后肯定是会发展并且流行起来的,毕竟google大法好,而且这两个布局真的比一般的流布局快太多了(习惯性流布局+float+position),我觉得当你用完这两者布局之后会大量的减少position和float来布局,没错,是真的快乐,你不用永远都不知道是有多爽,是那种能够让你分泌足够多的多巴胺的快感。赶紧安利一波
 
在谈到这两者布局之前,我觉的我得先谈谈关于normal flow的概念
在我个人看来浏览器设计的时候,肯定是显示生活中的投影,你们想想我们在阅读文章的时候,我们的阅读顺序是怎么样的,肯定是从左到右,从上到下来依次阅读,因此这就是浏览器的css的流概念,打破流这样的顺序有以下几种
先说说关于脱离文档流的几种
  • float
  • absolute
  • fixed
这几种都是很常见脱离文档流的属性,我不知道relative算不算脱离文档流,因为实际上relative设置了top和left,还是会在流中占有位置(如果有错误欢迎大家指出),然后在说说我在display中发现的(实际上只是父元素遵循流布局,子元素不遵循流布局)
  • flex
  • grid
  • table
我只举例了几种常用的(因为我其他的我看了以下我貌似没用过)
一维的flex布局
在学习flex布局之前,我觉的应该暂时忘记正常的流布局,就当做是在玩乐高那种(说白了就是摆放子元素的位置),父容器有着怎样的属性可以规定子元素的位置,子元素有着怎样的属性来合理分配父容器的空间,所以我先来告诉大家两者的各有什么属性(父子不是绝对的,因为子元素也可以嵌套当做父元素)
1.1父容器的属性和属性值(这样比较容易理解)
  • display:flex 此处是直接让父容器下的布局变成了flex布局了,不在是流布局
  • flex-direction: row(default) | row-reverse | column | column-reverse  子元素的流向是咋样的 row(从左到右) column(从右到左) 其他两个顾名思义
  • flex-wrap: nowrap(default) | wrap | wrap-reverse  默认是不换行(nowrap) wrap是换行到下面 wrap-reverse反之
  • flex-flow: <‘flex-direction’> || <‘flex-wrap’> 是上面两个的简写
  • justify-content: flex-start(default) | flex-end | center | space-between | space-around | space-evenly;  首先说说这个的用处 这个属性的定义是子元素沿主轴的对齐的位置,flex布局的主轴要么是横的要么就是竖的,因此这个属性是为了定义子元素如何在父容器之中对齐的方式
我觉的这张图片就简洁明了,我说说后面三个吧,
space-between  这个属性值的意思是
子元素均匀分布在主轴上;第一项是在起始行,最后一项是在结束行,也就是说,假如如图所示还有第四个元素,会与中间那个平均分配第一个与最后一个之间的空间
space-around
子元素均匀分布在主轴上;就我个人认为子元素平均分配到的剩余空间,就相当于对自己设置了一个margin:0 (xx)px;
space-evenly
子元素的分布使得任何两个子元素之间的间距(以及到边缘的空间)相等,白话文就是视觉上平均的排布
align-items: stretch(default) | flex-start | flex-end | center | baseline;  完了,写到这里突然想起flex还有一个次轴 || 交叉轴(垂直主轴),但是别急[滑稽],因为整个flex布局中次轴相关的属性就这一个我给一张图就很清楚它的作用了

stretch(拉伸) 
看上图就知道是子元素拉伸来填充父容器
flex-start 
(默认是主轴是横轴 , 竖轴的话可以考虑头歪90°看[滑稽] 以下同理) 这里是竖轴的起始位置
flex-end 
当然就顾名思义啦!
center 
就是横轴(主轴)的那一条线对齐 (这个是常用的)
baseline(基线)
这个我觉得对于用英文来写网站有用吧(想想你们写的英语本的4条线),就有一个基线的概念,但是中文我就不清楚了,回头花生再去了解了解[滑稽]
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
这个属性可以这么来讲次轴的justify-content,教你们一个方法,就是把头歪90°就理解了[滑稽] 接下来放个图就理解了
父元素的属性有以下
  • display
  • flex-direction
  • flex-wrap
  • justify-content
  • align-items(交叉轴)
  • align-content(交叉轴的justify-content)
1.2子元素的属性与属性值
order: <integer>;/* default is 0 */  emmm....我觉的这个得具体场景来用,因为一般开发来说,我觉的一般为了容易理解直接就是按照子元素的依次顺序就行了,就我个人而言我觉的如果加上这个会有一点乱,但肯定有它的使用场景
以下三个属性很重要
flex-grow: <number>;/* default 0 */ as
我直接用我自己理解的吧(若有错误请指出) 这个属性的属性值是一个数字,我们可以理解为权重(以下的两个属性同理), grow顾名思义为增长,权重就是所分配到的比例为多大。举个例子,父容器剩余400px的宽度(除了子元素自身的宽度剩下的),有三个子元素,它们之前的flex-grow比例是 1:2:1 ,那么它们所获得增长(额外给的)的宽度分别为100px,200px,100px
如果你理解了上面这个权重的概念(也不难理解吧),接下来直接给个定义就知道了
flex-shrink: <number>;/* default 1 */
shrink(缩放) 必要时按照权重缩放 就是当子元素合起来的宽度大于父容器的宽度且父容器设置了nowrap,这时候就有用了(负数无效)
flex-basis: <length> | auto;/* default auto */
可以理解为尺寸,就是默认分配剩余空间之前的尺寸大小,可以是百分比、rem....,若没有设置此属性则按照width,优先级(flex-basis>width),如果设置为0,则不考虑内容周围的额外空间。如果设置为auto,则根据其flex-grow值分配额外空间
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
这个是上面的三个的简写默认值为0 1 auto (flex-shrinkandflex-basis) 是可选的
align-self: auto | flex-start | flex-end | center | baseline | stretch;
这允许为各个弹性项覆盖默认对齐(或由align-items指定的对齐)。 请参阅align-items说明以了解可用值(官话)。说白了就是设置子元素的align-items

子元素的属性与属性值

  • order
  • flex-grow
  • flex-shrink
  • flex-basis

请注意,float,clear和vertical-align对flex项目没有影响(没必要flex真的很强大)

不给demo的blog都是耍流氓,小花生本来是打算直接写一个导航栏的,但是我看了一下官方的demo我觉的更加的不错,因为那个网站得***,所以我就上传到我的github啦!(有点厚颜无耻)

此处是可以使用flex布局

最后说说关于我自己所所获的吧,flex布局真的是很灵活,对于一维的布局真的够用,你可以指定子元素的位置在哪,还有得到的一个想法就是,如果不是自己预期的那样就在外面包裹一层div,因为小花生时间有限只能够分享flex,下次就来分享一下关于自己对于grid布局(二维)的理解,因为是自己的处女作,如果有错误请指出,而且欢迎和花生交流喔~,如果觉的有用,请点个赞鼓励鼓励小花生吧~~
参考文章
 

小白入门篇:flex布局的更多相关文章

  1. 【Unity游戏开发】SDK接入与集成——小白入门篇

    一.简介 通常一款游戏开发到后期,一般都会涉及到第三方SDK的接入与集成,对于不熟悉SDK接入的同学来说,接SDK每次都是云里雾里,而熟悉SDK接入的同学又觉得不断地重复做接入SDK工作这样没有成就感 ...

  2. 【MySQL】Linux下mysql安装全过程——小白入门篇(含有问题详解)

    本次安装操作在申请的腾讯云上实现(版本:CentOS Linux release 7.4.1708 (Core) ). 根据教程实现(中途各种挖坑,填坑...),地址:http://www.runoo ...

  3. Python全栈工程师之从网页搭建入门到Flask全栈项目实战(1) - ES6标准入门和Flex布局

    1.简述 1.什么是ES6?ES6, 全称 ECMAScript 6.0,是 JavaScript 的下一个版本标准,2015年6月份发版.ES6的主要目的是为了解决 ES5 的先天不足. 2.了解E ...

  4. 阿里云学生机——Mysql配置---教小白入门篇

    首先,我的学生机默认配置为:CentOS 7.2 64位 + Tomcat 8 + Jdk8 + MySQL5.7.16 扩展:Linux 如何查看 MySQL 版本号----使用命令 mysql - ...

  5. Monkey小白入门篇

    一.monkey简介 中文名:猴子 职业:压力测试小工具 用途:对待测Android应用程序进行压力测试,测试app是否会crash Android官方描述: The Monkey is a prog ...

  6. 30分钟彻底弄懂flex布局

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由elson发表于云+社区专栏 目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布 ...

  7. CSS3弹性伸缩布局(下)——flex布局

    新版本 新版本的flex布局模型是2012年9月提出的工作草案,这个草案是由W3C推出的最新语法,这个版本立志于指定标准,让新式的浏览器全面兼容,在未来的浏览器更新换代中实现统一. 目前几乎大部分的浏 ...

  8. Flex布局及其应用

    什么是弹性盒子? 弹性盒子是 CSS3 的一种新的布局模式.相对于传统的依赖于display+position+float的布局方式,弹性盒子更加以有效的方式来对一个容器中的子元素进行排列.对齐和分配 ...

  9. 一劳永逸的搞定 flex 布局

    一劳永逸的搞定 flex 布局 寻根溯源话布局 一切都始于这样一个问题:怎样通过 CSS 简单而优雅的实现水平.垂直同时居中.记得刚开始学习 CSS 的时候,看到 float 属性不由得感觉眼前一亮, ...

随机推荐

  1. DOS程序员手册(十一)

    560页 版本5中新增加的子功能05h支持程序截获MS-DOS EXEC调用,并实 现自我装载.该子功能能实现内存的修补,如设置装载程序能接收的版本号 (通过SETVER设置的版本号)以及实现对装载程 ...

  2. windows上php环境下memcache和mongodb的安装

    mangodb安装 1. 下载mongodb的安装文件,我安装的windows 64位的,下载地址如下: https://fastdl.mongodb.org/win32/mongodb-win32- ...

  3. unity值得推荐的网址

    免费字体下载网站:http://www.dafont.com/ 免费声音文件下载网站:http://freesound.org/          http://incompetech.com/mus ...

  4. python pyinstaller 打包程序报错解决

    python打包exe,各种入坑 一.安装PyInstaller 1.安装pywin32 pip命令安装:pip install pywin32(推荐) 2.安装Pyinstaller pip命令安装 ...

  5. Nginx下配置codeigniter框架

    原来在winserver+Apache环境下工作良好的一个微信公众号后台迁移到阿里云(环境:Ubuntu 64位 | PHP5.4 | Nginx1.6)下却频出 404,403,只能访问CI rou ...

  6. UVa 1445 - Cubist Artwork

    统计正面看高度为i的竖条个数为cnt1[i], 统计侧面看高度为i的竖条个数为cnt2[i]: ans = sum( i * max( cnt1[i], cnt2[i] ) ); ( 1 <= ...

  7. jquery.color.js

    经过测试,可以使用. 2016-12-22  21:39:45 /*! * jQuery Color Animations v2.1.2 * https://github.com/jquery/jqu ...

  8. 省选算法学习-回文自动机 && 回文树

    前置知识 首先你得会manacher,并理解manacher为什么是对的(不用理解为什么它是$O(n)$,这个大概记住就好了,不过理解了更方便做$PAM$的题) 什么是回文自动机? 回文自动机(Pal ...

  9. vue前端开发那些事(1)

    如上图所示,用vue开发一个小型网站所涉及到的知识点.这只是前端部分已经这么多了.接下来我分解开来说. 1.Node 当我们开发vue项目的时候,首先要安装Node.js,那么我们即使当时不理解为什么 ...

  10. POJ2417 Discrete Logging | A,C互质的bsgs算法

    题目: 给出A,B,C 求最小的x使得Ax=B  (mod C) 题解: bsgs算法的模板题 bsgs 全称:Baby-step giant-step 把这种问题的规模降低到了sqrt(n)级别 首 ...