CSS之flex需要知道的一切(一)

1.flex速记

1.1 flex: 0 1 auto

很容易理解这一点,flex-basis设置为auto,这意味着Flex项目的初始宽度计算是基于内容的大小来自动变化

flex-grow设置为0,这意味着flex-grow不会改变Flex项目的初始宽度,也就是flex-grow的开关是关闭的,Flex项目不会放大以适应屏幕(Flex容器大小)

flex-shrink的值是1,说明缩小开关是开启的,也就是Flex项目在必要时会缩小

这里写图片描述

1.2 flex: 0 0 auto

宽度是自动计算,不过弹性项目不会伸展或者收缩(因为二者都被设置为零),也就是伸展和收缩开关都被关掉了

它基本上是一个固定宽度的元素,其初始宽度是基于弹性项目中内容大小

这里写图片描述

注意这里一个弹性项目会比另一个容纳更多内容

应该注意到的第一件事情是,这两个弹性项目的宽度是不同的。因为宽度是基于内容宽度而自动计算的。所以缩放一下浏览器,当内容过长的时候你会注意到因为弹性项目不会收缩其宽度。它们从父元素中突出来了,要看到所有内容,必须横向滚动浏览器

这里写图片描述

1.3 flex: 1 1 auto

自动计算初始化宽度,但是如果有必要,会伸展或者收缩以适应整个可用宽度,伸展和收缩开关打开了,宽度自动被计算

这里写图片描述

1.4 flex: “positive number”

这里正数可以代表任何正数(没有引号)

注:将弹性项目的初始宽度设置为零(嗯?没有宽度?),伸展项目以填满可用空间,并且最后只要有可能就收缩项目

注:弹性项目没有宽度,那么宽度该如何计算呢?这个时候 flex-grow 值就起作用了,它决定弹性项目变宽的程度。由它来负责没有宽度的问题

2.绝对(flex:1)和相对Flex项目(flex:auto)

那绝对和相对Flex项目之间到底有啥区别呢?二者之间主要的区别在于间距及如何计算间距??

一个相对Flex项目内的间距是根据它的内容大小来计算的。而在绝对Flex项目中,只根据 flex 属性来计算,而不是内容

2.1 相对Flex项目

这里写图片描述

这里写图片描述

这里写图片描述

这里Flex项目的初始宽度是被自动计算的(flex-basis: auto),上面示例中Flex项目的内容大小不相同,所以Flex项目的大小就会不相等且可以自动伸缩

2.2 绝对Flex项目

这里写图片描述

这里写图片描述

这里只修改一行CSS代码,因为之前说过初始宽度是0,所以宽度根据flex-grow属性来决定,它们会伸展以适应可用空间。

总结:绝对Flex项目的宽度只基于 flex 属性,而相对Flex项目的宽度会基于内容大小而改变,再辅以自动伸缩

3. Auto-margin对齐

注:一定要当心Flex项目上的 margin: auto 对齐。当在Flex项目上使用 margin: auto 时,事情看起来就很怪异了

当在Flex项目上使用 margin: auto 时,值为 auto 的方向(左、右或者二者都是)会占据所有剩余空间

这里写图片描述

这里写图片描述

- flex-grow 值为设置为0。这就解释了为什么列表项不会伸展

- Flex项目向Main-Axis的开头对齐(这是默认行为)

- 由于项目被对齐到Main-Axis开头,右边就有一些多余的空间。看到了吧?

这里写图片描述

现在在第一个列表项(branding)上使用 margin: auto,看看会出啥情况

这里写图片描述

这里写图片描述

刚刚发生了什么?之前的剩余空间现在已经被分配到第一个Flex项目的右边了

这里写图片描述

还记得我前面说的话吧?当在Flex项目上使用 margin: auto 时,值为 auto 的方向(左、右或者二者都是)会占据所有剩余空间

如果想让一个Flex项目的两边都用自动外边距对齐,该怎么办呢?

这里写图片描述

注:那么,这是不是对很酷的自动外边距对齐的一种折衷方案呢?看起来是。如果没注意的话,它也可能是受挫之源。当在一个Flex项目上使用自动外边距(margin: auto)时,justify-content 属性就不起作用了

总结:在Flex项目上使用 margin: auto 时,值为 auto 的方向(左、右或者二者都是)会占据所有剩余空间

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

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

相关文章

win7 安装 IIS

和xp不同,xp安装 IIS需要下载额外的软件包. 步骤 1,依次打开 "控制面板" -> "程序" ->"打开或关闭windows功能": 2,安装图示选择: 确定即可.转载于:https://www.cnblogs.com/listened/p/4014762.html

如何处理Oracle客户端查询乱码问题

From: http://archive.cnblogs.com/a/2074122/ 1,查Oracle数据库创建时候的字符集:Oracle服务器端执行SQL> select name, value$ from sys.props$ where name like NLS%;NAME VALUE$------------------------------ -------------------------------…

