CSS 弹性盒布局(flex)

  • IE浏览器正式停用了, 公司对低版本浏览器的要求也不严格了
  • 以前为了有更好的兼容性, 一直在使用老的语法, 对新语法掌握不足
  • 在以前的工作中弹性盒布局用的比较少, 今天就来学习一下使用方法

Flex 布局是什么

  • 我们经常会提到盒模型, 其实 CSS 的布局方式和盒模型是分不开的
  • 我们通常会通过 display 控制盒子的类型, 设置为弹性布局也是一样的, 即: display: flex; or display: inline-flex;
  • 设为 Flex 布局以后,子元素的floatclearvertical-align属性将失效。

基本概念

  • 容器默认存在两根轴:水平的主轴 (main axis)和垂直的交叉轴(cross axis)。
  • 主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end
  • 交叉轴的开始位置叫做cross start,结束位置叫做cross end
  • 项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size

容器的属性

  • flex-direction (设置主轴)
  • flex-wrap (换行方式)
  • flex-flow (flex-directionflex-wrap 的简写)
  • justify-content (主轴对齐方式)
  • align-items (交叉轴对齐方式)
  • align-content (多个主轴时, 在交叉轴方向的对齐方式)
  • 以上6个属性是容器自身的属性。
  • 在谷歌浏览器中会有上图的面板, 即便没有用过也可以根据图形的示例设置(ps: 可能是因为这个导致我现在还不知道 flex 都有什么用法)
  • 虽然工具很好用, 但是我们也应该了解一下他的具体用法, 我们接着往下看

flex-direction 主轴的方向(排列方向)

css 复制代码
flex-direction: row | row-reverse | column | column-reverse;
  • row(默认值):主轴为水平方向,起点在左端。
  • row-reverse:主轴为水平方向,起点在右端。
  • column:主轴为垂直方向,起点在上沿。
  • column-reverse:主轴为垂直方向,起点在下沿。

flex-wrap 排不下如何换行

css 复制代码
flex-wrap: nowrap | wrap | wrap-reverse;
  • nowrap:不换行, 位置不够时挤压子容器
  • wrap:换行
  • wrap-reverse:换行, 第一行在最下面。

flex-flow (flex-directionflex-wrap 的简写)

css 复制代码
/* flex-flow: <flex-direction> || <flex-wrap>; */
flex-flow: column-reverse wrap;

justify-content 设置主轴对齐方式

css 复制代码
justify-content: flex-start | flex-end | center | space-between | space-around;
  • flex-start(默认值):左对齐
  • flex-end:右对齐
  • center: 居中
  • space-between:两端对齐,项目之间的间隔都相等。
  • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

align-items 设置交叉轴对齐方式(和主轴类似)

css 复制代码
align-items: flex-start | flex-end | center | baseline | stretch;
  • flex-start:交叉轴的起点对齐。
  • flex-end:交叉轴的终点对齐。
  • center:交叉轴的中点对齐。
  • baseline: 项目的第一行文字的基线对齐。
  • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

align-content 多个主轴时在交叉轴上的对齐方式

  • 多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
css 复制代码
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
  • flex-start:与交叉轴的起点对齐。
  • flex-end:与交叉轴的终点对齐。
  • center:与交叉轴的中点对齐。
  • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
  • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
  • stretch(默认值):轴线占满整个交叉轴。

今天先写到这, 明天再补子容器的配置

参考文档

相关推荐
知识分享小能手1 小时前
React学习教程,从入门到精通, React 属性(Props)语法知识点与案例详解(14)
前端·javascript·vue.js·学习·react.js·vue·react
魔云连洲1 小时前
深入解析:Vue与React的异步批处理更新机制
前端·vue.js·react.js
mCell1 小时前
JavaScript 的多线程能力:Worker
前端·javascript·浏览器
超级无敌攻城狮3 小时前
3 分钟学会!波浪文字动画超详细教程,从 0 到 1 实现「思考中 / 加载中」高级效果
前端
excel4 小时前
用 TensorFlow.js Node 实现猫图像识别(教学版逐步分解)
前端
gnip4 小时前
JavaScript事件流
前端·javascript
赵得C4 小时前
【前端技巧】Element Table 列标题如何优雅添加 Tooltip 提示?
前端·elementui·vue·table组件
wow_DG4 小时前
【Vue2 ✨】Vue2 入门之旅 · 进阶篇(一):响应式原理
前端·javascript·vue.js
weixin_456904274 小时前
UserManagement.vue和Profile.vue详细解释
前端·javascript·vue.js
资深前端之路4 小时前
react 面试题 react 有什么特点?
前端·react.js·面试·前端框架