CSS3 Flex 学习笔记

CSS3 Flex 学习笔记

参考

菜鸟教程

个人认知习惯

  1. 这个是什么,存在价值,直接点:为什么诞生他
  2. 怎么学习好
  3. 举一反三使用

Flex 是什么,存在的价值?

  1. 思考: 我们已经有盒状模型,依赖 display属性 + position属性 + float属性,为什么要诞生flex,盒子模型有哪些缺点呢
    1. 盒子模型特殊布局非常不方便,比如,垂直居中就不容易实现。
      注意: 本人不是专业前端,缺点是百度过来的,希望前端大佬补充下
  2. 2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。
  3. Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性

学习Flex

指定盒子为flex

.box{
  display: flex;
}
/*行内元素也可以使用Flex布局*/
.box{
  display: inline-flex;
}
/*Webkit内核的浏览器,必须加上-webkit前缀*/
.box{
  display: -webkit-flex; /* Safari */
  display: flex;
}

基本概念

借用网上一张结构图
在这里插入图片描述

  1. 容器:
    采用Flex布局的元素,称为Flex容器(flex container),简称”容器”。它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称”项目”。
  2. 水平的主轴(main axis),垂直的交叉轴(cross axis)
  3. 主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end
  4. 交叉轴的开始位置叫做cross start,结束位置叫做cross end。
  5. 单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
    注意:项目默认沿主轴排列

容器属性

属性名作用
flex-directionflex-direction属性决定主轴的方向(即项目的排列方向)
flex-wrap如果一条轴线排不下,如何换行。
flex-flowdirection和wrap结合体
justify-content定义了项目在主轴上的对齐方式
align-item定义项目在交叉轴上如何对齐
align-content定义了多根轴线的对齐方式
  1. flex-direction 属性
    flex-direction 属性决定主轴的方向(即项目的排列方向)

    .box{
    	flex-direction: row | row-reverse |column | column-reverse
    }
    

    在这里插入图片描述

    说明
    row(默认值)主轴为水平方向,起点在左端
    row-reverse主轴为水平方向,起点在右端
    column主轴为垂直方向,起点在上沿
    column-reverse主轴为垂直方向,起点在下沿
  2. flex-wrap 属性
    默认情况下,项目都排在一条线(又称“轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行
    在这里插入图片描述

    .box{
    	flex-wrap: nowrap | wrap | wrap-reverse;
    {
    
    1. nowrap(默认):不换行
      在这里插入图片描述
    2. wrap: 换行,第一行在上方
      在这里插入图片描述
    3. wrap-reverse:换行,第一行在下方
      在这里插入图片描述
  3. flex-flow
    flex-flow 属性是flex-direction和flex-wrap属性的简写形式,默认值为row nowrap.

    .box{
    	flex-flow: <flex-direction> <flex-wrap>;
    }
    
  4. justify-content
    justify-content 属性定义了项目在主轴上的对齐方式

    .box{
    	justify-content: flex-start | flex-end | center | space-between | space-around;
    }
    

    在这里插入图片描述

    作用
    flex-start(默认值)左对齐
    flex-end右对齐
    center居中
    space-between两端对齐,项目之间的间隔都相等.
    space-around每个项目两侧的间隔相等.所以,项目之间的间隔比项目与边框的间隔大一倍
  5. align-items属性
    align-items属性定义项目在交叉轴上面如何对齐

    .box{
    	align-items: flex-start | flex-end | center | baseline |stretch
    }
    

    在这里插入图片描述

    作用
    flex-start交叉轴的起点对齐。
    flex-end交叉轴的终点对齐。
    center交叉轴的中点对齐。
    baseline项目的第一行文字的基线对齐。
    stretch(默认值)如果项目未设置高度或设为auto,将占满整个容器的高度。
  6. align-content
    align-content 属性定义多跟轴线对齐方式,如果只有一个轴线,该属性不起作用

    .box{
    	align-content: flex-start | flex-end | center | space-between | space-around | stretch ;
    }
    

    在这里插入图片描述

    属性作用说明
    flex-start与交轴的起点对齐
    felx-end与交轴的终点对齐
    center与交叉轴的中点对齐
    space-between与交叉轴两端对齐,轴线之间的间隔平均分布。
    space-arount与交叉轴两端对齐,轴线之间的间隔平均分布。
    stretch轴线占满整个交叉轴。

项目(默认沿主轴排列DOM称为项目)属性

属性作用
order定义项目的排列顺序。数值越小,排列越靠前,默认为0。
flex-grow定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大
flex-shrink定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小
flex-basis定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
flex是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch
  1. order
    rder属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

    .item{
    	order: <integer>;
    }
    

    在这里插入图片描述

  2. flex-grow
    flex-grow 属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

    .item{
    	flex-grow: <integer>;/* default 0 */
    }
    

    在这里插入图片描述
    如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。

  3. flex-shrink
    flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

    .item {
      flex-shrink: <number>; /* default 1 */
    }
    

    在这里插入图片描述
    如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
    负值对该属性无效。

  4. flex-basis
    flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

    .item{
    	flex-basis: <length> | auto; /* default auto */
    }
    

    它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

  5. flex属性
    flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

    .item {
      flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
    }
    

    该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

    建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

  6. align-self属性
    align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

    .item {
      align-self: auto | flex-start | flex-end | center | baseline | stretch;
    }
    

    在这里插入图片描述
    该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

开始使用

  1. 思考(待求证,欢迎大佬指点)
    1. flex-direction 属性是写在 flex容器上面?还是写在项目上面,个人倾向是容器:
      for example:

      .box{
      	display:flex;
      	flex-direction: row;
      }
      
  2. 项目距离main-start 距离可以具体设置?还是flex只考虑自适应类似,想要这种自己控制边距还是用box盒子?
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值