什么是flex布局

  • flex是flexible Box的缩写,意味“弹性盒子”,用来为盒子状模型提供最大的灵活性
  • 任何一个盒子都可以指定为flex布局 .box{ display:flex }
  • 行内元素也可以使用flex布局 .box{ dispaly:inline-flex }
  • Webkit内核的浏览器,必须加上-webkit前缀
  •    display: -webkit-flex; /* Safari */
    display: flex;
  • 当我们为父盒子设置了flex布局之后,子元素的float,clear和vertical-align就失效了

传统布局和flex布局的差别

  • pc端的兼容较差,IE11或者更低的版本,不支持或者仅部分支持
  • 所以:
    • pc端页面布局,建议任然使用传统布局
    • 移动端或者不考录兼容性问题的PC端桌面布局,仍然使用flex弹性布局

flex布局初体验

  • 首先,行内元素是不能设置宽高的,如span
  • 但是,我们一旦给了父级元素设置了display:flex那行内元素也能设置宽高
  •       div{
    display: flex;
    width: 80%;
    height: 300px;
    background-color: pink;
    }
    div span{
    margin-right: 10px;
    width:150px;
    height: 100px;
    background-color: blue;
    }
    <div>
    <span>1</span>
    <span>2</span>
    <span>3</span>
    </div>

flex布局原理

  • 采用flex布局的元素,称为flex容器,他的所有子元素自动成为容器成员,成为flex项目 (flex item)
  • 子容器可以横向排列,也可以纵向排列
  • 总结就是:通过给父盒子添加flex属性,来控制子盒子的位置和排列方式

flex布局父项常见属性

  1. flex-direction属性 (设置主轴和主轴方向)

    • row:x轴(从左到右)(默认属性)
    • row-reverse:翻转(从右到左)
    • column:y轴
    • column-reverse:翻转
  2. justify-content属性 (设置主轴上的子元素排列方式)

    • flex-start:从主轴头部开始排列(默认属性)
    • flex-end:从尾部开始
    • center:在主轴居中对齐
    • space-around:平分剩余空间
    • space-betwwen:先两边贴边,在平分剩余空间(重要)
  3. flex-wrap属性 (当子元素超出父元素时,是否换行)

    • nowrap:不换行,会改变原有子元素的大小,挤占进去(默认属性)
    • wrap:不换行,另起一行显示
  4. align-items属性 (设置侧轴上的的子元素排列方式(单行)) (默认是y轴)

    • flex-start:从上到下
    • flex-end:从下到上
    • center:垂直居中
    • stretch:拉伸(子元素没有设置高度时,这个为默认值)
  5. align-content属性 (设置侧轴上的子元素的排列方式(多行))

    • flex-start:在侧轴的头部开始排列(默认属性)
    • flex-end:在侧轴的尾部开始排列
    • center:在侧轴中间显示
    • space-around:子项在侧轴平分剩余空间
    • space-between:子项在侧轴先分布在两头,在平分剩余空间
    • stretch:设置子元素高度平分元素高度
  6. flex-flow属性 (flex-direction和flex-wrap属性的复合属性)

    • 如:flex-flow:column wrap;
    • 表示设置了flex-direction:column 和flex-wrap:wrap两个属性

flex布局子项常见属性

  1. flex属性 (定义子项目分配剩余空间,用flex来表示占多少份)

    • 为子元素样式设置:flex:number(默认为0)
    • 一般子元素不设置宽度,每个设置flex:1,因为没有宽度所以剩余空间为所有空间,所以每个子元素都占一份,就做到的子元素均分
  2. align-self属性 (控制某一个子项自己在侧轴上的排列方式)

    •   span:nth-child(2){
      /*设置自己在侧轴上的排列方式*/
      align-self:flex-end;
      }
  3. order属性 (定义项目的排列顺序)

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

