ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CSS3基础 -- 弹性盒子模型

2021-09-05 21:58:16  阅读:168  来源: 互联网

标签:CSS3 flex 盒子 -- 元素 弹性 取值 属性


弹性盒子模型

弹性盒子作用

  • 使用弹性盒子,我们可以轻松创建自适应浏览器窗口的流动布局和自适应字体大小的弹性布局。

弹性盒子特点

当我们对一个元素定义它的display属性是flex或inline-flex时,这个元素就会变成一个弹性盒子,会具有弹性盒子特点。

  • 当子元素宽度之和小于父元素宽度时,所有子元素最终的宽度就是定义的宽度。
  • 当子元素宽度之和大于父元素宽度时,子元素会按照比例来划分。

弹性布局的基本概念

flex容器和flex items

  • 采用弹性布局的元素,称为flex容器。
  • flex容器的子元素自动成为flex items。

主轴和交叉轴

  • 主轴

    • 主轴是水平的。

    • flex items沿着主轴的方向排列。

    • 主轴开始位置是和flex container的交叉点,称为main start。

      • 默认情况,mainstart是主轴和flex container在左边的交叉点。
    • 主轴结束位置是和flex container的交叉点,称为main end。

      • 默认情况,mainend是主轴和flex container在右边的交叉点。
  • 交叉轴

    • 交叉轴是垂直的。

    • 交叉轴的开始位置是和flex container的交叉点,称为cross start。

      • 默认情况,cross start是顶部的交叉点。
    • 交叉轴的结束位置是和flex container的交叉点,称为cross end。

      • 默认情况,cross end是底部的交叉点。

弹性盒子的10个属性

flex-grow

  • 定义弹性盒子的子元素的放大比例。(只有在弹性盒子子元素宽度之和小于弹性盒子宽度时才会生效)。

    • flex-grow: 数值;

    • flex-grow属性取值的默认值是0,当取值是0的时候,表示不索取父元素的剩余空间,当取值大于0,那么表示索取父元素的剩余空间。

    • 一个例子,父元素下有2个元素A和B,其中父元素宽400px,A宽100px,B宽200px,那么父元素的剩余空间是100px。

      • 如果A和B的flex-grow属性都是0,那么父元素的剩余空间是100px。
      • 如果A的flex-grow属性值是a,B的flex-grow属性是b,那么A的宽变为100 + 100 * a/(a+b),B的宽变为200 + 100 * b/(a+b)。

flex-shrink

  • 定义弹性盒子的子元素的缩小比例。(只有在弹性盒子子元素宽度之和大于弹性盒子宽度时生效)。

    • flex-shrink属性定义当所有子元素宽度之和大于弹性盒子宽度之和时,子元素如何缩小自己的宽度。

      • flex-shrink: 数值;

      • flex-shrink属性取值是一个数值,默认值是1,当flex-shrink属性取值是0时,表示子元素不缩小。

      • 一个例子,弹性盒子元素下有2个子元素,A和B,其中,父元素宽400px,A元素宽200px,B元素宽300px,那么A和B元素之和超出父元素宽度为100px。

        • 如果把A的flex-shrink属性设置为a,B的flex-shrink属性设置为b,那么A的宽度是200 - 200 * (200 * a)/(200 * a + 300 * b)。

flex-basis

  • 定义子元素的宽度。

    • flex-basis的作用和width一样,但是在弹性盒子中flex-basis的语义更好。

      • 如果一个子元素同时设置flex-basis属性和width属性,那么flex-basis属性会覆盖width属性。

        • flex-basis属性有2个属性值

          • auto
          • 长度值,单位可以是px、em、百分比。

flex

  • flex-grow、flex-shrink、flex-basis的复合属性。

    • flex: grow shrink basis;

      • flex属性的默认值是 0 1 auto。

flex-direction

  • 定义弹性盒子子元素的排列方向。(flex-direction属性定义在弹性盒子元素上)。

    • flex-direction: 取值;

      • flex-direction属性有4个取值

        • row(默认值)

          • 横向排列
        • row-reverse

          • 横向反向排列
        • column

          • 纵向排列
        • column-reverse

          • 纵向反向排列
    • 换句话就是定义弹性盒子中的子元素是横着排还是竖着排。

    • flex-direction实际上定义的是flex容器的主轴方向。

flex-wrap

  • 定义弹性盒子子元素是单行显示还是多行显示。

    • flex-wrap: 取值;

    • flex-wrap属性的3个取值

      • nowrap(默认值)

        • 单行显示。
      • wrap

        • 多行显示(换行显示)。
      • wrap-reverse

        • 多行显示,但是是反方向的。

          • 把wrap的结果整个倒过来。

flex-flow

  • flex-direction、flex-wrap的复合属性。

    • 我们可以使用flex-flow属性来同时设置flex-direction属性和flex-wrap属性。
    • flex-flow: direction wrap;
    • flex-flow属性的默认值是row nowrap。

order

  • 定义弹性盒子的子元素的排列顺序。

    • order属性的取值是一个正整数。

      • 越小的order,将会排在前面。
    • order: 取值;

justify-content

  • 定义弹性盒子的子元素在主轴上的对齐方式。

    • justify-content: 取值;

    • justify-content 属性有5个属性值

      • flex-start(默认值)

        • 所有flex items靠主轴起点对齐。
      • center

        • 所有子元素靠主轴中点对齐。
      • flex-end

        • 所有子元素靠主轴终点对齐。
      • space-between

        • 所有子元素平均分布。
      • space-around

        • 所有子元素平均分布,但两边留有一定的间距。

align-items

  • 定义弹性盒子的子元素在交叉轴上的对齐方式。

    • align-items: 取值;

    • align-items属性的5种取值。

      • flex-start(默认值)

        • 所有子元素在cross start处。
      • center

        • 所有子元素在交叉轴中点。
      • flex-end

        • 所有子元素在cross end处。
      • baseline

        • 所有子元素在弹性盒子基线处。
      • stretch

        • 拉伸子元素以适应弹性盒子高度。

XMind: ZEN - Trial Version

标签:CSS3,flex,盒子,--,元素,弹性,取值,属性
来源: https://blog.csdn.net/weixin_41387874/article/details/120122210

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有