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,一经查实,立即删除!

相关文章

[文摘20090203]手机基本知识

本文转自:http://www.paipaitxt.com/r4625042/ 原文如下: ~手机类型~ 按操作系统划分,可分为:智能手机与非智能手机 一般具有:Symbian6.0,Windows CE,Palm,Linux开放性操作系统的手机…

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容器吗?…

iOS获取电量方法

ios简单的方法: [UIDevice currentDevice].batteryMonitoringEnabled YES;double deviceLevel [UIDevice currentDevice].batteryLevel;获取当前剩余电量, 我们通常采用上述方法。这也是苹果官方文档提供的。 它返回的是0.00-1.00之间的浮点值。 另外, -1.00表示模…

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

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

MAC上安装brew

MAC上安装brew brew 是 Mac 下的一个包管理工具,作用类似于 centos 下的 yum。 brew 可以用一条命令,就可以在mac上安装、卸载、更新各种软件包,因为brew的使用方便,如今已成为使用mac电脑的程序员的必备工具 mac上如何安装bre…

CSS之Multi-columns的列数和列宽

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

[Linux] 修改系统默认编码

locale 命令 locale 命令用以设置程序运行的语言环境。 locale 设置语言环境的命名规则为 Language_area.charset,例如 en_US.utf8 表示语言为英语,地区为美国,字符集为 UTF-8。 查看当前字符映射文件 $ locale charmapUTF-8 查看可用公共语言…

Taro+react开发(44)taro基本使用

Taro.Component Taro.Component 是一个抽象基础类,因此直接引用 Taro.Component 几乎没意义。相反,你通常会继承自它,并至少定义一个 render() 方法。通常你定义一个 Taro 组件相当于一个纯 JavaScript 类:class Welcome extends …

人生的34个好习惯

1.不说“不可能”三个字2.凡事第一反应::找方法,而不是找借口3.遇到挫折大声对自己说:“太棒了”4,不说消极的话,不落入消极情绪,一旦出现立即正面处理5.凡事先订立目标,并且尽量制作…

homebrew长时间停在Updating Homebrew 这个步骤

在国内的网络环境下使用 Homebrew 安装软件的过程中可能会长时间卡在 Updating Homebrew 这个步骤。 例:执行 brew install composer 命令 ➜ ~ brew install composer Updating Homebrew... # 如果碰到长时间卡在这里,参考以下 2 种处理方法 方法 1&…

bash命令行中带通配符参数何时展开??

在bash中执行的命令&#xff0c;有些参数经常会带个通配符的&#xff0c;但是你知道这个参数是何时展开的吗&#xff1f; 先来看下简单的bash小代码&#xff1a; [zcmdebug #88]$cat del.sh #!/bin/bashif [ $# -lt 2 ]; thenecho "Usage: $0 <separator> <fil…

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

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

Redis多机功能介绍

Redis多机功能目的&#xff1a;以单台Redis服务器过渡到多台Redis服务器 Redis单机在生产环境中存在的问题 1、内存容量不足 Redis使用内存来存书数据库中的数据&#xff0c;但是对于一台机器来说&#xff0c;硬件的内存容量是有限的&#xff0c;当我们需要存储的数据量超过机器…

Taro+react开发(43)重新渲染置空

changeTab type > {this.setState({curType: type,pageIndex: 1,getStauList: []},() > {this.getStatusList();});};

C#设计模式

C#设计模式 (1) .NET设计模式系列文章 作者&#xff1a;TerryLee 出处&#xff1a;http://terrylee.cnblogs.com/ (2) 设计模式 作者&#xff1a;吕震宇出处&#xff1a;http://www.cnblogs.com/zhenyulu/ (3) Design & Pattern 作者&#xff1a;张逸:晴窗笔记 - (张逸)…

watch命令

watch是一个非常实用的命令&#xff0c;基本所有的Linux发行版都带有这个小工具&#xff0c;如同名字一样&#xff0c;watch可以帮你监测一个命令的运行结果&#xff0c;省得你一遍遍的手动运行。在Linux下&#xff0c;watch是周期性的执行下个程序&#xff0c;并全屏显示执行结…