flex布局原理

flex是flexible box 的缩写,意为“弹性布局”,用来为盒状模型提供最大的灵活性,任何一个容器都可以指定为flex布局。

  • 当我们为父盒子设置为flex布局后,子元素的float,clear,和vertical-align属性将失效
  • 伸缩布局 = 弹性布局 = 伸缩盒布局 = 弹性盒布局 = flex布局

采用flex布局的元素,称为flex容器(flex container),简称“容器”。它的所有子元素自动称为容器成员,称为flex项目(flex item),简称“项目”。

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

flex布局常见父项属性

以下6个属性是对父元素设置的

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

1. flex-direction设置主轴的方向

主轴与侧轴

在flex布局中,是分为主轴和侧轴两个方向,同样的叫法有:行和列,x轴和y轴

  • 默认主轴方向就是x轴方向,水平向右
  • 默认侧轴方向就是y轴方向,垂直向下

主轴和侧轴是会变化的,就看flex-direction设置谁为主轴,剩下的就是侧轴,而我们的子元素是根据主轴来排列的。

属性值 说明
row 默认值从左到右
row-reverse 从右到左
column 从上到下
column-reverse 从下到上

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

justify-content 属性定义了项目在主轴上的对齐方式,所以在使用这个属性之前一定要确定好主轴是哪个

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

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

flex布局中,默认的子元素是不换行的,如果排不开会缩小子元素的宽度,放到父元素里面

默认情况下,项目都排在一条线(又称“轴线”)上。

属性值 说明
nowrap 默认值,不换行
wrap 换行

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

该属性是控制子项在侧轴(默认是y轴)上的排列方式,在子项为单项的时候使用

属性值 说明
flex-start 从上到下
flex-end 从下到上
center 挤在一起居中(垂直居中)
stretch 拉伸(默认值)

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

属性值 说明
flex-start 默认值,在侧轴头部开始排列
flex-end 在侧轴尾部开始排列
center 在侧轴中间显示
space-arund 子项在侧轴平分空间
space-between 子项在侧轴先分布两头,再平分剩余空间
stretch 设置子项元素高度平分父元素高度

6. flex-flow:flex-direction和flex-wrap的合写模式

flex-flow: row wrap;

flex布局子项常见属性

  • flex子项占的份数
  • align-self控制子项自己在侧轴的排列方式
  • order属性定义子项的排列顺序(前后顺序)

1. flex属性

flex属性定义子项目分配剩余空间,用flex来表示占多少分数

span:nth-child(2) {/*让第二个span分剩余的所有空间*/flex: 1;
}

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

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

span:nth-child(2) {/*设置自己在侧轴上的排列方式*/align-self: flex-end;
}

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

数值越小,排列越靠前,默认为0,和z-index不一样

span:nth-child(2):{/*把第二个span放在最前面*/order: -1;
}

HTML+CSS flex弹性布局相关推荐

  1. CSS——flex弹性布局

    创建表单,加入常用的表单控件 <form><input type="email" name='email'><button type="su ...

  2. CSS 的弹性布局(flex) ,是什么?

    一.弹性布局 是什么? 元素根据窗口大小变化而自动伸长或缩短,使得整个页面格式保持不变. 二.怎么使用? 1.使用方法 /* 1.父元素中增加 display 属性:*/ display: flex; ...

  3. 前端之网页三剑客Css之弹性布局Flex作用

    一.Flex布局是什么? Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 任何一个容器都可以指定为Flex布局. <div cl ...

  4. 页面布局 - flex弹性布局

    flex弹性布局 html: <!DOCTYPE html> <html><head><meta charset="utf-8" /> ...

  5. 移动web现状、viewport视口、二倍图、移动web开发主流方案、布局技术选型(流式布局、flex弹性布局、less+rem+媒体查询布局、混合布局、媒体查询、bootstrap)

    移动端web现状: 移动端常见浏览器:UC浏览器,QQ浏览器,Opera浏览器,百度手机浏览器,360安全浏览器,谷歌浏览器,搜狗手机浏览器,猎豹浏览器及杂牌浏览器.移动端常见的浏览器都是基于webk ...

  6. 微信小程序开发(三)——IE盒子,Flex弹性布局,色子六面

    目录 ie盒子模型 Flex弹性布局 三大特性: 块元素和内联元素的转换 background-image背景图片 尺寸单位rpx 定位 练习:色子的六面 ie盒子模型 盒子模型是css中一个重要的概 ...

  7. 移动端基础(2)—— flex弹性布局

    一.flex弹性布局 flexible-box-layout 弹性盒式模型,它能更加高效的控制元素的对齐.排列,更重要的是能够自动计算布局内元素的尺寸,无论这个元素的尺寸是固定的还是动态的. 父元素( ...

  8. flex弹性布局教程-09-容器属性flex-flow

    本节目标 掌握flex-flow的使用,flex-flow是flex-direction和flex-wrap的合集. 掌握上左右下的布局编写技巧. 内容摘要 本篇介绍了容器属性 flex-flow,是 ...

  9. HTML中用弹性布局设置位置,HTML的flex弹性布局

    flex 布局概述 1. flex 是什么flex 是 Flexible Box 的缩写,意为弹性布局 flex 2009 年就已出现,浏览器兼容性很好,请放心使用 2. flex 解决了什么问题块元 ...

最新文章

  1. c语言多进程架构改go语言,golang多进程并发
  2. STM32、Cortex-M3和ARMv8-M之间的关联
  3. 朱海舟宣布新一批应用已经适配锤子TNT 网友:救救海舟
  4. Windows下VC++显示UTF-8编码中文
  5. jquery中常见的标题内容之间的切换
  6. SqlServer性能检测之Sql语句排查
  7. BZOJ1064[NOI2008] 假面舞会
  8. ArcMap数据处理
  9. 爱的十个秘密--7.舍弃的力量
  10. VTK学习之激光点云动态库封装(排水管道)
  11. 小写字母转大写字母并输出ASCLL值
  12. 对接百度ORC营业执照识别
  13. 《智慧工地单点解析系列(四)—— 安全管理》
  14. 苹果手机语音备忘录在哪_真没想到!苹果手机还自带语音记录,按下这个按钮,语音秒变文字...
  15. ORCID以及ResearcherID注册
  16. TCP 漕河泾算法(tcp_caohejing)
  17. Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法
  18. 计算机毕设之餐厅选座订餐系统的设计与实践
  19. 开放平台支持的签名算法
  20. 4.24 使用形状生成器工具绘制星形图标 [Illustrator CC教程]

热门文章

  1. 自动驾驶两大领域的研究热点:计算机视觉&机器人技术
  2. 记录Android Killer反编译时遇到的异常
  3. 【我的Android进阶之旅】你了解adb device unauthorized的原因 和 adb授权机制的中adbkey与adbkey.pub的作用吗?
  4. 从塞上明珠到科创新城 榆林数字经济的“速度与激情”
  5. 将本地项目代码上传到码云(Gitee)或GitHub
  6. 数据库:PostgreSQL 和 MySQL对比
  7. 按住ctrl键不能批量选_如何在不按住Ctrl键的情况下遵循Word 2013中的超链接
  8. 51nod - 1204 Parity
  9. Hive 导出数据的五种方式
  10. 《基于ITK和VTK的医学图像处理系统设计与实现》