文章目录

  • 为什么是flex?
    • 1.0传统布局和flex布局对比
      • 1.1传统布局
      • 1.2 flex布局
      • 1.3 建议
  • 基础篇
    • 2.0 flex布局原理
    • 3.0 父项常见属性(给父盒子加)
      • 3.1 flex-direction设置主轴的方向 (一般情况谁没事改主轴,用的比较少)
      • 3.2 justify-content 设置主轴上的子元素排列方式 (巨常用!)
      • 3.3 flex-wrap设置是否换行
        • 示例1
      • 3.4 align-items 设置侧轴上的子元素排列方式(单行 )
        • 示例2 align-items:center
        • 示例3 align-items: stretch(拉伸)
      • 3.5 align-content 设置侧轴上的子元素的排列方式(多行)
        • 示例4 align-content : stretch(拉伸)
      • 3.6 align-content 和align-items区别
      • 3.7 flex-flow 属性是 flex-direction 和 flex-wrap 属性的复合属性
  • 进阶篇
    • 4.0 flex布局子项常见属性
      • 4.1 flex 属性 (真·好使!)
      • 4.2 align-self控制子项自己在侧轴上的排列方式
      • 4.3 order 属性定义项目的排列顺序
  • flex布局, 永远滴神 !

为什么是flex?

1.0传统布局和flex布局对比

1.1传统布局

  • 兼容性好
  • 布局繁琐
  • 局限性,不能在移动端很好的布局

1.2 flex布局

  • 操作方便,布局极其简单,移动端使用比较广泛
  • pc端浏览器支持情况比较差
  • IE11或更低版本不支持flex或仅支持部分

1.3 建议

  • 如果是pc端页面布局,还是采用传统方式
  • 如果是移动端或者是不考虑兼容的pc则采用flex

基础篇

2.0 flex布局原理

  • 一句话: 就是通过给父盒子添加display:flex属性,来控制子盒子的位置和排列方式
  • 一定要记得给父盒子加
  • 定要记得给父盒子加
  • 要记得给父盒子加
  • 记得给父盒子加
  • 得给父盒子加
  • 给父盒子加
  • 父盒子加

3.0 父项常见属性(给父盒子加)

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

3.1 flex-direction设置主轴的方向 (一般情况谁没事改主轴,用的比较少)

  • 在 flex 布局中,是分为主轴和侧轴两个方向,同样的叫法有 : 行和列、x 轴和y 轴
  • 默认主轴方向就是 x 轴方向,水平向右
  • 默认侧轴方向就是 y 轴方向,水平向下

  • 注意: 主轴和侧轴是会变化的,就看 flex-direction 设置谁为主轴,剩下的就是侧轴。而我们的子元素是跟着主轴来排列的

    • 下图是flex-direction主轴的属性值:

3.2 justify-content 设置主轴上的子元素排列方式 (巨常用!)

3.3 flex-wrap设置是否换行

  • 默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,flex布局中默认是不换行的。
  • nowrap 不换行
  • wrap 换行

示例1

  • 布局如下
 <div class="father"><div></div><div></div><div></div><div></div><div></div><div></div></div>
  • 样式如下
     .father{width: 400px;display: flex;justify-content: flex-start;/*全部放到最前面*/flex-wrap: nowrap;/*默认值是不换行*/}.father>div{background-color: rgb(128, 128, 241);width: 100px;height: 100px;margin: 10px;}
  • 效果如下

    诶,问题来了?

    • 父盒子宽为400px,子盒子宽为100px,但是它一行放下了6个,
    • 也就是说我子盒子的width被自动压缩了,那这可不行!
    • 我想要的样式应该是放两行,width还是100px, 那这就用到了flex-wrap:wrap属性
/*将父盒子元素修改为*/flex-wrap: wrap;/*换行*/
  • 见证奇迹的时刻
  • 我tm直呼专业 !!!

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

  • 该属性是控制子项在侧轴(默认是y轴)上的排列方式 在子项为单项(单行)的时候使用
  • flex-start 从头部开始
  • flex-end 从尾部开始
  • center 居中显示
  • stretch 拉伸

示例2 align-items:center

.father{width: 700px;display: flex;justify-content: flex-start;align-items: center; /*加上了侧轴单行居中*/background-color: rgb(240, 105, 134) /*加上了背景颜色*/height: 200px; /*加上了高*/}
  • 见证奇迹的时刻

示例3 align-items: stretch(拉伸)

     .father{width: 700px;display: flex;justify-content: flex-start;align-items: stretch; /*改为拉伸*/background-color: rgb(240, 105, 134);height: 200px;}.father>div{background-color: rgb(128, 128, 241);width: 100px;/* height: 100px; */  将子盒子高度注释margin: 10px;}
  • 见证奇迹的时刻(可以看出没有设高的子盒子被拉伸了)

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

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

示例4 align-content : stretch(拉伸)

      .father{width: 400px;display: flex;justify-content: flex-start;align-content: stretch;flex-wrap: wrap;background-color: rgb(240, 105, 134);height: 300px;}.father>div{background-color: rgb(128, 128, 241);width: 100px;/* height: 100px; */margin: 10px;}
  • 见证奇迹的时刻(可以看出没有设高的两行子盒子被拉伸了)

3.6 align-content 和align-items区别

  • align-items 适用于单行情况下, 只有上对齐、下对齐、居中和 拉伸
  • align-content适应于换行(多行)的情况下(单行情况下无效), 可以设置 上对齐、下对齐、居中、拉伸以及平均分配剩余空间等属性值。
  • 总结就是单行找align-items 多行找 align-content

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

flex-direction:row;
flex-wrap:wrap;一个顶俩, 美汁汁
flex-flow:row wrap;

进阶篇

  • 以下属性是设在子盒子上!

  • 下属性是设在子盒子上!

  • 属性是设在子盒子上!

  • 性是设在子盒子上!

  • 设在子盒子上!

  • 在子盒子上!

  • 子盒子上!

  • 示例布局

<div class="father"><div></div><div></div><div></div></div>

4.0 flex布局子项常见属性

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

4.1 flex 属性 (真·好使!)

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

.item {flex: <number>; /* 默认值 0 */
}
     .father{width: 400px;display: flex;justify-content: flex-start;background-color: rgb(240, 105, 134);}.father>div{background-color: rgb(128, 128, 241);height: 100px;margin: 10px;}.father>div:nth-of-type(1){flex:1;} .father>div:nth-of-type(2){flex:2;} .father>div:nth-of-type(3){flex:1;}
  • 将三个子盒子的比例设为1:2:1
  • (子盒子没有给width,直接平分父盒子的width)

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

align-self 属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。

默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。

span:nth-child(2) {/* 设置自己在侧轴上的排列方式 */align-self: flex-end;
}
     .father{width: 400px;display: flex;justify-content: flex-start;background-color: rgb(240, 105, 134);height: 200px;}.father>div{background-color: rgb(128, 128, 241);width: 100px;height: 100px;margin: 10px;}.father>div:nth-of-type(3){align-self: flex-end;}
  • 由下图可见前两个盒子遵循父盒子的主轴flex-start排列(默认主轴为横轴)
  • 第三个子盒子遵循侧轴flex-end排列(默认侧轴为竖轴)

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

数值越小,排列越靠前,默认为0。

注意:和 z-index 不一样。

.item {order: <number>;
}
  • 一开始为红绿蓝排列
     .father>div:nth-of-type(1){background-color: rgb(255, 121, 121);} .father>div:nth-of-type(2){background-color:rgb(49, 226, 49);} .father>div:nth-of-type(3){background-color: rgb(136, 136, 255);}

  • 然后给第二个子盒子添加一个 order:-1; 属性
  • 绿盒子的优先级增加了
     .father>div:nth-of-type(1){background-color: rgb(255, 121, 121);} .father>div:nth-of-type(2){background-color:rgb(49, 226, 49);order: -1;} .father>div:nth-of-type(3){background-color: rgb(136, 136, 255);}
  • 变成了

flex布局, 永远滴神 !

