上篇讲了弹性盒子中盒子的一些属性,这篇讲子项的属性


目录

1.order

2.aligh-self

3.flex-grow

4.flex-basis

5.flex-shrink


1.order

设置或检索弹性盒子子项出现的顺序,默认值为0,按数值大小由小到大排列

【例1】使用order将下列子项逆序

【代码】

<!DOCTYPE html>
<html lang="en">
<head><style>
.wrapper {margin: 20px;width: 150px;height: 150px;border: 1px solid #424242;display: flex;
}
.wrapper .content {text-align: center;width: 50px;height: 50px;line-height: 50px;background-color: #f88;color: #fff;border: 1px solid #88f;box-sizing: border-box;
}
.content:first-of-type {order: -1;
}
.content:nth-of-type(2) {order: -2;
}
.content:last-of-type {order: -3;
}</style>
</head>
<body><div class="wrapper"><div class="content">1</div><div class="content">2</div><div class="content">3</div></div>
</body>
</html>

结果

2.aligh-self

设置子项沿交叉轴的对齐方式

【例2】分别改变图2-1中第一个子项和第三个子项的对齐方式为flex-start和flex-end

图2-1

css代码

.wrapper {margin: 20px;width: 150px;height: 150px;border: 1px solid #424242;display: flex;align-items: center;
}
.wrapper .content {text-align: center;width: 50px;height: 50px;line-height: 50px;background-color: #f88;color: #fff;border: 1px solid #88f;box-sizing: border-box;
}
.content:first-of-type {align-self: flex-start;
}.content:last-of-type {align-self: flex-end;
}

结果

3.flex-grow

当主轴方向上有剩余空间时,如图2-1,使用公式3-1去给每个子项分配剩余空间,其中i表示子项的总数,n表示第k个子项的flex-grow属性值(下面简称占几份),c表示剩余空间的像素值,x表示给第k个元素分配的像素值

公式3-1

【例3】将图3-1中的剩余空间分成五份,第一个子项占一份,第二个子项占一份,第三个子项占三份

图3-1

代码:将【例1】中的样式修改如下

.wrapper {margin: 20px;width: 300px;height: 100px;border: 1px solid #424242;display: flex;
}
.wrapper .content {text-align: center;width: 50px;height: 50px;line-height: 50px;background-color: #f88;color: #fff;border: 1px solid #88f;box-sizing: border-box;
}
.content:first-of-type {flex-grow: 1;
}
.content:nth-of-type(2) {flex-grow: 1;
}
.content:last-of-type {flex-grow: 3;
}

结果子项1宽度 = 50 + [1 / (1 + 1 + 3)] * 150 = 80px,其他子项计算同理

4.flex-basis

当所有子项的flex-basis属性值之和小于盒子的宽度时,flex-basis的属性值会覆盖width的属性值,此时在计算盒子伸缩时以flex-basis为基准

【例4】

.wrapper {margin: 20px;width: 300px;height: 100px;border: 1px solid #424242;display: flex;
}
.wrapper .content {text-align: center;flex-basis: 60px;width: 50px;height: 50px;line-height: 50px;background-color: #f88;color: #fff;border: 1px solid #88f;box-sizing: border-box;
}
.content:first-of-type {flex-grow: 1;
}
.content:nth-of-type(2) {flex-grow: 1;
}
.content:last-of-type {flex-grow: 2;
}

结果,如第一个子项的宽度 = 60 + ( 1 / (1 + 1 + 2) ) * 120 = 90px

【注】flex-basis扩展——当子项中有不换行的文本且文本长度超出盒子的flex-basis值

1.flex-basis与width配合使用(文本内容可以撑开子项的宽度)

(1)当只有flex-basis或者flex-basis值大于width时,,其属性值决定了子项的最小宽度

(2)当flex-basis的值小于width时,flex-basis的值为子项的最小宽度,width的值决定了子项的最大宽度

2.flex-basis与flex-shrink配合使用

拥有超出flex-basis的子项不参与压缩计算,即将其flex-shrink值转为0;

5.flex-shrink

当主轴方向上子项的宽度和大于盒子宽度时,使用公式5-1去压缩子项,其中i表示子项的总数,L表示第k个子项的内容区的宽度,n表示第k个子项的flex-shrink属性值(下面简称占几份),c表示超出盒子的像素值,x表示第k个元素压缩的像素值

公式5-1

【例】

