什么时候会是用treeset?_flex:1 到底代表什么?

今天在做项目的时候遇到一个关于布局的问题, 就是 flex: 1; 我一直以为 flex: 1; 代表的是 flex: aoto; 后来发现结果并不是这样, 所以写一篇博客来讲解一下 flex: 1; 代表什么

代码第一版

<div class="container"><div class="div">我是一个div</div><div class="div">我是一个很多字div</div><div class="div">我是一个更多字而且第三个div</div>
</div>
<style>
.container{display: flex;
}
.div{border: 1px solid red;flex: 1;
}</style>

6ffbc56b83e1ef441489e0eb48a04bec.png

利用 flex: 1; 确实实现了三个不同内容的 div 平分空间, 所以按我以前的想法来说:

flex: 1; === flex: 1 1 auto;

这是完整写法, 详见mdn, 它还有另外两种完整写法, 分别是 initial (0 1 auto) none (0 0 auto)

  • 第一个参数表示: flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
  • 第二个参数表示: flex-shrink 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小
  • 第三个参数表示: flex-basis 给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小

代码第二版

上面证实了我以前的想法, flex:1; 就是代表均匀分配元素, 但是我们来改成完整写法看看

/* 其他代码没有变化, 沿用上面的 */.div{border: 1px solid red;flex: 1 1 auto; 
}

c734de937a799399fb5d47d434d4d2ee.png


加入原来以为正确的完整代码后可以看到三个元素没有均分, 所以可以推出:

flex: 1; !== flex: 1 1 auto;

走到这我就一头雾水, 为什么和我以前想的完全不同, 于是我就去参照了 w3c 对于 flex 的解释, 官方明确指, flex 最后一个参数为 0, 见下图

acbb3053104de3f740a1833ce3f5525c.png

所以:

  • flex: 1; === flex: 1 1 0;

但是在 chrome 浏览器上设置 flex: 1 1 0; 时, 它会自动加一个单位 px

d97dc6307e4b016d8d3ed17b371879e8.png

而设置 flex: 1; 时, 它会自动加一个 %, 看来他们解析到浏览器的时候必须带一个单位

25ea204e43b24c286d8c959315b48b55.png

于是我就又做了几个实验, 改了一下 flex-basis 的参数, 得出以下结论

  • flex: 1; === flex: 1 1 任意数字+任意长度单位;

可以看出最重要的一点在 第三个参数 flex-basis 上, 我们再来回顾以下 这个属性的作用

flex-basis给上面两个属性分配多余空间之前, 计算项目是否有多余空间, 默认值为 auto, 即项目本身的大小

auto 为表示项目本身的大小, 如果设置为 auto, 那么这三个盒子就会按照自己内容的多少来等比例的放大和缩小, 所以出现了上图中三个盒子不一样大的情况

那我们如果随便设置一个其他带有长度单位的数字呢, 那么他就不会按项目本身来计算, 所以它不关心内容, 只是把空间等比收缩和放大

现在你知道 flex: 1; 为什么能平分元素了吧, CSS 是一门很难学的语言, 虽然我经过不断试验得出结果, 但是它还有好多莫名其妙的问题去等你发现. 比如 margin: auto 为什么会实现居中, overflow: hidden 为何能实现 BFC

你可以遵从官方标准, 也可以和我一样去实验性的看待 flex: 1;

不过我建议你别深究这些问题, 因为所见即所得, 它这样能实现效果就可以了, CSS 学习是没必要刨根问底的, 会用就是最好的证明, 以上仅为个人见解, 如有疑问请给我留言或私信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纠缠不清的C语言位域(位段)详解

位域是什么&#xff1f;有些数据在存储时并不需要占用一个完整的字节&#xff0c;只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态&#xff0c;用 0 和 1 表示足以&#xff0c;也就是用一个二进位。正是基于这种考虑&#xff0c;C语言又提供了一种叫做位域的…

matlab画累计直方图_科学网—matlab 绘制直方图——常用命令 - 范凯波的博文

直方图上显示数值close all ,x rand(100,1);%获得直方图的数据[n,y] hist(x);maxN max(n);%设置显示x,y长度限制axis([0 1.2 0 maxN2])%根据直方图的数据绘制出图形bar(y,n);for i 1:length(y)%直方图上面数据对不齐&#xff0c;利用水平和垂直对齐 &#xff0c;可以参考se…

玩转java并发工具_玩Java并发

玩转java并发工具最近&#xff0c;我需要将一些文件&#xff08;每个文件都有JSON格式的对象列表&#xff08;数组&#xff09;&#xff09;转换为每个文件都具有相同数据&#xff08;对象&#xff09;的分隔行的文件。 这是一次性的任务&#xff0c;很简单。 我使用Java nio的…

django debug=false后静态文件丢失_python框架Django实战商城项目之工程搭建

项目说明 该电商项目类似于京东商城&#xff0c;主要模块有验证、用户、第三方登录、首页广告、商品、购物车、订单、支付以及后台管理系统。 项目开发模式采用前后端不分离的模式&#xff0c;为了提高搜索引擎排名&#xff0c;页面整体刷新采用jinja2模板引擎实现&#xff0c;…

mysql解压缩 1067_windows安装mysql8.0.0解压版附出现1067错误解决方法

1、自己到mysql官网下载mysql-8.0.0-dmr-winx64.zip解压缩安装包2、下载页面地址&#xff1a;https://dev.mysql.com/downloads/mysql/3、解压缩到任意目录(我自己是D:\DevTools\mysql-8.0.0)4、配置环境变量添加path路径为你的mysql8.0.0路径下面的bin目录(我的目录是D:\DevTo…

基于C语言的函数指针应用-消息命令处理框架

