移动端常见布局总结(二)——flex布局(弹性布局)

二、flex布局

1.1 传统布局和flex弹性布局

传统布局

  • 兼容性好

  • 布局繁琐

  • 局限性,不能在移动端很好的布局

    flex弹性布局

  • 操作方便,布局极为简单,移动端应用广泛。

  • PC端浏览器支持情况较差。

  • IE11或更低版本,不支持或仅部分支持。

建议:

  1. 如果是PC端,则选择传统布局
  2. 如果是移动端,则使用flex弹性布局

1.2 flex布局原理

  • 任何一个容器都可以使用flex布局
  • 灵活性大
  • 当父盒子设为flex布局后,子元素的float、clear和vertical-align都将失效
  • 伸缩布局=弹性布局=伸缩盒布局=弹性盒布局=flex布局

原理:通过给父盒子添加flex属性,来控制子盒子的位置和排列方式

1.3 flex布局父级常见属性

以下6个属性是在父盒子上面设置:

属性描述
flex-direction设置主轴方向
jutify-content主轴上的子元素排列方式
flex-wrap子元素是否换行
align-content侧轴上的子元素排列方式(多行)
align-items侧轴上的子元素排列方式(单行)
flex-flow复合属性,
相当于同时设置了 flex-wrapflex-direction

1.3.1 flex-direction 主轴和侧轴

在flex布局中,分为主轴和侧轴两个方向,也叫:行和列,X轴和Y轴

(如下图所示)。

  • 默认主轴方向为X轴方向,水平向右
  • 默认侧轴方向为Y轴方向,水平向下
    在这里插入图片描述

1.3.2 flex-direction 属性值

flex-direction属性决定主轴的方向(及项目的排列方式)

注意:主轴和侧轴是变化的,看flex-direction设置谁为主轴,剩下的就是侧轴。子元素跟着主轴来排列。

属性值描述
row默认值。从左到右
row-reverse从右到左
column从上到下
column-reverse从下到上

1.3.3 justify-content 设置主轴上的子元素排列方式

定义项目在主轴上的对齐方式。

注意:使用这个属性,一定要确认主轴是哪一个。

属性值描述
flex-start默认值,从头部开始,如果主轴是x轴,则从左到右
flex-end从尾部开始排列
center在主轴居中对齐
space-around平分剩余的空间
space-between先两边贴边,再平分剩余空间(!important

1.3.4 flex-wrap 设置子元素是否换行

在flex布局中,如果子元素装不下,那么就一直在同行上显示。这时就需要一个属性,flex-wrap。

属性值描述
nowrap不换行
wrap换行

1.3.5 align-items 设置侧轴上的子元素排列方式(单行)

在侧轴(默认是Y轴)的排列方式。适用于单行。

属性值描述
center使元素在侧轴上居中对齐
stretch
flex-start
flex-end

1.3.6 align-content 设置侧轴上的子元素的排列方式(多行)

在侧轴(默认是Y轴)的排列方式。适用于多行,单行无效。

属性值描述
flex-start默认值,从侧轴的头部开始排列
flex-end从尾部开始排列
center在侧轴居中对齐
space-around平分剩余的空间
space-between先两边贴边,再平分剩余空间

注: align-items 和 align-content 区别

  • align-items 适用于单行情况下,只有上对齐、下对齐、居中和拉伸
  • align-content 适用于换行(多行)情况下(单行效果如下),可以设置上对齐、下对齐、居中拉伸以及平均分配剩余空间等属性值。
  • 总结:单行找 align-items ,多行找 align-content。

1.3.7 flex-flow 的复合属性

flex-flow:flex-direction flex-wrap

总结:

  1. 先设置display:flex;
  2. 第二步进行设置主轴方向,justify-direction:row/column;
  3. 第三步设置看元素是否换行,使用 flex-wrap
  4. 第四步看排列方式。
    • 主轴排列方式使用 justify-content
    • 侧轴排列方式则看是否为单行还是多行。单行排列使用 align-items,多行排列使用 align-content

1.4 flex布局子项常见属性

属性描述
flex(! important)子项目占的分数
align-self控制子项目自己在侧轴的排列方式
order定义子项的排列顺序(前后顺序)

1.4.1 flex属性

看子项目分配的剩余空间。

`flex: flex-grow flex-shrink flex-basis`

/*
flex-grow: 默认为0,如果存在剩余的空间,项目也不会放大
flex-shrink:默认比例1,如果空间不足,项目缩小
flex-basis:相当于width和hight属性一样的值,将项目占据固定的空间。
*/ 

语法:

div {
	flex: number;/*(没有单位) default为0*/
}

1.4.2 align-self 控制子项自己在侧轴上的排列方式

语法:

div {
    /*规定的子项在侧轴上的排列方式,可以覆盖 align-items ,默认是auto*/
    align-self: felx-end;
}

1.4.3 order属性定义项目的排列顺序

语法:

div {
    /*默认是0,这个元素向前移动一个 */
    order: -1;
}

1.5 背景线性渐变

语法:

background: linear-gradient(起始方向,color1,color2, ...)
background: -webkit-linear-gradient(起始方向,color1,color2, ...)

注意:

  • 线性渐变必需添加浏览器私有前缀
  • 起始方向可以是:方位名词、度数,如果省略默认就是top
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值