返回顶部
首页 > 资讯 > 精选 >Flex布局与缩放比例计算案例分析
  • 546
分享到

Flex布局与缩放比例计算案例分析

2023-06-08 03:06:29 546人浏览 薄情痞子
摘要

本篇文章为大家展示了Flex布局与缩放比例计算案例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Flex 布局简介Flex 是 Flexible Box 的缩写,意为"弹性布局&q

本篇文章为大家展示了Flex布局与缩放比例计算案例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、Flex 布局简介

Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为 Flex 布局,也就是说,行内元素也可以设置成Flex 布局。

// 将块级元素div设置为flex布局div {    display: flex;}
// 将行内元素span设置为flex布局span {    display: flex;}

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

二、Flex布局的默认特性

默认情况下,容器中的所有子元素都将进行水平排列,类似于强制进行了一个左浮动,所以容器子元素的float和clear属性会失效。同时,容器中的子元素的对齐方式将不受vertical-align控制,即vertical-align也会失效。

<style>#main{    width:800px;    height:300px;    display:flex;    font-size: 20px;    background: red;}</style><div id="main">  <div style="background-color:coral;" class="item-1">红色</div>  <div style="background-color:lightblue;" class="item-2">蓝色</div>    <div style="background-color:lightgreen;" class="item-3">带有更多内容的绿色啊</div></div>

① 在没有给容器设置垂直方向对齐方式同时容器子元素也没有设置高度,那么容器子元素的高度是和容器的高度是一样的,如上,容器中所有的子元素的高度都会变为300px。

② 默认情况下,容器下的子元素的宽度是不会自动放大的,即默认以元素自身的实际宽度显示。如图所示:

Flex布局与缩放比例计算案例分析

③ 默认情况下,容器下的子元素的宽度是可以缩小的,当容器中所有子元素的宽度之和超过了容器的宽度,默认不会换行显示,那么就需要缩小容器子元素的宽度以保证容器能够容纳下所有的子元素。但容器子元素的宽度并不是无限缩小的,即缩小到不能缩小为止。

.item-1 {    width: 200px;}.item-2 {    width: 8800px;}.item-3 {    width: 8800px;}

比如上面,item2、item3宽度设置成了8800px,容器中所有子元素的宽度和为17800px,远远超出了容器的宽度800px,所以容器中的所有子元素必须按比例压缩,item1元素的宽度应变为200 - 191.01 = 8.99px,而item1最小被压缩为存放一个字所需要的宽度,即刚好等于字体的大小,即20px,所以item1的宽度将变为20px。

Flex布局与缩放比例计算案例分析

④ 默认情况下,容器中的子元素可以被压缩到最小为止,但是当压缩到最小后仍然放不下所有的子元素,那么子元素就会被放到容器的外面。

Flex布局与缩放比例计算案例分析

⑤ 如果给容器添加一个垂直方向的对齐方式,那么容器中所有子元素的高度将变为实际的高度,不会与容器等高。

#main{    width:800px;    height:300px;    display:flex;    font-size: 20px;    background: red;    align-items: flex-start;}

Flex布局与缩放比例计算案例分析

三、容器属性设置

容器默认存在两根轴:水平的主轴 和 垂直的交叉轴。主要就是设置容器的主轴方向、超过容器后是否换行显示、水平对齐方式、垂直对齐方式。

① flex-direction : 用于设置主轴的方向,默认值为row,即容器中所有子元素水平排列。

Flex布局与缩放比例计算案例分析

column: 表示容器中所有子元素垂直排列。

Flex布局与缩放比例计算案例分析

row-reverse: 表示反转容器中所有子元素的顺序,并且起点靠右,即靠右对齐。

Flex布局与缩放比例计算案例分析

column-reverse: 表示反转容器中所有子元素的顺序,并且起点靠下,即靠容器底部对齐。

Flex布局与缩放比例计算案例分析

② flex-wrap: 用于设置容器中子元素放不下的时候是否换行。默认值为nowrap,即不换行,即使放不下也不换行。

