flex布局之容器元素属性

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: flex布局之容器元素属性

容器元素属性


  • order


  • flex-grow


  • flex-shrink


  • flex-basis


  • flex


  • align-self


order


该属性是决定元素排列顺序的。数值越小,排列越靠前,默认为0。如果都为0,就按照代码顺序排列。


<style>
    .box {
      width: 800px;
      display: flex;
    }
    .box div {
      width: 200px;
    }
    .first {
      background: red;
      order: 4;
    }
    .second {
      background: blue;
      order: 3;
    }
    .third {
      background: yellow;
      /* order: 2; */
    }
    .four {
      background: green;
    }
  <div class="box">
    <div class="first">1</div>
    <div class="second">2</div>
    <div class="third">3</div>
    <div class="four">4</div>
  </div>


网络异常,图片无法展示
|


flex-grow


当容器宽度大于容器元素总宽度时,规定容器元素的放大比例。默认为0,即如果存在剩余空间,也不放大。注意:当容器设为flex-wrap: nowrap;不换行的时候,容器宽度有不够分的情况,弹性元素会根据flex-grow来决定。弹性容器的宽度正好等于元素宽度总和,无多余宽度,此时无论flex-grow是什么值都不会生效。


<style>
    .box {
      width: 800px;
      display: flex;
      border: 1px solid black;
    }
    .box div {
      width: 100px;
    }
    .first {
      background: red;
      /* order: 4; */
      flex-grow: 2;
    }
    .second {
      background: blue;
      /* order: 3; */
      flex-grow: 1;
    }
    .third {
      background: yellow;
      /* order: 2; */
    }
    .four {
      background: green;
    }
  </style>
  <div class="box">
    <div class="first">1</div>
    <div class="second">2</div>
    <div class="third">3</div>
    <div class="four">4</div>
  </div>


网络异常,图片无法展示
|


网络异常,图片无法展示
|


flex-shrink


定义了项目的缩小比例(容器宽度<元素总宽度时如何收缩),默认为1,即如果空间不足,该项目将缩小。默认情况下等比例收缩。如果值为0,则该元素不缩小。


<style>
    .box {
      width: 800px;
      display: flex;
      border: 1px solid black;
    }
    .box div {
      width: 250px;
    }
    .first {
      background: red;
      /* order: 4; */
      /* flex-grow: 2; */
      flex-shrink: 0;
    }
    .second {
      background: blue;
      /* order: 3; */
      /* flex-grow: 1; */
      flex-shrink: 2;
    }
    .third {
      background: yellow;
      /* order: 2; */
    }
    .four {
      background: green;
    }
  </style>
  <div class="box">
    <div class="first">1</div>
    <div class="second">2</div>
    <div class="third">3</div>
    <div class="four">4</div>
  </div>


网络异常,图片无法展示
|


flex-basis(个人感觉用处不大)


设置的是元素在主轴上的初始尺寸,所谓的初始尺寸就是元素在flex-growflex-shrink生效前的尺寸,即设置flex-grow, flex-shrink后该值将失效。默认值为auto。如设置了width则元素尺寸由width/height决定(主轴方向),没有设置则由内容决定。当设置为px的数值时,他会覆盖掉元素自身的主轴方向的宽度/高度。


flex-basis: 0 和 flex-basis: auto的区别:


  • flex-basis: auto 表示项目的本来大小,当设置为 auto 时会根据主轴方向检索该 flex-itemwidthheight 值作为 flex-basis 的值。如果 widthheight 值为 auto,则 flex-basis 设置为 content,也就是基于 flex 的元素的内容自动调整大小。


  • flex-basis: 0 相当于指定了宽度或高度(由主轴方向决定)为 0。


flex


flex属性是flex-grow, flex-shrinkflex-basis的简写,默认值为0 1 auto


一些常用缩写表示:


-   flex: 1 = flex: 1 1 0%
-   flex: 2 = flex: 2 1 0%
-   flex: auto = flex: 1 1 auto
-   flex: none = flex: 0 0 auto,常用于固定尺寸不伸缩


align-self


允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。


可以取:align-self: auto | flex-start | flex-end | center | baseline | stretch