CSS3_flex布局, 永远滴神 !相关推荐

  1. Spring Boot 永远滴神!10分钟快速入门

    为什么是 SpringBoot 因为目前开发 WEB 应用,Spring Boot 是启动 Spring 项目最快最流行的方式了.无论我们要构建一个什么样的应用,它都可以让我们尽可能快的启动运行起来. ...

  2. 机器人出魔切还是三相_UZI卡莎五分钟魔切,绝境四杀带领队伍走向胜利?观众:永远滴神...

    最近UZI经常和青蛙双排,节目效果非常不错.大家也都清楚,青蛙也是峡谷之巅中知名的辅助路人王了.而小狗的AD也是非常顶的,两人在下路配合的也非常默契,很多的小伙伴也都调侃"小明失宠了&quo ...

  3. 牛逼!前端神器,永远滴神!

    最近遇到这样一件事: 这位设计小兄弟,说好只加 3 个页面,最后硬是加了 6 个页面,打工人何必为难打工人. 面对这两排页面,对于 CSS 原本就比较弱的我来说,简直噩梦.正当我苦恼着,突然想起上次同 ...

  4. Spring全家桶,永远滴神!

    对于Java工程师来说,几乎没有没听过大名鼎鼎的Spring框架的,Spring框架早已成为了Java后端开发事实上的行业标准,可以说,是Spring成就了Java,Spring也成为Java程序员必 ...

  5. 8266,永远滴神!美女设计师的「舌头控制器」,从此动动嘴就能玩游戏!

    两只手都占着,临时没法操作电脑怎么办? 你的舌头够灵活吗?想过用舌头控制计算机吗? 舌头来控制?这并非不可能! 有人发明了一种可穿戴的设备,叫做 Tong,可以戴在嘴里,然后用舌头操作电脑. 做出这个 ...

  6. 通过正则表达式快速获取电影的下载地址!正则-永远滴神!

    在爬取网页信息时,如果在HTML代码中通过获取标签的方式来提取电影的下载地址时,不仅要编写比较多的代码,还需要不断的确认每一层的标签是否正确,这样的操作无疑是烦琐的.如下图所示.那么通过什么方式既可以 ...

  7. python永远滴神

    事情的起因,一个很无脑的作业,分析一张图片的HTML语义 我只想说好家伙... 最后作业的代码 <div><h3>小组分类</h3><dl><dt ...

  8. 手握低代码,得工具者得天下 低代码永远滴神

    目前,大多数企业都面临着同一个问题: 对个性化场景的开发需求已远远超过IT开发能力 在数字化时代,信息和数据能力是企业应对瞬息万变市场变化的核心能力 机会就摆在哪里 稍有延误,稍纵即逝 但是对于企业发 ...

  9. Python爬虫:单线程、多线程和协程的爬虫性能对比!异步才是永远滴神!

    然后今天我要给大家分享的是如何爬取豆瓣上深圳近期即将上映的电影影讯,并分别用普通的单线程.多线程和协程来爬取,从而对比单线程.多线程和协程在网络爬虫中的性能. 具体要爬的网址是:https://mov ...

最新文章

  1. java jsp页面如何添加C标签
  2. 筛指定区间的素数[区间偏移二次筛法]
  3. Ubuntu18.04+RTX 2080Ti+CUDA 10.0 +cuDNN+PyTorch搭建深度学习环境
  4. 也有个自由职业梦?日本码农辞职一年后:独立工程师太难了
  5. Android国际化(多语言)实现,支持8.0
  6. unicode 编码转换漏洞_好程序员Python教程之字符串编码知识小结
  7. linux限制pptp连接数_性能调优,让你的服务器更强大!增加TCP连接最大限制
  8. VS2010+OpenCV2.4.3配置(一次设置,永久生效)
  9. 从程序架构提升安全性
  10. php 静态方法特点,浅析php静态方法与非静态方法的用法区别
  11. C#调用Java方法(详细实例)
  12. 夏侯南溪搭建目标检测模型——数据读取篇
  13. mysql添加开机自启_初始化mysql并设置开机自动启动
  14. 关于等价鞅、反等价鞅、剀利公式、赌徒输光定理(非常有启发意义)
  15. SHON WEBB:坚持做这四件事,会让你的自律达到新的高度
  16. python requests默认超时时间_requests获取响应时间和超时
  17. 12、Storage(存储)(基础知识)
  18. 在pycharm中如何使用新的库文件覆盖旧的cv2安装失败的问题
  19. leetcode|一道算法题错失谷歌offer
  20. 使用坚果云收件箱,更加方便高效地收文件

热门文章

  1. 阿里云端物联网平台创建产品以及设备
  2. java 流量攻击_如何防御网站被ddos攻击 首先要了解什么是流量攻击
  3. 安装 WineHQ 安装包
  4. 学习生物信息学的理由
  5. 用ATL创建COM组件详细解说
  6. RK硬件设计之PMU—RK808 VDC管脚巧妙应用
  7. php 数字 字母组合,php随机生成数字字母组合的方法
  8. 有目标的人奔跑,没目标的人流浪
  9. 《哪吒》冲20亿!导演40岁改命背后:永远去做你余生中最重要的那件事
  10. 【javascript】js解构赋值中使用别名