Skip to content

前言

之前都是使用传统的CSS布局方式,但随着CSS3广泛应用在移动端和主流浏览器中,抱着求学的心态学习接收前端新的知识Flex布局,在这里做下笔记进行总结。


Flex使用

设置Flex布局,在父框添加 display:flex即可。

Flex布局有浏览器兼容性,需要根据不同浏览器内核添加不同浏览器前缀,比如Chrome浏览器使用 -webkit- 前缀。

注意: 如果用了弹性布局,子元素不需要浮动 float。

父框设置Flex携带属性

justify-content: 子元素水平排列方式,值有以下几种:

  • center 居中,(常用)
  • space-between 两端对齐(常用)
  • space-around 子元素拉手分布 (常用)
  • flex-start 居左
  • flex-end 居右

align-items: 子元素垂直排列,值有以下几种:

  • center 居中(常用)
  • flex-end 底部
  • flex-start 开始

align-content:多行的时候,垂直排列

  • center 居中 ...

flex-direction: 排列方式,该属性值有以下几种:

  • row 横向排列
  • row-reverse 横向翻过排列
  • column 纵向排列
  • column-reverse 纵向翻过排列

flex-wrap: 子元素是否在一行显示,该属性值有以下几种:

  • nowrap 不换行
  • wrap 换行

flex-flow 全拼是 <flex-direction><flex-wrap>的缩写。

子框身上属性:

父框设置Flex布局,子框携带的属性:

  • flex:1,1 指的是一个系数。
  • 子元素在划分父元素宽度,先刨除固定宽度。
  • align-self 其实就是用来覆盖父级 align-items 垂直排列。
  • flex-grow: 1; 定义子元素放大比例。
  • order: 规定子元素顺序。排序:数值越小,越靠前,默认值0。

flex:1的含义

  • flex是flex-grow,flex-shrink,flex-basis的缩写。
  • flex-grow:父控件空间有剩余是否放大;0表示不放大。
  • flex-shrink:父控件空间不足是否缩小。
  • flex-basis:子控件占主轴的大小,主轴就是flex的主方向,row是横向,column是竖向。
  • flex默认属性是0 1 auto,(父控件有剩余控件不放大,父控件空间不足按1缩小,保持本身的空间大小)。
  • flex:1;的值是1 1 0%,(父控件有剩余空间按1放大,父控件空间不足按1缩小,自身的空间大小是0%)。

参考资料: