热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

css3系列之弹性盒子flex

弹性盒子(伸缩盒)注意,本篇会很长,非常长,因为弹性盒子的知识点比较多搜索弹性盒子的属性ctrlF如果觉得图太小,ctrl键

弹性盒子(伸缩盒)

注意,本篇会很长,非常长, 因为弹性盒子的知识点比较多

搜索 弹性盒子的属性  ctrl + F   如果觉得图太小, ctrl + +键

主要的属性有:  (主要分两部分讲, 一部分讲 设置在父元素上的属性,一部分讲 设置在子元素上的属性, 还有最后一些简单的应用)

  flex

  flex-grow

  flex-shrink  (真实计算公式)

  flex-basis

  flex-direction

  flex-wrap

  align-content

  align-items

  align-self

  justify-content

  order

设置弹性盒子的属性:

  display:flex    inline-flex  (这两者的区别就是, 一个是 block   一个是 inline-block)

首先要注意的是:

  你给父元素设置了 display:flex  子元素们并不会改变成内联元素。  虽然他们的效果看起来是, 但是实际上并不会改变。该是啥,还是啥

接下来来看一下,他的效果,及属性和应用:

 

  首先,display: flex  是设置在 父元素上面的,设置之后, 他里面的子元素,就会变成 弹性盒子了。(有些人,把父元素叫做盒子,把里面的子元素叫做 项目)

接下来,几个属性, 都是设置在 父元素上面的:↓  

  flex: direction

 设置主轴的方向。 默认的主轴是 横向 的,从左到右排列,另一条轴叫做 交叉轴,  也就是我们理解的纵向,

参数:

  row:默认值,主轴横向的,从左向右排列

  row-reverse:主轴还是横向的,只是里面项目的 排列方式不一样, 是从右向左的。

  column:把主轴变成 纵向的,排列方式 也就变成了,从上向下

  column-reverse:主轴变成 纵向的,排列方式颠倒, 从下向上排列。

 

  flex-wrap:
设置,子元素溢出,是否换行。

参数:

  nowrap:默认值(也就是不换行。子元素如果的宽  大于父元素的,会压缩子元素)  把所有子元素排列在一行

  wrap:子元素溢出,会换行,变成多行的形式

  wrap-reverse:颠倒 wrap 的排列方式 (也会变成多行的形式)

 

  justify-content:

设置横轴(横向)的对齐方式

参数:

  flex-start:默认值 对齐起始位置,第一个子元素的起始位置,然后其他子元素向它看齐

  flex-end:跟上面相反的,也就是说,人家对齐在开始,这个对齐在 最后面

  center:居中对齐

  space-between:如果有多余的空间,就会平均分布,每个子元素的 两边空白空间保持一致(头尾的子元素贴边)

  space-around:如果有多余的空间,就会平均分布,每个子元素的 两边空白空间保持一致(头尾的子元素不会贴边)

 

  align-items: 

设置(纵轴)纵向的对齐方式:(单行)

参数:

   flex-start:默认值 对齐起始位置

  flex-end:跟上面相反的,也就是说,人家对齐在起始位置,这个对齐在 最下面

  center:居中对齐

  baseline:   基线对齐

  stretch:   如果没有设置子元素高度,那么全部子元素的高度都会被拉伸

 

既然学了纵向 和  横向的对齐方式, 那么现在就用他来设置 一下,我们平常的 居中功能

我们平常设置居中, 是不是要设置 position: 然后就left  calc  50% - 去子元素的 宽一半,  然后再去计算 top?  很麻烦对吧。 

看看以下的方法,是不是简单了许多

 

  align-content:

align-content 跟上面的 align-items 的区别就是,一个是操作单行的,一个是操作多行的。  参数都是一样的设置, 除了多了两个 space-betwwen  ,space-around   

设置纵向的对齐方式(多行)

参数:

  flex-start:

  flex-end:

  center:  

  space-betwwen  

  space-around   

  stretch

 

接下来的几个属性,都是设置在 子元素上的

   align-self:

单独设置对齐方式。如果父元素有设置 align-items的话, 会被子元素给替代掉,也就是,align-self 和 align-items同时设置, 会采用子元素的align-self 对齐方式

但是,如果是  align-self 和 align-content 同时设置, 会采用 父元素的 align-content的 对齐方式

参数:

  auto:默认值,也就是遵从 父元素 align-items 的对齐方式。

  flex-start:对齐起始位置

  flex-end:跟上面相反的,也就是说,人家对齐在起始位置,这个对齐在 最下面

  center:居中对齐

  baseline:   基线对齐

  stretch:   如果没有设置子元素高度,那么全部子元素的高度都会被拉伸

 

  order:

