神奇的flex布局

在最近的学习中,接触到了flex布局,发现flex很好用,所以今天决定写一写关于flex的一些内容。

在之前的探索中,当一列有很多元素的时候,我通常是通过修改元素的百分比来进行排布。但是当某些时候(例如需要给他们添加等间距时会撑到下一行,或者定位到一定的位置)会很难办。

这时候就要用到

flex

先来看看这个整体属性。它的语法如下

flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;

来看看各个属性都是什么意思吧

属性 描述
flex-grow 一个数字,规定项目将相对于其他flex的项目进行扩展的量
flex-shrink 一个数字,规定项目将相对于其他flex的项目进行收缩的量
flex-basis 项目的长度。合法值:"auto"、"inherit"或其中一个之后跟"%"、"px"、"em"或任何其他长度单位的数字。
auto 与 1 1 auto 相同
none 与 0 0 auto 相同
initial 设置该属性为它的默认值(0 1 auto)
inherit 从父元素继承该属性

看完这个表之后,我们来细讲一下各个属性。

flex-grow

flex-grow用来规定项目将相对于其他flex的项目进行扩展的量。如果元素不是flex盒对象的元素,则该属性不起作用。

语法:

flex-grow: number|initial|inherit;

描述
number 一个数字,规定项目将相对于其它flex的项目进行扩展的量,默认值是0
initial 设置该属性为它的默认值
inherit 从父元素继承该属性值

这个属性可以在flex元素的子元素下设置,设置后的值是相对于同级子元素来说的。利用这个属性,我们可以很方便的排布出各种比例宽度的排版。

flex-shrink

这个属性的值就是相对于grow将数字变为倒数。例如在flex-grow中

flex-grow: 3;

表示的是将该元素设为同级flex元素的3倍

那么

flex-shrink: 3;

则是将该元素设为同级元素的三分之一。

描述
number 一个数字,规定项目将相对于其它flex项目进行收缩的量,默认值为0
initial 设置该属性为它的默认值。
inherit 从父元素继承该属性值。

这个就不多讲了,和flex-grow差不多。

flex-basis

flex-basis属性用于设置或检索flex盒伸缩基准值。

如何理解呢?差不多就是有一堆flex的元素,你只想要调整其中一个的宽度(例如第四个),就可以使用d

div:nth-of-type(4){flex-basis: 100px}

来调整。

描述
number 一个长度单位或者百分比,规定flex项目的初始长度
auto 默认值,若该项目未指定长度,则长度将根据内容决定
initial 设置该属性为它的默认值。
inherit 从父元素继承该属性值

flex-direction

这个属性用于规定flex项目的方向。

属性
row 默认值,水平显示,像一行一样
row-reverse 和row的水平显示一样,但是顺序倒置
column 垂直显示,如一列一样
column-reverse 和column的垂直显示一样,顺序倒置
initial 设置该属性为它的默认值
inherit 从父元素继承该属性值

这个属性可以很便利的将一行显示的元素变为竖向的一列,或者将元素倒置过来。你也可以通过嵌套div实现某部分倒置或者在某处拐弯。

flex-wrap

这个属性让flex元素在必要的时候拆行(碰到浏览器边界或者div边界。)同时横轴的方向决定了新行堆叠的方向。

描述
nowrap 默认值,不拆行拆列
wrap 在必要的时候拆行拆列
wrap-reverse 在必要的时候拆行/拆列,拆行/拆列后顺序倒置(行列顺序,不是元素顺序)
initial 设置该属性为它的默认值
inherit 从父元素继承该属性

flex-flow

这个属性是flex-direction和flex-wrap属性的复合属性。语法如下

flex-flow: flex-direction flex-wrap|initial|inherit;

由于这两个属性的值已经说过,所以就不列表显示了,只要注意使用顺序就好了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,128评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,316评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,737评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,283评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,384评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,458评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,467评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,251评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,688评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,980评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,155评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,818评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,492评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,142评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,382评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,020评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,044评论 2 352

推荐阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,467评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,462评论 0 6
  • 前言 flex布局简化了前端布局问题,例如垂直居中,水平居中等,且目前为止主流浏览器都支持了这种布局,特别是移动端...
    seporga阅读 742评论 0 1
  • Flexible Box Layout ModeFlexible Box Layout Mode.pngmain ...
    Leophen阅读 222评论 0 0
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,875评论 0 0