一、简介

Flexible 单词意思是灵活的意思,flex布局又称为弹性布局或弹性盒子布局

Flex布局(Flexible Box Layout)是CSS3引入的一种布局模型,它旨在提供一种灵活且高效的方式来对齐、排列和分布容器中的元素。Flex布局的主要思想是将容器分为主轴和交叉轴(侧轴)。主轴是元素排列的方向,可以是水平方向(从左到右)或垂直方向(从上到下),而交叉轴则与主轴垂直。

二、概念相关

  • flex布局display:flex给父盒子设置的,父盒子被称为弹性容器(flex container)
  • 子元素被称为弹性元素弹性项目(flex items)
  • flex布局分为主轴和侧轴,默认X轴为主轴,Y轴为交叉轴(侧轴)
  • flex布局,不管子元素是块级元素还是行内元素都是可以设置宽、高的,一视同仁,如下面的示例代码,span为行内元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div{
display: flex;
width: 600px;
height: 500px;
margin: 0 auto;
background-color: pink;
}
span{
width: 150px;
height: 100px;
background-color: coral;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>
</html>

三、flex-direction 设置flex容器主轴方向

截图示例代码参考上面进行修改,就不每次贴代码了

  • 通过设置容器的display属性为flex,将其定义为一个Flex容器
  • 默认的主轴是X轴,侧轴是Y轴
    • flex-direction: row; (默认值)

    • flex-direction: column;(切换主轴为Y轴)

    • flex-direction: row-reverser;(理解)

    • flex-direction: column-reverser;(理解)

四、justify-content 设置主轴子元素排列

justify-content属性是用于控制弹性容器(flex container)中弹性项目(flex items)在主轴上的对齐方式

  • justify-content 默认的属性值是flex-start,表示项目在主轴上靠近弹性容器的起始;位置对齐
  • justify-content: flex-end; 表示项目在主轴上靠近弹性容器的结束位置对齐

  • justify-content: center;表示在主轴上居中对齐

  • justify-content: space-around;(项目在主轴上均匀分布,但是项目与容器边缘的间距是项目之间间距的一半,这意味着项目之间的间距会比项目与容器边缘的间距更大一些)

  • justify-content: space-evenly;(evenly这个单词就是平均的、均等的意思,表示项目在主轴上均匀分布,项目与容器边缘的间距与项目之间的间距都是一致的)

  • justify-content: space-between;(项目在主轴上均匀分布,并且项目之间的间距是相等的,但是第一个项目与容器的起始位置对齐,最后一个项目与容器的结束位置对齐。)

五、flex-wrap 设置子元素是否换行显示

wrap 单词含义:包,裹,包装;用(手臂、指头或腿)围紧,用……绕住;绕……走;完成拍摄,杀青 ;<非正式>使(车辆)撞上(固定物体);(使文字)换行

  • 弹性项目默认在容器里是在一行或一列排列显示的,是不换行或列的,当一行或一列装不下子元素时,会自动缩小项目的宽度

比如父盒子(容器)的宽度是600px ,每个子元素(项目)的宽度是150px,那么当父元素下放6个子元素,肯定是超过600px的(150*6=900)

  • 如果要换行显示,flex-wrap: wrap;

六、align-items 设置侧轴子元素排列(单行)

截图所示的内容,flex主轴设置的是X轴

  • align-items:flex-start;默认值

  • align-items:flex-end;(先按主轴排列,然后再根据侧轴Y轴移动到容器的末尾)

  • align-items:center;(先按主轴排列,然后再根据侧轴Y轴移动到容器的中间)

  • align-items:stretch;(拉伸,要求子元素不能设置高度,拉伸的高度和父元素保持一致)

七、align-content 设置侧轴子元素排列(多行)

设置子项在侧轴上的排列方式并且只能用于子项出现换行的情况(多行),在单行下是没有效果的。

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div {
display: flex;
margin: 0 auto;
width: 600px;
height: 500px;
background-color: pink;
/*设置如果装不下子元素就换行*/
flex-wrap: wrap;
align-content:flex-start;
} span {
width: 150px;
height: 100px;
background-color: coral;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>5</span>
<span>6</span> </div>
</body>
</html>
  • align-content: flex-start;

  • align-content: flex-end;

  • align-content: center;

  • align-content: space-around;

  • align-content: space-between;

  • align-content: space-evenly;

  • align-content: stretch;

八、align-items 和 align-content对比与应用

九、flex-flow

flex-flow属性是flex-direction和flex-wrap属性的复合写法

/*flex-flow属性是flex-direction和flex-wrap属性的复合写法*/
flex-flow: row wrap;
/*flex-direction: row;*/
/*flex-wrap: wrap;*/

十、flex布局子项常见属性(flex)

  • flex 属性定义子项目分配剩余空间,用flex来表示占多少份数
  • 先看看未设置flex份数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div {
display: flex;
margin: 0 auto;
width: 600px;
height: 500px;
background-color: pink;
} div span:nth-child(1) {
width: 150px;
height: 100px;
background-color: red;
} div span:nth-child(2) {
width: 150px;
height: 100px;
background-color: coral;
/*独享剩余空间,因为第一个span和第三个span都设置了固定的宽度,剩下的空间*/
/*flex:1;*/
} div span:nth-child(3) {
width: 150px;
height: 100px;
background-color: skyblue;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>
</html>

  • 设置第二span 里的flex属性值为1

十一、flex布局子项常见属性(align-self)

  • 先上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div {
display: flex;
width: 600px;
height: 500px;
background-color: pink;
} div span:nth-child(1) {
width: 150px;
height: 100px;
background-color: coral;
/*这个属性也是给子元素添加使用的*/
/*align-self:end;*/
} div span:nth-child(2) {
width: 150px;
height: 100px;
background-color: skyblue;
} div span:nth-child(3) {
width: 150px;
height: 100px;
background-color: yellowgreen;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>
</html>



        div span:nth-child(1) {
width: 150px;
height: 100px;
background-color: coral;
/*这个属性也是给子元素添加使用的*/
align-self:end;
}

十二、flex布局子项常见属性(order)

设置子元素的排列顺序,order默认值为0,值越小越靠前,越大越靠后,可以理解为值越小优先级越高,排的顺序就靠前,越大就越靠后

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
div {
display: flex;
width: 600px;
height: 500px;
background-color: pink;
} div span:nth-child(1) {
width: 150px;
height: 100px;
background-color: coral;
/*这个属性也是给子元素添加使用的*/
align-self: end;
/*设置子元素的排列顺序,order默认值为0,值越小越靠前,越大越靠后,可以理解为值越小优先级越高,排的顺序就靠前,越大就越靠后*/
order: -1;
} div span:nth-child(2) {
width: 150px;
height: 100px;
background-color: skyblue;
order: -2;
} div span:nth-child(3) {
width: 150px;
height: 100px;
background-color: yellowgreen;
}
</style>
</head>
<body>
<div>
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</body>
</html>

flex布局入门的更多相关文章

  1. CSS布局-flex布局入门教程

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

  2. flex布局入门总结——语法篇

    前几天看了阮一峰的Flex布局教程,讲的很不错,总结一下,有兴趣的可以去看原文http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 一  F ...

  3. React Native入门教程 3 -- Flex布局

    上一篇文章中介绍了基本组件的使用 React Native入门教程(笔记) 2 – 基本组件使用及样式 本节内容将继续沿用facebook官方例子介绍如何使用Flexbox布局把界面设计的多样化. 转 ...

  4. es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式

    es6 Object.assign   目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...

  5. 小白入门篇:flex布局

    --前言 因为这个星期写一个小的项目用到flex布局和grid布局,虽然这两种布局都是兼容性都有问题,但是别急,我觉的以后肯定是会发展并且流行起来的,毕竟google大法好,而且这两个布局真的比一般的 ...

  6. CSS flex 布局快速入门

    以前已经学过flex了,一直没做笔记,现在做下笔记再回忆下. 首先,flex布局的迷之属性们,如果一知半解,机械记忆的话,那不到半个月基本忘光光.先感受一下这12个flex布局属性,是不是很“迷”人. ...

  7. flex布局应用于踩坑

    一.预告 本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道: 1.初学前端,对前端的传统布局还不是很熟悉的人 2.后端人员对前端不打算深入学习的同学 二.开篇 flex布局原本是好几个月前就一直 ...

  8. css3弹性盒模型flex快速入门与上手(align-content与align-items)

    接着上文css3弹性盒模型flex快速入门与上手1继续,上文还剩下两个父容器的属性align-items和align-content. 一.align-content:多行的副轴对齐方式 含义 多行的 ...

  9. 30分钟彻底弄懂flex布局

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由elson发表于云+社区专栏 目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布 ...

  10. flex布局应用与踩坑

    一.预告 本文不是一篇入门的文章所有请符合以下条件的战斗人员绕道: 1.初学前端,对前端的传统布局还不是很熟悉的人 2.后端人员对前端不打算深入学习的同学 二.开篇 flex布局原本是好几个月前就一直 ...

随机推荐

  1. 基于RL(Q-Learning)的迷宫寻路算法

    强化学习是一种机器学习方法,旨在通过智能体在与环境交互的过程中不断优化其行动策略来实现特定目标.与其他机器学习方法不同,强化学习涉及到智能体对环境的观测.选择行动并接收奖励或惩罚.因此,强化学习适用于 ...

  2. 【Azure API 管理】APIM如何实现对部分固定IP进行访问次数限制呢?如60秒10次请求

    问题描述 使用Azure API Management, 想对一些固定的IP地址进行访问次数的限制,如被限制的IP地址一分钟可以访问10次,而不被限制的IP地址则可以无限访问? ChatGPT 解答 ...

  3. 第3章. markdown语法

    常用语法 1. 文字格式 1.1 给文字添加引用 在文字的两侧,使用 ` 符号包裹起来 怒发冲冠,凭栏处,潇潇雨歇. 1.2 设置文字样式为斜体 在文字的两侧,使用 * 符号包裹起来 抬望眼,仰天长啸 ...

  4. Java的初始化块

    三种初始化数据域的方法: 在构造器中设置值 在声明中赋值 初始化块(initialization block) 初始化块 在一个类的声明中,可以包含多个代码块.只要构造类的对象,这些块就会被执行. c ...

  5. OData WebAPI实践-Non-EDM模式

    前文说到了 EDM 与 OData 之间的关系,具有 EDM 的 OData 提供了强大的查询能力,但是 OData 并不必须要配置 EDM,我们也可以使用 Non-EDM 方案. Non-EDM 所 ...

  6. react之todoList基础小项目

    1.项目最终成品和项目目录快照如图: 2.context.js文件 // 使用context进行多级传递数据 // 1. createContext 创建一个可以多级传递的context数据 // 2 ...

  7. 二次封装Element UI Table实现动态列

    开发中是否会遇见在一个页面中加载的table的列是不固定的,列名需要根据后台数据而动态加载:so element ui 的table 已经不再满足需求,我们得在他的基础上再次封装 增加 refacto ...

  8. Python 包安装和 postgresql 的一些问题

    今天安装 hgvs 这个 python 包的时候,遇到几个比较有代表性的问题,记录分享一下. hgvs is a Python package to parse, format, validate, ...

  9. 顶级生物信息学 RSS 订阅源

    早在 2018 年的时候我在"生信草堂"的公众号上写过一篇关于 RSS 的文章<使用 RSS 打造你的科研资讯头条>,介绍了关于 RSS 的一些内容和如何使用 inor ...

  10. 万字长文讲透 RocketMQ 4.X 消费逻辑

    RocketMQ 是笔者非常喜欢的消息队列,4.9.X 版本是目前使用最广泛的版本,但它的消费逻辑相对较重,很多同学学习起来没有头绪. 这篇文章,笔者梳理了 RocketMQ 的消费逻辑,希望对大家有 ...