wrap : 表示可以换行,当设置为wrap可以换行的时候,容器中的元素就不会被压缩,而是采用换行显示。

#main {    width:800px;    height:300px;    display:flex;    background: red;    flex-wrap: wrap;     font-size: 20px;}.item-1 {    width: 300px;}.item-2 {    width: 300px;}.item-3 {    width: 300px;}

Flex布局与缩放比例计算案例分析

wrap-reverse : 表示换行显示之后对行排列顺序进行反转。

wrap:

Flex布局与缩放比例计算案例分析

wrap-reverse:

Flex布局与缩放比例计算案例分析

③ flex-flow: 是flex-direction 属性和flex-wrap属性的简写形式,默认值为row nowrap,即主轴为水平方向,不换行。

④ justify-content: 用于设置主轴方向的对齐方式。

Flex布局与缩放比例计算案例分析

⑤ align-items: 用于设置项目在交叉轴(非主轴)上对齐方式。

Flex布局与缩放比例计算案例分析

四、容器中元素(项目)属性设置

① order: 用于设置容器元素的排列顺序,默认值为0,数值越小,排列越靠前。

.item-2 {    order: -1; }

Flex布局与缩放比例计算案例分析

② flex-grow: 用于设置容器元素的放大比例,默认值为0,即如果存在剩余空间,也不放大。

③ flex-shrink: 用于设置容器元素的缩小比例,默认值为1,即如果空间不足,该项目将缩小。

④ flex-basis: 用于设置容器元素占的大小,默认值为auto,即与容器元素的实际大小一致。进行缩放的时候会根据该值来进行计算是否有多余的缩放空间。

⑤ flex: 是flex-grow、flex-shrink 、flex-basis的简写,默认值为0 1 auto,即不可放大、可缩小、大小与容器元素大小一致,后两个属性可选。

.item-2 {    flex: 0 1 auto;}

⑥ align-self: 用于单独设置某个容器元素的对齐方式,默认值为auto,表示继承父元素的对齐方式。

Flex布局与缩放比例计算案例分析

.item-2 {    align-self: center;}

Flex布局与缩放比例计算案例分析

五、felx:1 和flex: auto的区别

从上面可知,flex的默认值为 0 1 auto。flex的值比较灵活,可以设置很多种值,如:
① none: 此时等于 0 0 auto。

