css flexbox

1.1 flexbox

lexbox模块提供了一个有效的布局方式,即使不知道视窗大小或者未知元素情况之下都可以智能的,灵活的调整和分配元素和空间两者之关的关系。简单的理解,就是可以自动调整,计算元素在容器空间中的大小。

1.2 flexbox 的使用

(1) 要开始使用Flexbox,必须先让父元素变成一个Flex容器。
(2) 你可以在父元素中显式的设置display:flex或者display:inline-flex。就这么的简单,这样你就可以开始使用Flexbox模块
(3) 实际是显式声明了Flex容器之后,一个Flexbox格式化上下文(Flexbox formatting context)就立即启动了
Flex容器(Flex Container):父元素显式设置了display:flex
Flex项目(Flex Items):Flex容器内的子元素

1.2.1 容器属性

(1) flex-direction
flex-direction属性控制Flex项目沿着主轴(Main Axis)的排列方向。主轴x水平方向,侧轴y垂直方向
它具有四个值:

/* ul 是一个flex容器 */ 
ul { flex-direction: row || column || row-reverse || column-reverse; }
  • 属性解释:
    row:x轴方向(默认主轴方向)
    column:y轴方向
    row-reverse:x正无穷到0方向
    column-reverse:y正无穷到0方向

(2) flex-wrap
flex-wrap 控制元素换行,lex-wrap属性有三个属性值:

ul { 
flex-wrap: wrap || nowrap || wrap-reverse; 
}
  • 属性解释:
    flex-wrap属性的默认值是nowrap。也就是说,Flex项目在Flex容器内不换行排列。

(3) flex-flow
flex-flowflex-directionflex-wrap两个属性的速记属性。
多个值写在同一行,比如下面的示例:

ul {
 flex-flow: row wrap; 
}

相当于:

ul { 
flex-direction: row; 
flex-wrap: wrap; 
}

(4) justify-content
justify-content属性可以接受下面五个值之一:
justify-content的默认属性值是flex-start
使用方法:

ul {
 justify-content: flex-start || flex-end || center || space-between || space-around
 }
  • 属性解释:
    flex-start让所有Flex项目靠Main-Axis开始边缘(左对齐)。
    flex-end让所有Flex项目靠Main-Axis结束边缘(右对齐)。
    center让所有Flex项目排在Main-Axis中间(居中对齐)。
    space-between让除了第一个和最一个Flex项目的两者间间距相同(两端对齐)。
    space-around让每个Flex项目具有相同的空间

(5) align-items
align-items属性类似于justify-content属性。只有理解了justify-content属性,才能更好的理解这个属性。它主要用来控制Flex项目在Cross-Axis对齐方式。
使用方法:

ul { 
align-items: flex-start || flex-end || center || stretch || baseline 
}
  • 属性解释:
    stretch :align-items的默认值是stretch。让所有的Flex项目高度和Flex容器高度一样。
    flex-start : flex-start让所有Flex项目靠Cross-Axis开始边缘(顶部对齐)。
    flex-end:flex-end让所有Flex项目靠Cross-Axis结束边缘(底部对齐)。
    center:center让Flex项目在Cross-Axis中间(居中对齐)。
    baseline让所有Flex项目在Cross-Axis上沿着他们自己的基线对齐。

(6) align-content
让Flex容器中的Flex项目多行排列。
align-content属性用于多行的Flex容器。它也是用来控制Flex项目在Flex容器里的排列方式,排列效果和align-items值一样,但除了baseline属性值。
align-items属性一样,它的默认值是stretch

  • 属性解释:
    stretch使用stretch会拉伸Flex项目,让他们沿着Cross-Axis适应Flex容器可用的空间。
    flex-start之前你看到过flex-start。这次是让多行Flex项目靠Cross-Axis开始边缘。沿着Cross-Axis从上到下排列。因此Flex项目在Flex容器中顶部对齐。
    flex-end刚好和flex-start相反,让多行Flex项目靠着Cross-Axis结束位置。让Flex项目沿着Cross-Axis从下到上排列,即底部对齐。
    center让多行Flex项目在Cross-Axis中间。在Flex容器中居中对齐。

1.2.2 Flex项目属性

(1) order
允许Flex项目在一个Flex容器中重新排序。
order属性的默认值是0。它可以接受一个正值,也可以接受一个负值。
Flex项目会根据order值重新排序。从底到高。

(2) flex-grow 和 flex-shrink
flex-growflex-shrink属性控制Flex项目在容器有多余的空间如何放大(扩展),在没有额外空间又如何缩小。
他们可能接受0或者大于0的任何正数。0 || positive number
flex-grow属性值设置为0。表示Flex项目不会增长,填充Flex容器可用空间。
flex-shrink的值是1,也就是说flex-shrink开关也是打开的

(3) flex-basis
flex-basis属性可以指定Flex项目的初始大小。也就是flex-growflex-shrink属性调整它的大小以适应Flex容器之前。

flex-basis默认的值是autoflex-basis可以取任何用于width属性的任何值。比如 % || em || rem || px等。

注意:如果flex-basis属性的值是0时,也需要使用单位。即flex-basis: 0px不能写成flex-basis:0

(4) flex速记
flexflex-growflex-shrinkflex-basis三个属性的速记(简写)。
flex-grow第一,然后是flex-shrink,最后是flex-basis。缩写成GSB

(5) flex: 0 1 auto

li {
    flex: 0 1 auto;
}

这相当于写了flex默认属性值以及所有的Flex项目都是默认行为。

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

推荐阅读更多精彩内容

  • 姓名:岳沁 学号:17101223458 转载自:https://juejin.im/entry/5a328f1c...
    丘之心阅读 316评论 0 0
  • Flexbox是一个强大而灵活的布局,本篇文章主要对其进行学习了解。 一、Flexbox简介 Flexbox布局(...
    Ruheng阅读 7,573评论 1 20
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,380评论 0 26
  • “没有糖吗?” 他只抿了一口,抬开嘴,盯了我一会儿,然后问出这句话。 既然坐在对面,他应该看得出来我是警察,于是我...
    朝歌晚久阅读 403评论 0 11
  • 晚上看电视,想着早饭的事,于是乎,蒸馒头吧,哈哈, 和面,酵母用温水散开,加入白糖,嗯,和面面。 粗糙的一只手,至...
    至简从心阅读 3,243评论 95 56