flex布局使用的更多相关文章

  1. Flex 布局教程:语法篇

    作者: 阮一峰 网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便 ...

  2. Flex 布局教程:实例篇

    该教程整理自 阮一峰Flexible教程 今天介绍常见布局的Flex写法.你会看到,不管是什么布局,Flex往往都可以几行命令搞定. 我的主要参考资料是Landon Schropp的文章和Solved ...

  3. 在移动端中的flex布局

    flex布局介绍: flex布局很灵活, 这种布局我们也可以称之为弹性布局,  弹性布局的主要优势就是元素的宽或者高会自动补全; flex布局实例: 比如有两个div,一个div的宽度为100px, ...

  4. css flex布局

    关于flex布局的一些简单用法 效果(下图) 实现代码: <!--html--> <div class="wrap"> <div class=&quo ...

  5. FLEX布局的一些问题和解决方法

    前言 露珠最近研究了一下flex的布局方式,发现项w3c推出的这套布局解决方案对于日益复杂的前端开发布局来说是确实是一利器,并且在不同的屏幕上实现了真正的响应式布局:不再单纯地依赖百分比和float的 ...

  6. CSS之flex布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  7. flex布局示例

    来自:授权地址 作者:水牛01248 几个横排元素在竖直方向上居中 display: flex; flex-direction: row;//横向排列 align-items: center;//垂直 ...

  8. 【转】Flex 布局语法教程

    网页布局(layout)是CSS的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂直居中 ...

  9. [flex布局]-flex教程

    简介:2009年,W3C提出了一种新的方案----Flex布局,可以简便.完整.响应式地实现各种页面布局.目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能. Flex布局是什 ...

  10. flex布局

    一,啥是flex? 1.Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为Flex布局. .box{ displa ...

随机推荐

  1. rails 中各种去重查询操作

    Table.select("DISTINCT name").map(&:name) : DISTINCT name去重查询name Table.active.map{|x| ...

  2. MySQL安装及配置最详细教程

    https://blog.csdn.net/Mxdon_on/article/details/89461513 概述 MySQL作为最常用的数据库,手动安装的方法还是稍微有些弯弯 首先下载安装包 (官 ...

  3. Codeforces Round #592 (Div. 2)

    A. Pens and Pencils 题目链接:https://codeforces.com/contest/1244/problem/A 题意: 给定五个数 a , b , c , d , k 求 ...

  4. 用函数式编程,从0开发3D引擎和编辑器(二):函数式编程准备

    大家好,本文介绍了本系列涉及到的函数式编程的主要知识点,为正式开发做好了准备. 函数式编程的优点 1.粒度小 相比面向对象编程以类为单位,函数式编程以函数为单位,粒度更小. 正所谓: 我只想要一个香蕉 ...

  5. 通过 Drone Rest API 获取构建记录日志

    Drone是一款CICD工具,提供rest API,简单介绍下如何使用API 获取构建日志. 获取token 登录进入drone,点头像,在菜单里选择token 复制token即可 API 介绍 Dr ...

  6. 搭建API Mock

    所需环境 Node.js + MySQL 5.7+ Redis 4.0+ Node.js 安装 .要安装nvm,需要安装构建源包所需的工具,CentOS 上安装,用这些命令来安装构建工具: sudo ...

  7. git 版本检出checkout的方法笔记

    想检出指定版本,比如回退版本,将代码检出到老代码 git checkout 版本号 git reflog git checkout  标签名 1.git log 查看版本信息,复制版本号,执行git ...

  8. JavaScript实例:运动的小球

    本篇博文通过制作一个小球运动动画的实例,来学习在HTML5的画布上实现动画制作的方法,同时理解面向对象程序设计的基本思想. 1.绘制小球 先在HTML页面中设置一个画布. <canvas id= ...

  9. 封装和@property

    封装和@property 一.复习 1.接口类和抽象类 python中没有接口类,有抽象类,abc模块中的metaclass=ABCMeta,@abstructmethod,本质是做代码规范用的,希望 ...

  10. java map在JSTL EL中的小应用--<c:forEach>遍历Map<>泛型

    准 备 数 据 :(自己准备吧少年,考验你时候到了!!) /** 结构示意图: 类型: List集合 map对象 LIst集合 Person类对象 String name : int age mLis ...