.item {    flex: none; // 值为none}// 等价于.item {    flex-grow: 0;    flex-shrink: 0;    flex-basis: auto;}

② auto: 此时等于 1 1 auto。

.item {    flex: auto; // 值为auto}// 等价于.item {    flex-grow: 1;    flex-shrink: 1;    flex-basis: auto;}

③ 一个非负数字: 此时这个非负数字指的是flex-grow的值,flex-shrink采用默认值1,但是flex-basis值为0%,如:

.item {    flex: 1; // 值为一个非负数字}// 等价于.item {    flex-grow: 1;    flex-shrink: 1;    flex-basis: 0%; }

④ 取值为两个非负数字: 此时分别代表的是flex-grow和flex-shrink的值,flex-basis取值为0%。

.item {    flex: 6 8; // 值为两个非负数字}// 等价于.item {    flex-grow: 6;    flex-shrink: 8;    flex-basis: 0%; }

⑤ 一个长度或百分比: 此时这个值为flex-basis的值,flex-grow 取值为 1,flex-shrink 取值为 1

.item {    flex: 200px; // 值为一个像素值}// 等价于.item {    flex-grow: 1;    flex-shrink: 1;    flex-basis: 200px;}
.item {    flex: 100%; // 值为一个百分数}// 等价于.item {    flex-grow: 1;    flex-shrink: 1;    flex-basis: 100%;}

需要注意的是,如果flex-basis设置为百分比,那么其相对的是容器的大小的百分比,而不是自身的大小的百分比。

从上可以看到,当flex的值为none或者auto或者不设置的时候,flex-basis的值才是auto;其他情况如flex的值为数字的时候,flex-basis的值则为0%。

所以flex: 1和flex: auto的区别就是,flex-basis的值不同,flex:1的时候flex-basis值为0%;flex: auto的时候,flex-basis的值为auto。

六、容器元素放大或缩小值计算

① 放大的情况
主要就是根据flex-basis的值计算出容器是否有剩余空间,如果有剩余空间,并且该容器中某个子元素是可以放大的,那么用该子元素的flex-grow值比上容器中所有子元素的flex-grow值之和计算出该容器子元素的放大系数,然后乘以剩余空间的大小即是该容器子元素需要放大的像素值。

#main{    width:800px;    height:300px;    display:flex;    background: red;    font-size: 20px;}.item-1 {    width: 200px;    flex: 2 1 auto;}.item-2 {    width: 200px;    flex: 3 1 10%;}.item-3 {    width: 100px;    flex: 0 1 220px;}

itme-1的flex-basis为auto,所以值和元素本身大小一致,即200px;
item-2的flex-basis为10%,其相对的是容器自身的大小,即800px * 10% = 80px;
item-3的flex-basis为设置的220px,这里需要注意的是,虽然width设置的为100px,但是width不会其作用,仍然会以flex-basis为基准。
首先根据flex-basis计算出剩余空间 = 800px - (200px + 80px + 220px) = 300px;
由于剩余空间为300px > 0,所以容器中的子元素可以放大,由于item-3的flex-grow值为0,所以item-3不会放大,仍然以220px显示。
item-1的放大值 = 2 / (2 + 3) * 300px = 120px;
item-2的放大值 = 3 / (2 + 3) * 300px = 180px;
所以,最终item-1的大小 = 200px + 120px = 320px;
item-2的大小 = 80px + 180px = 260px;
item-3的大小 = 220px;

Flex布局与缩放比例计算案例分析

Flex布局与缩放比例计算案例分析

Flex布局与缩放比例计算案例分析

② 缩小的情况
缩小的情况也是先根据flex-basis的值计算出容器超出容器多少空间,但是其不是简单的根据flex-shrink的值计算出缩放比例,而是根据容器中某个元素的flex-basis值乘以flex-shrink的值占容器中所有子元素的flex-basis乘以flex-shrink的值之和来计算缩放比例的。

#main{    width:800px;    height:300px;    display:flex;    background: red;    font-size: 20px;}.item-1 {    width: 200px;    flex: 0 2 auto;}.item-2 {    width: 200px;    flex: 0 3 100%;}.item-3 {    width: 100px;    flex: 0 0 200px;}

itme-1的flex-basis为auto,所以值和元素本身大小一致,即200px;
item-2的flex-basis为100%,其相对的是容器自身的大小,即800px * 100% = 800px;
item-3的flex-basis为设置的200px,这里需要注意的是,虽然width设置的为100px,但是width不会其作用,仍然会以flex-basis为基准。
首先根据flex-basis计算出超出空间 = (200px + 800px + 200px) - 800px = 400px;
由于超出空间为400px > 0,所以容器中的子元素需要缩小,由于item-3的flex-shrink值为0,所以item-3不会缩小,仍然以200px显示。
item-1的缩小值 = (2 200px / (2 200px + 3 800px + 0 200px)) * 400px = 57.14px;
item-2的缩小值 = (3 800px / (2 200px + 3 800px + 0 200px)) * 400px = 342.86px;
所以,最终item-1的大小 = 200px - 57.14px = 142.86px;
item-2的大小 = 800px - 342.86px = 457.14px;
item-3的大小 = 200px;

Flex布局与缩放比例计算案例分析

Flex布局与缩放比例计算案例分析

Flex布局与缩放比例计算案例分析

上述内容就是Flex布局与缩放比例计算案例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: Flex布局与缩放比例计算案例分析

本文链接: https://lsjlt.com/news/251583.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flex布局与缩放比例计算案例分析
    本篇文章为大家展示了Flex布局与缩放比例计算案例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Flex 布局简介Flex 是 Flexible Box 的缩写,意为"弹性布局&q...
    99+
    2023-06-08
  • Flex布局和Grid布局实例分析
    本文小编为大家详细介绍“Flex布局和Grid布局实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Flex布局和Grid布局实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新...
    99+
    2024-04-02
  • Flex布局的示例分析
    小编给大家分享一下Flex布局的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Flex布局基础一,Absolute布局用Flex布局新建Applicati...
    99+
    2023-06-17
  • CSS中flex布局实例分析
    这篇文章主要介绍“CSS中flex布局实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS中flex布局实例分析”文章能帮助大家解决问题。1. 浏览器 fl...
    99+
    2024-04-02
  • 使用flex布局的示例分析
    这篇文章主要介绍了使用flex布局的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex布局Flex 是 Flexible Box 的缩写,意为"弹性布局...
    99+
    2023-06-08
  • CSS伸缩盒布局实例分析
    这篇文章主要介绍“CSS伸缩盒布局实例分析”,在日常操作中,相信很多人在CSS伸缩盒布局实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS伸缩盒布局实例分析”的疑惑...
    99+
    2024-04-02
  • css中flex弹性布局的示例分析
    这篇文章将为大家详细讲解有关css中flex弹性布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。案例基础布局html<ul class="box">&...
    99+
    2023-06-08
  • css网页布局案例分析
    这篇文章主要介绍了css网页布局案例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css网页布局案例分析文章都会有所收获,下面我们一起来看看吧。position:stati...
    99+
    2024-04-02
  • CSS3中display属性Flex布局的示例分析
    这篇文章将为大家详细讲解有关CSS3中display属性Flex布局的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在设计首页布局的时候,新认识了一种布局方式di...
    99+
    2024-04-02
  • Chrome73导致flex布局崩坏的示例分析
    这篇文章给大家分享的是有关Chrome73导致flex布局崩坏的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。现象项目中会存在如下几种嵌套flex结构:<style>  &...
    99+
    2023-06-08
  • CSS布局方案的示例分析
    这篇文章给大家分享的是有关CSS布局方案的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。居中布局水平居中1)使用inline-block+text-align原理:先将子...
    99+
    2024-04-02
  • CSS3的flex弹性盒模型布局的示例分析
    CSS3的flex弹性盒模型布局的示例分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Flexible Box(弹性盒子)能让页面的分布...
    99+
    2024-04-02
  • R语言绘图布局的案例分析
    本文将为大家详细介绍“R语言绘图布局的案例分析”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“R语言绘图布局的案例分析”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。在...
    99+
    2023-06-14
  • 计算机中绘图比例2:1是放大还是缩小
    这篇文章主要为大家展示了“计算机中绘图比例2:1是放大还是缩小”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“计算机中绘图比例2:1是放大还是缩小”这篇文章吧。绘图比例“2:1”是缩小的,这个放大...
    99+
    2023-06-20
  • css中计算函数calc在网站布局中的示例分析
    这篇文章主要为大家展示了“css中计算函数calc在网站布局中的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中计算函数calc在网站布局中的示例...
    99+
    2024-04-02
  • php cms页面的设计和布局实例分析
    今天小编给大家分享一下php cms页面的设计和布局实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2024-04-02
  • R语言与多元线性回归分析计算案例
    目录计算实例分析模型的进一步分析计算实例 例 6.9 某大型牙膏制造企业为了更好地拓展产品市场,有效地管理库存,公司董事会要求销售部门根据市场调查,找出公司生产的牙膏销售量与销售价格...
    99+
    2024-04-02
  • CSS中经典三栏布局方案的示例分析
    这篇文章主要介绍CSS中经典三栏布局方案的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. float布局最简单的三栏布局就是利用float进行布局。首先来绘制左、右栏:&...
    99+
    2024-04-02
  • CSS样式表与格式布局的示例分析
    小编给大家分享一下CSS样式表与格式布局的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!样式表CSS(Cascading Style Sheets&nbs...
    99+
    2023-06-08
  • 谷歌浏览器chrome与CSS布局的示例分析
    这篇文章给大家分享的是有关谷歌浏览器chrome与CSS布局的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 畴昔咱们以火狐(Mozilla Firefox)作为标准...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作