设置数值,来决定他们的排列顺序

参数:

  0:默认值

  数值越小,越靠前  支持负数(-1)

 

  flex-grow:

设置数值来 自定义 扩展的比例,(不支持负值)

参数:

  默认值:0 (也就是,不用扩展)

 

  flex-shrink: (flex-shrink的真实计算公式)

设置子元素们的宽加起来大于 父元素宽时,要怎么压缩 成一行,

参数:

  1:默认值(超出的话,就按照 比例1 压缩)

学了上面的那个 grow之后, 是不是觉得,他的计算公式那么简单, 那么跟他对应的 shrink 计算公式也一样?其实不是的,他的计算公式,有点冷门,乃至于w3c 都没有公式,那么多他的计算公式怎么样呢? 看下面的例子吧~

 

 

 还有最后一点,这也是最冷门的知识点。flex-shrink 参与计算的不是盒子的宽, 而是内容区的宽, border 和  padding 都不用加进去计算的。只计算content

 

  flex-basis:(如果使用了flex-direction 改变了主轴的方向,那么他控制的,就变成了高度。不是宽度,也就是说,横向控制宽度,纵向控制高度)

如果这个属性呢, flex-basis: 100px  你这样设置,他跟 width: 100px的效果是一样的。 

其实把,flex-basis 和 width 两个一起设置,是有用意的。flex-basis 是决定了 元素宽度的 最小值, width,是决定了元素宽度可撑开的 最大值。

 

还有最后的一个值:

  flex:

他是 flex-grow  flex-shrink flex-basis 的缩写形式

  flex:1  1  20%;

代表的是,可以伸缩,该元素的最小宽度是 20%。

  

我们来利用,今天的全部内容来实现几个案例。

  第一个:居中

  

    第二个:几等分。

  第三个:其中一个固定宽度的布局

 

  第四个:浮动

有人可能会问, float 不好吗?  emmm 确实不好, 因为 父级会受浮动流的影响,而且会触发bfc 等等。

 

  第五个: 圣杯布局

 

转:https://www.cnblogs.com/yanggeng/p/11212526.html



推荐阅读
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 本文旨在为初学者提供一个详细的指南,从零开始学习如何使用 ASP.NET MVC5 和 Entity Framework 6 (EF6) 搭建项目。通过逐步指导,帮助读者理解 MVC 架构的核心概念,并掌握基本的操作方法。 ... [详细]
  • Web网络基础
    目录儿1使用HTTP协议访问Web2HTTP的诞生2.1因特网的起源2.2互联网、因特网与万维网2.3万维网与HTTP3网络基础TCPIP3.1TCPIP协议族3.2TCPIP的分 ... [详细]
  • 本文将详细介绍如何实现类似于CSDN博客的页面返回顶部功能,通过调整返回速度和图标显示条件,使用户体验更加流畅。适合前端开发者参考学习。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
  • 作为一名CSS初学者,我在博客园中尝试通过CSS美化页面,特别是为超链接添加图标,以提升阅读体验。本文将分享如何使用CSS和字体图标库来实现这一功能。 ... [详细]
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • BeautifulSoup4 是一个功能强大的HTML和XML解析库,它能够帮助开发者轻松地从网页中提取信息。本文将介绍BeautifulSoup4的基本功能、安装方法、与其他解析工具的对比以及简单的使用示例。 ... [详细]
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 构建高性能Feed流系统的设计指南
    随着移动互联网的发展,Feed流系统成为了众多社交应用的核心组成部分。本文将深入探讨如何设计一个高效、稳定的Feed流系统,涵盖从基础架构到高级特性的各个方面。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • 本文探讨了在使用Apache Flink向Kafka发送数据过程中遇到的事务频繁失败问题,并提供了详细的解决方案,包括必要的配置调整和最佳实践。 ... [详细]
  • 配置PicGo与Gitee结合Typora打造高效写作环境
    本文详细介绍了如何通过PicGo和Gitee搭建个人图床,并结合Typora实现高效的文章撰写。包括创建图床项目、生成访问令牌、安装配置PicGo和Typora等步骤。 ... [详细]
  • 本文简要介绍了如何使用 Python Elasticsearch DSL 进行基本和高级查询,包括连接 Elasticsearch、执行简单和复杂查询、聚合、排序及分页等。 ... [详细]
author-avatar
我还没公主
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有