默认值为auto,表示继承父元素的align-items属性。


<style>
    .box {
      width: 800px;
      height: 300px;
      display: flex;
      border: 1px solid black;
      align-items: center;
    }
    .box div {
      width: 150px;
    }
    .first {
      background: red;
      align-self: auto;
    }
    .second {
      background: blue;
      align-self: stretch;
    }
    .third {
      background: yellow;
      align-self: baseline;
    }
    .four {
      background: green;
      align-self: flex-end;
    }
  </style>
  <div class="box">
    <div class="first">1</div>
    <div class="second">2</div>
    <div class="third">3</div>
    <div class="four">4</div>
  </div>


网络异常,图片无法展示
|


flex布局的注意点:


  • 如果父元素flex-wrap: nowrap,即使子元素宽度固定,最后也会被压缩成一行显示。


网络异常,图片无法展示
|


  • 设置父元素display: flexdisplay: inline-flex的区别。他只是将父元素当场块级元素,还是内联元素。子元素不会受到影响。


  • 如果子元素未设置高度,那么父元素align-items: stretch。子元素将被拉伸,占满父元素的高度。


网络异常,图片无法展示
|



相关文章
|
7月前
|
前端开发 API 开发者
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
490 75
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
|
4月前
|
UED 容器
10.HarmonyOS Next布局进阶:嵌套Flex容器与空间分配策略
在HarmonyOS Next的ArkUI框架中,Flex布局是构建用户界面的核心技术之一。通过嵌套使用Flex容器,我们可以创建复杂而灵活的界面结构,满足各种应用场景的需求。本教程将深入探讨如何在HarmonyOS Next中使用嵌套Flex容器实现复杂布局,以及如何合理分配和控制空间。
111 0
|
开发者 容器
flex 布局属性在实际项目中的应用场景有哪些?
flex 布局属性在实际项目中的应用场景有哪些?
|
11月前
|
开发者 UED 容器
鸿蒙next版开发:ArkTS组件通用属性(Flex布局)
在HarmonyOS next中,ArkTS的Flex布局是一种强大且灵活的布局方式,支持水平或垂直方向排列元素,并能动态调整大小和位置以适应不同屏幕。主要属性包括justifyContent、alignItems、direction和wrap,适用于导航栏、侧边栏和表单等多种场景。示例代码展示了如何使用这些属性创建美观的布局。
425 10
|
11月前
|
容器
在 Flex 布局中,如何设置元素在侧轴上的初始对齐方式?
【10月更文挑战第22天】同时,还可以进一步探索其他 Flex 布局相关的属性和技巧,以更好地掌握 Flex 布局的强大功能,创造出更具创意和适应性的页面布局。
331 2
|
移动开发 数据管理 HTML5
Twaver-HTML5基础学习(22)层管理容器(LayerBox)、告警管理容器(AlarmBox)、列管理容器(ColumnBox)、属性管理容器(PropertyBox)
本文介绍了Twaver HTML5中的多种管理容器:层管理容器(LayerBox)、告警管理容器(AlarmBox)、列管理容器(ColumnBox)和属性管理容器(PropertyBox)。文章解释了这些容器的作用、如何获取它们,并提供了一些基本的操作方法。这些容器分别用于管理图层、告警、表格列和属性对象,是TWaver中数据管理和组织的重要部分。
113 1
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
443 0
|
4月前
|
设计模式 容器
13.HarmonyOS流式卡片列表实现指南:Flex多行布局详解
在现代移动应用开发中,流式卡片列表是一种常见且实用的UI设计模式。它能够自适应屏幕宽度,在有限空间内高效展示多个内容项。本教程将详细讲解如何使用HarmonyOS的ArkUI框架中的Flex组件实现一个灵活的流式卡片列表,重点关注多行布局与对齐策略的应用。
103 2
|
4月前
|
开发者 UED 容器
07.精通HarmonyOS Flex对齐:从基础到高级布局技巧(上)
在HarmonyOS Next的ArkUI框架中,Flex容器提供了强大而灵活的对齐系统,使开发者能够精确控制子元素在容器中的排列方式。掌握这些对齐技术,是构建专业级用户界面的关键。
122 0