--前言
因为这个星期写一个小的项目用到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. 《Cracking the Coding Interview》——第9章:递归和动态规划——题目1

    2014-03-20 02:55 题目:小朋友跳台阶,每次跳1层或2层,那么跳N层总共有多少种跳法. 解法:斐波那契数列. 代码: // 9.1 A child can run up the stai ...

  2. Python 实现随机打乱字符串

    from random import shuffle def shuffle_str(s): # 将字符串转换成列表 str_list = list(s) # 调用random模块的shuffle函数 ...

  3. Oracle 自增写给自己的

    首先咱先建一张表: CREATE TABLE example( ID Number(4) NOT NULL PRIMARY KEY, NAME VARCHAR(25), PHONE VARCHAR(1 ...

  4. Leetcode 661.图片平滑器

    图片平滑器 包含整数的二维矩阵 M 表示一个图片的灰度.你需要设计一个平滑器来让每一个单元的灰度成为平均灰度 (向下舍入) ,平均灰度的计算是周围的8个单元和它本身的值求平均,如果周围的单元格不足八个 ...

  5. Java 冒泡排序与快速排序的实现

    冒泡排序   基本特点 (1)基于交换思想的排序算法  (2)从一端开始,逐个比较相邻的两个元素,发现倒序即交换.      (3)一次遍历,一定能将其中最大(小)的元素交换到其最终位置上 排序过程模 ...

  6. FOJ Problem 1016 无归之室

     Problem 1016 无归之室 Accept: 926    Submit: 7502Time Limit: 1000 mSec    Memory Limit : 32768 KB  Prob ...

  7. C#程序怎么写,效率高

    文章:改善C#程序,提高程序运行效率的50种方法 文章:编写高效率的C#代码

  8. SQL查询oracle的nclob字段

    使用CONTAINS关键字查询NCLOB字段 SELECT  FORMATTED_MESSAGE    FROM     TBL_LOG WHERE     CONTAINS(FORMATTED_ME ...

  9. 国际语言代码 Language Code

    语言代码 语言名称 af 南非语 af-ZA 南非语 ar 阿拉伯语 ar-AE 阿拉伯语(阿联酋) ar-BH 阿拉伯语(巴林) ar-DZ 阿拉伯语(阿尔及利亚) ar-EG 阿拉伯语(埃及) a ...

  10. 小L的占卜

    小L的占卜 题目描述 小 X 的妹妹小 L 是一名 XXX 国的占卜师,她平日的工作就是为 X 国进行占卜. X 国的占卜殿中有一条长度为 NNN 米的走廊,先人在走廊的每一米都放置了一座神龛,第 i ...