简述大家都知道&#xff0c;在C语音中指针的地位很重要&#xff0c;各种指针&#xff0c;功能很强大&#xff01;但是用不好&#xff0c;指针也比较容易出问题。这里介绍的是函数指针的一种应用方法&#xff0c;即使用函数指针来实现消息命令的注册与回调处理。代码测试的处理函…

框架中建立浮动框架_建立代理,而不是框架

框架中建立浮动框架自从引入Java注释以来&#xff0c;它已成为大型应用程序框架API的组成部分。 此类API的很好示例是Spring或Hibernate的示例&#xff0c;其中添加了几行注释代码可实现非常复杂的程序逻辑。 尽管人们可以争论这些特定API的缺点&#xff0c;但大多数开发人员都…

easyexcel 动态列_easyexcel动态表头列导出SequenceDiagram 阅读源码事半功倍

EasyExcel简介Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存&#xff0c;poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&#xff0c;但POI还是有一些缺陷&#xff0c;比如07版Excel解压缩以及解压后存储都是…

python3进阶_Python3 进阶教程 2020全新版

REVENGE_7771天前如果不创建class类的话&#xff0c;直接使用dog.name是会报错的&#xff0c;因为一般数据类型不接受这种调用方式0赞 0采集潘某人永不屈服2天前class Student()定义的时候&#xff0c;需要在括号内写明继承的类Person在__init__()方法&#xff0c;需要调用sup…

C语言中的输入输出

在C语言中提供了许多内置的输入输出函数。标准文件的定义在C语言中会把所有设备当文件来处理。为了访问键盘和屏幕&#xff0c;以下三个文件会在程序执行时而打开。标准文件文件指针设备标准输入stdin键盘标准输出stdout屏幕标准错误stderr屏幕C 语言中的输入/输出通常使用内置…

sqlalchemy与mysql区别_sqlite3和sqlalchemy有什么区别?

sqlite3是一个嵌入式RDBMS。A relational database management system (RDBMS) is a database management system (DBMS) that is based on the relational model as introduced by E. F. Codd. Most popular commercial and open source databases currently in use are based…

lambda 延迟执行_Java Lambdas和低延迟

lambda 延迟执行总览 有关在Java和低延迟中使用Lambda的主要问题是&#xff1a; 他们会产生垃圾吗&#xff0c;您能做些什么吗&#xff1f; 背景 我正在开发一个支持不同有线协议的库。 这个想法是&#xff0c;您可以描述要写入/读取的数据&#xff0c;并且有线协议确定它是否…

C语言“悬空指针”和“野指针”究竟是什么意思?

各位&#xff0c;提起C语言我们很自然就会想到指针二字&#xff0c;没错&#xff0c;作为C的核心和灵魂&#xff0c;它的地位咱们就不再赘述了&#xff0c;今天我们想跟大家讲的是指针中的两个特有名词&#xff1a;“悬空指针”和“野指针”。悬空指针C语言中的指针可以指向一块…

grad在python什么模块_深度学习(Deep Learning)基础概念1:神经网络基础介绍及一层神经网络的python实现...

此专栏文章随时更新编辑&#xff0c;如果你看到的文章还没写完&#xff0c;那么多半是作者正在更新或者上一次没有更新完&#xff0c;请耐心等待&#xff0c;正常的频率是每天更新一篇文章。 该文章是“深度学习&#xff08;Deep Learning&#xff09;”系列文章的第一部分&…

ubuntu终端命令停止_从命令行关闭Linux计算机的5种方法

没有操作系统是完美的。 即使相对稳定,驱动程序和应用程序也可能存在问题。 Linux也不例外。 尽管比Windows更稳定(在许多情况下,并非全部!),但可能还需要重新启动Linux计算机。 这可能是因为某些东西不起作用。 或者,您可能通过SSH连接到远程计算机或服务器,并希望它重新…

C语言编写简单朗读发音小工具!!

各位&#xff0c;今天给大家带来C语言结合VBS脚本写的一个简单的朗读小工具&#xff0c;做一个能够发音的C语言程序&#xff08;保证简单&#xff0c;人人都能学会&#xff09;。具备的知识体系&#xff1a;C语言基本框架C语言输入输出C语言文件操作C语言system函数VBS指令&…

jgit_JGit身份验证说明

jgitJGit中的身份验证与本地Git大致相同。 支持SSH和HTTP&#xff08;S&#xff09;等常用协议及其身份验证方法。 本文总结了如何使用JGit身份验证API安全地访问远程Git存储库。 尽管本文中的示例使用CloneCommand&#xff0c;但是可以将所描述的技术应用于连接到远程存储库的…

未发现oracle(tm)客户端和网络组件_SpringColud Eureka的服务注册与发现

一、Eureka简介本文中所有代码都会上传到git上&#xff0c;请放心浏览 项目git地址&#xff1a;https://github.com/839022478/Spring-Cloud在传统应用中&#xff0c;组件之间的调用&#xff0c;通过有规范的约束的接口来实现&#xff0c;从而实现不同模块间良好的协作。但是被…

mysql global index_Oracle中addsplit partition对globallocal index的影响

生产库中某些大表的分区异常&#xff0c;需要对现有表进行在线操作&#xff0c;以添加丢失分区&#xff0c;因为是生产库&#xff0c;还是谨慎点好&#xff0c;今天有空&#xff0c;针对addspli生产库中某些大表的分区异常&#xff0c;需要对现有表进行在线操作&#xff0c;以添…

sap寄售退货单_多个退货单

sap寄售退货单我曾经听说过&#xff0c;过去人们一直在努力使方法具有单个出口点。 我知道这是一种过时的方法&#xff0c;从未认为它特别值得注意。 但是最近我与一些仍坚持该想法的开发人员联系&#xff08;最后一次是在这里 &#xff09;&#xff0c;这让我开始思考。 因此…