flex布局学习笔记

摘要:
2009年,W3C提出了一个新的解决方案——Flex布局,它可以轻松、完整、快速地实现各种页面布局。Flex布局模块的目标是提供更有效的布局和对齐,并使父元素能够分配子元素之间的间隙,即使子元素的大小未知或动态变化。Flex布局的主要思想是使父元素能够调整子元素的高度、宽度和布局顺序,以便最佳地适应可用的布局空间。Lflex端:十字轴的端部对齐。
1. 概述

布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性,传统布局在应对大型复杂的布局时缺乏灵活性,特别是在改变方向、改变大小、伸展、收缩等等方面。

2009年,W3C 提出了一种新的方案----Flex 布局,可以简便、完整、响应式地实现各种页面布局。Flex布局(弹性盒子布局)模块目标在于提供一个更有效地布局、对齐方式,并且能够使父元素在子元素的大小未知或动态变化情况下仍然能够分配好子元素之间的间隙。

Flex布局的主要思想是使父元素能够调节子元素的高度、宽度和排布的顺序,从而能够最好地适应可用布局空间(能够适应不同的设备和不同大小的屏幕)。

2. 概念

Flex布局是一套布局,主要作用于父子元素上,父元素称之为flex container,子元素称之为flex item.

 flex布局学习笔记第1张

在flex布局中,子元素要么按照主轴也就是main axis(从main-start到main-end)排布,要么按照交叉轴,也就是cross axis(从cross-start到cross-end)排布,基本规则如图所示

 flex布局学习笔记第2张

下面介绍几个概念:

(1). main axis:父元素的主轴是指子元素布局的主要方向轴。

(2). main-start|main-end: 分别表示主轴的开始和结束,子元素在父元素中会沿着主轴从main-startmain-end排布。

(3). main size: 子元素占据主轴的长度大小。

(4). cross axis: 交叉轴,与主轴垂直。

(5). cross-start|cross-end: 分别表示交叉轴的开始和结束。子元素在交叉轴的排布从cross-start开始到cross-end

(6). cross size: 子元素在交叉轴方向上的大小。

3. 属性

3.1 父元素

  1. display

display:flex | inline-flex;

定义父元素是一个 flex布局容器。

l flex: 父元素为块状元素

l inline-flex父元素呈现为行内元素

  1. flex-direction

flex-direction: row | row-reverse | column | column-reverse;

决定主轴的方向(即item的排列方向)。

l row(默认值):主轴为水平方向,起点在左端。

l row-reverse:主轴为水平方向,起点在右端。

l column:主轴为垂直方向,起点在上沿。

l column-reverse:主轴为垂直方向,起点在下沿。

  1. flex-wrap

flex-wrap: nowrap | wrap | wrap-reverse;

决定轴线上放不下item时,是否换行

l nowrap(默认):不换行。

l wrap:换行,第一行在上方。

l wrap-reverse:换行,第一行在下方。

  1. flex-flow

flex-flow: <flex-direction> || <flex-wrap>;

是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

  1. justify-content

justify-content: flex-start | flex-end | center | space-between | space-around;

定义了item在主轴上的对齐方式

l flex-start(默认值):左对齐

l flex-end:右对齐

l center:居中

l space-between:两端对齐,项目之间的间隔都相等。

l space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

  1. align-items

align-items: flex-start | flex-end | center | baseline | stretch;

属性定义项目在交叉轴上如何对齐。

l flex-start:交叉轴的起点对齐。

l flex-end:交叉轴的终点对齐。

l center:交叉轴的中点对齐。

l baseline: 项目的第一行文字的基线对齐。

l stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

  1. G.  align-content

align-content: flex-start | flex-end | center | space-between | space-around | stretch;

属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。

l flex-start:与交叉轴的起点对齐。

l flex-end:与交叉轴的终点对齐。

l center:与交叉轴的中点对齐。

l space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。

l space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

l stretch(默认值):轴线占满整个交叉轴。

3.2 子元素

  1. order
  • order:<integer>;

定义项目的排列顺序。数值越小,排列越靠前,默认为0。

  1. B.   flex-grow

flex-grow: <number>;

定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

  1. flex-shrink

flex-shrink: <number>;

定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

  1.  flex-basis

flex-basis: <length> | auto;

定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

  1. flex

flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]

是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

  1. align-self

align-self: auto | flex-start | flex-end | center | baseline | stretch;

允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

4. 总结

4.1 兼容性

兼容性样式:https://github.com/mastastealth/sass-flex-mixin

兼容性网站:https://caniuse.com/flexbox

 flex布局学习笔记第3张

4.2 知识点

 flex布局学习笔记第4张

4.3 参考文档

示例:http://static.vgee.cn/static/index.html

学习:http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

免责声明:文章转载自《flex布局学习笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NetCore无需添加web/wcf引用来调用webservice命令行执行robot framework测试用例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

flex布局最后一行列表左对齐的方法

先贴出鑫大神的文章:https://www.zhangxinxu.com/wordpress/2019/08/css-flex-last-align/ 这里记录下自己使用其中第一种方法时的用法和思路详解。 问题说明:   用 flex 布局时,当设置 justify-content: space-between 时,会遇到最后一行列表没有对齐(文章里说的那...

flex-1

1、flex布局(弹性布局Flexible Box弹性盒子)      基本概念:采用 Flex 布局的元素称为Flex容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。   容器默认存在两根轴: 水平的主轴(main axis)和垂直的交叉轴(cross axis...

【原】移动web页面支持弹性滚动的3个方案

有段时间一直折腾移动端页面弹性滚动的各种问题,做了点研究,今天做个小分享~ 传统 pc 端中,子容器高度超出父容器高度,通常使用 overflow:auto 可出现滚动条拖动显示溢出的内容,而移动web开发中,由于浏览器厂商的系统不同、版本不同,导致有部分机型不支持对弹性滚动,从而在开发中制造了所谓的 BUG。   上图如果在PC端中,我们可以利用 pos...

Flex 布局全解

一、Flex布局是什么? Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。 任何一个容器都可以指定为Flex布局。 .box{ display: flex; } 行内元素也可以使用Flex布局。 .box{ display: inline-flex; } Webkit内核的浏览器,必须加上-webkit前缀...

微信小程序 View:flex 布局

微信小程序 View 支持两种布局方式:Block 和 Flex 所有 View 默认都是 block 要使用 flex 布局的话需要显式的声明: display:flex; 下面就来介绍下微信小程序的 Flex 布局 先做一个简单的 demo <view class="main"><view class="item item1">...

解决 各浏览器不支持display:flex的最简单办法

通常我们想让一行元素平均分配宽度,而且还是可以扩展自适应的;不管元素个数多少; 那么我们通常不考虑IE9以下及其它个别浏览器的时候 父级用 display:flex; 子级用flex:1; 但有时产品 要求 兼容 各浏览器 及IE8/9;我们不得不想尽各种办法,  包括JS/JS插件等 但大家都忽略了一个非常有历史却很好用,不存在 兼容问题的表格table...