.wrapper {margin: 20px;width: 300px;height: 100px;border: 1px solid #424242;display: flex;
}
.wrapper .content {text-align: center;width: 200px;height: 50px;line-height: 50px;color: #fff;box-sizing: border-box;flex-shrink: 1;
}
.content:first-of-type {background-color: #f88;flex-shrink: 2;
}
.content:nth-of-type(2) {background-color: #f8f;width: 400px;flex-shrink: 2;
}
.content:last-of-type {background-color: #88f;width: 600px;flex-shrink: 3;
}

结果

CSS3的弹性盒子flex详解(2)相关推荐

  1. CSS3的弹性盒子flex详解(1)

    弹性盒子的属性分为盒子的属性和子项的属性,先介绍盒子的属性吧,子项的属性下一篇讲 目录 1.dislay 2.flex-direction 3.flex-wrap 4.align-items 5. j ...

  2. CSS 弹性盒子布局详解

    CSS 弹性盒子 弹性盒子是CSS3的一种新布局模式.是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式. 弹性盒子布局是一种在前端HTML开发中比较常用的布局方式,还有 ...

  3. CSS3 Flex 弹性布局用法详解

    什么是Flex弹性布局 Flex是Flexible Box的简称,意为弹性布局,顾名思义,在网页布局时,他可以给我们提供更多的灵活性. 说明: 1.flex是display的一个属性值.与之相当应的还 ...

  4. 弹性盒中 flex详解及flex:1的用法解析

    弹性盒中 flex详解及flex:1的用法解析 一.flex 在了解 flex:1 之前我们先了解一下flex的属性值有哪些,就如同background一样,有着backgournd-images.b ...

  5. CSS3弹性盒子Flex

    CSS3弹性盒子Flex 基础知识和术语 原文链接:https://css-tricks.com/snippets/css/a-guide-to-flexbox/ 父级(flex容器)的属性 #显示 ...

  6. html弹性盒子布局,div+css3弹性盒子(flex box)布局

    一.CSS3 弹性盒子(Flex Box) 弹性盒子是CSS3的一种新布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确 ...

  7. CSS3 弹性盒子(Flex Box)

    目录 CSS3 弹性盒子(Flex Box) 一.什么是 Flexbox >>> 了解两个基本概念,接下来会频繁提到: >>> 了解两个基本方向,这个牵扯到弹性布局 ...

  8. 弹性盒子flex布局实现骰子六个面并让骰子3D空间旋转

    <!doctype html> <html lang="en"> <head><meta charset="UTF-8" ...

  9. css 弹性盒子 flex布局

    目录 css弹性盒子flex 布局 什么是flex 常见父项属性 概念与案例 主轴与侧轴 flex-direction设置主轴的方向 justify-content 设置主轴上的子元素排列方式 fle ...

最新文章

  1. python开课吧官网_开课吧老师详解 学Python真的可以帮助提高办公效率吗
  2. 阿里数据中台系列之Apsara Stack控制台报警管理(三)
  3. java nep_Java 9 揭秘(1. 入门介绍)
  4. ITK:创建另一个图像实例
  5. java replaceall函数_JAVA中string.replace和string.replaceAll的区别及用法
  6. 【接口测试】axios测试接口
  7. 无线信道模型分类和建模方法介绍--附思维导图
  8. “颠覆”——物联网 + 大数据 + 云计算+ 网络互连
  9. 数据库显示备份服务器失败,数据库备份
  10. 互联网加速职场变革 大数据催生业界十大热门职业
  11. 电脑麦克风没有声音怎么办?如何恢复?(电脑麦克风没声音的解决方法)
  12. html文字发光效果,css文字发光效果
  13. Mybatis——注入执行sql查询、更新、新增以及建表语句
  14. 去掉设备和驱动器的百度网盘
  15. python pip在哪个文件夹运行_如何安装python与pip-百度经验
  16. 淘宝卖家如何申请开通电子面单
  17. 趣图:我说自己菜 vs 大佬说自己菜
  18. Androidstudio检测不到夜深模拟器解决方法
  19. 频繁跳槽,这谁顶得住~
  20. vue2.0之多页面的开发

热门文章

  1. gh0st源码分析与远控的编写(二)
  2. 告别DNS劫持,一文读懂DoH
  3. MySQL中B-tree索引和Hash索引区别
  4. 扔掉,MySQL!性能被 MariaDB 吊打…
  5. 面试官问:ZooKeeper是强一致的吗?怎么实现的?
  6. 全世界最顶级的开发者都在使用什么数据库
  7. 曹大带我学 Go(7)—— 如何优雅地指定配置项
  8. 玩转StyleGAN2模型:教你生成动漫人物
  9. 报告显示H.264份额进一步提升 1080p最受欢迎
  10. 《Go语言圣经》学习笔记 第五章函数