git 下载项目到本地

1、新建一个目录,存放下载下来的项目,我在D盘新建了一个“gitspace”文件夹,用来存放下载下来的项目 2、进入刚刚新建的文件夹,即进入“gitspace”,点击鼠标右键,选择"Git Bash Here",如下图&am…

CSS之flex需要知道的一切(二)

4. flex实战项目音乐播放器 1.你可以让整个包含体作为Flex容器(下图中被包含在红色边框内的部分),并把布局的其它部分分成Flex项目(Item 1 和 Item 2) 注:你知道Flex项目也可以成为Flex容器吗?…

11种控制内容展示的JavaScript特效和技巧

交付信息结构是一个交互式用户界面所需要完成的首要任务。更直观的布局结构设计,能使用户更好的理解内容。 不管你想要介绍的是什么样的内容,你都可以以更加互动和更加适应的方式去呈现现它。本文里面,我们为你收集整理了11种高超的JavaScipt…

CSS之Multi-columns的列数和列宽

“Multi-column”译成中文就是“多列”,这个”Multi-column”是W3C给CSS3增加的一个多列布局模块(CSS Multi-column Layout Module)。它主要应用在文本的多列布局方面,对于文本的多列布局我想大家并不陌生,因为报纸和杂…

CSS之Multi-columns的column-gap和column-rule

column-gap就相当于两列之间的空白处,而column-rule就相当于一条分隔线,换句话说呢?column-gap就像我们web页面中的margin一样,而column-rule就类似于border,不过他们只是存在相邻两列之间 另外column-gap和column-ru…

CSS之Multi-columns的跨列

column-span主要用来定义一个分列元素中的子元素能跨列多少列。前面大家都知道column-width,column-count等属性让一元素分成多列,不管里面元素如何排放顺序,他们都是从左向右的放置内容,但有时我们需要基中一段内容或一个标题不进…

详解Microsoft Office Communication Server (OCS) 2007 标准版部署(上)

详解Microsoft Office Communication Server (OCS) 2007 标准版部署(上)前几篇博文中介绍了LCS今天我们来部署ocs,它是lcs的升级版,功能比lcs多个很多,可以视频,多人会议,等多项功能。但是安装起…

CSS之浮动(一)

1. 浮动出现的意义其实只是用来让文字环绕图片而已,仅此而已。而我们目前用浮动实现页面布局本不是浮动该干的事情 2. 浮动的包裹性 撇开浮动的“破坏性”,浮动就是个带有方位的display:inline-block属性 display:inline-block某种意义上的作用就是包…

CSS之浮动(二)

1. 浮动的非本职工作 我们只要静下心来好好想想浮动的本质,实现的原理,就可以知道为什么浮动本不应该用来对页面进行布局。还记得上一部分所说的浮动的本质吗?即“包裹与破坏”。我们可以用这个(“包裹与破坏”)解释为…

iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)

本文转载至 http://blog.csdn.net/liuwuguigui/article/details/39494597IOS8UIAlertViewUIActionSheetiOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“contro…

记腾讯互娱网站布局(1)

1.导航栏 第一步:设置最外层的容器的定位方式、宽度和高度以及背景 第二步:给第二层容器设置内容的居中显示 第三步:设置居中的logo的定位和位置 第四步:设置6个标志的布局 设置所有的导航栏项目的定位和距离顶部的距离&#xff0…

Taro+react开发(48)taro中switchTab

跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面

记腾讯互娱网站布局(2)

2.头图特效 给头图设置宽度100%以及定高1110px,同时设置display为table,和定位方式fixed 通过设置绝对定位以及固定宽高和背景的方式来实现 存放动态特效的盒子采用绝对定位,并且触发流体特效以及百分百宽的方式 主图上标志的实现是采用外部容…

ABBYY

ABBYY FineReader Engine泰比OCR文字识别控件移动版 产品功能:OMR识别控件 平台: 开发商:ABBYY”‘Š€ 版本:产品介绍:手机识别的高品质和精度 泰比(ABBYY)Mobile OCR Engine是基于对世界知名的…

JS预编译过程

首先讲预编译过程 JS代码执行过程三部曲 过程 语法分析:首先扫描一遍,看有没有低级的语法错误预编译解释执行:解释一行执行一行 预编译low讲 函数声明整体提升,变量 的声明提升(这个其实很low,点击low…

记腾讯互娱网站布局(3)

3.图文回顾 先看看整个网站的全貌 这里’display:table;width:100%;table-layout:fixed’是约定俗成的写法,用来保证固定的表单布局,同时让连续的英文单词不会超出 内部采用’display:table-cell’属性将内容当做表格的td标签一样显示,设置v…

Taro+react开发(51) 数组对象和数组得处理

for (var key of value) {arrcode.push(selectorIndustry.find(obj > obj.value key));}