Flex布局和主要属性用法详解(一)

简介: Flex布局和主要属性用法详解

前言

flex布局是继标准流布局浮动布局定位布局后的第四种布局方式。这种方式可以非常优雅的实现子元素居中或均匀分布,甚至可以随着窗口缩放自动适应。flex布局在浏览器中存在一定的兼容性(具体参考:Flex兼容性)。但是在小程序中,是完全兼容flex布局的,并且微信官方也是推荐使用flex布局的。下面就来详细的讲下flex布局。

一个小例子

看以下代码:

<view class='outter'>
  <view class='inner'>1</view>
  <view class='inner'>2</view>
</view>
.outter{
  display: flex;
  justify-content: space-between;
  width: 300px;
  height: 200px;
  background: pink;
}
.outter .inner{
  background: gray;
  width: 100px;
  height: 100px;
}

最后的效果图:

基本概念:

  1. 弹性容器:包含着弹性项目的父元素。通过设置 display 属性的值为 flex 或 inline-flex 来定义弹性容器。
  2. 弹性项目(Flex item):弹性容器的每个子元素都称为弹性项目。弹性容器直接包含的文本将被包覆成匿名弹性项目。也可以称为子容器。
  3. 轴(Axis):每个弹性框布局包含两个轴。弹性项目沿其依次排列的那根轴称为主轴(main axis)。垂直于主轴的那根轴称为侧轴(cross axis)。
  4. 方向(Direction):可以通过flex-direction来确定主轴和侧轴的方向。

设置在主轴上的排列方式

默认情况下,主轴的方向是从左到右。在主轴方向上,可以通过justify-content属性来设置他们的排列方式。排列方式有以下几种:

  • flex-start:项目靠近父盒子的左侧。默认采用的就是这种排列方式。示例图如下:
  • flex-end:项目靠近父盒子的右侧。
  • center:所有项目会挨在一起在父盒子的中间位置。
  • space-around:项目沿主轴均匀分布,位于首尾两端的子容器到父容器的距离是子容器间距的一半。

  • space-between:项目沿主轴均匀分布,位于首尾两端的子容器与父容器紧紧挨着。
  • space-evenly:项目在主轴上均匀分布,首尾两端的自容器到父容器的距离跟自容器间的间距是一样的

设置在侧轴上的排列方式

默认情况下,侧轴的方向是从上到下。在侧轴方向上,可以通过align-items属性来设置他们的排列方式。排列方式有以下几种:

  • flex-start:起始端对齐。默认就是这种对齐方式。

  • flex-end:末尾段对齐。

  • center:中间对齐。

  • stretch:如果项目没有设置高度。那么子容器沿交叉轴方向的尺寸拉伸至与父容器一致。比如我们将.inner的高度属性去掉,代码如下:
.outter .inner{
 background: gray;
 width: 100px;
 /* height: 100px; */
 border: 1px solid #ccc;
}
  • 效果图为:

  • baseline:基线对齐,这里的 baseline 默认是指首行文字,所有子容器向基线对齐,交叉轴起点到元素基线距离最大的子容器将会与交叉轴起始端相切以确定基线。比如我们把代码改成如下:
<view class='outter'>
 <view class='inner'>
   <view style='margin-top:10px;background:#eee;'>hello</view>
 </view>
 <view class='inner'>2</view>
</view>

然后css文件为:

.outter{
 display: flex;
 align-items: baseline;
 width: 300px;
 height: 200px;
 background: pink;
}
.outter .inner{...}

那么效果图为:

更换主轴和侧轴方向

主轴默认的方向是从左到右,侧轴的方向默认是从上到下,当然也可以进行修改。可以通过flex-direction进行修改。可以修改的参数为以下:

  • row:默认属性。从左到右。

  • row-reverse:从右到左。

  • column:从上到下。

  • column-reverse:从下到上。

换行

默认情况下,元素个数如果超过一定数量,那么在一行当中就排列不下。此时flex默认的处理方式是压缩元素,使其能在一行中排列下来。比如以下代码:

<view class='outter'>
  <view class='inner'>1</view>
  <view class='inner'>2</view>
  <view class='inner'>3</view>
  <view class='inner'>4</view>
</view>
.outter{
  display: flex;
  width: 300px;
  height: 200px;
  background: pink;
}
.outter .inner{
  background: gray;
  width: 100px;
  height: 100px;
  border: 1px solid #ccc;
}

那么会把这四个元素挤压在一行中。即使给元素设置了宽度也没有用的。效果图如下:

可以通过flex-wrap来改变排列的方式。可以设置的属性如下:

  1. nowrap:不换行。默认的。


  2. wrap:换行。

  3. wrap-reverse:换行,但是第一行会在下面。



相关实践学习
基于ACK Serverless轻松部署企业级Stable Diffusion
本实验指导您在容器服务Serverless版(以下简称 ACK Serverless )中,通过Knative部署满足企业级弹性需求的Stable Diffusion服务。同时通过对该服务进行压测实验,体验ACK Serverless 弹性能力。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
开发者 容器
flex 布局属性在实际项目中的应用场景有哪些?
flex 布局属性在实际项目中的应用场景有哪些?
|
28天前
|
前端开发 UED 容器
使用 Flex 布局实现垂直居中效果
【10月更文挑战第7天】
99 57
|
14天前
|
前端开发 UED 容器
在 CSS 中使用 Flex 布局实现页面自适应时需要注意什么?
【10月更文挑战第22天】在使用 Flex 布局实现页面自适应时,需要对其基本原理和特性有深入的理解,同时结合具体的布局需求和场景,进行细致的调整和优化。通过合理的设置和注意事项的把握,才能实现理想的自适应效果,提升用户体验。还可以根据实际情况进行更深入的探索和实践,以不断提升 Flex 布局的应用能力。
|
2天前
|
开发者 UED 容器
鸿蒙next版开发:ArkTS组件通用属性(Flex布局)
在HarmonyOS next中,ArkTS的Flex布局是一种强大且灵活的布局方式,支持水平或垂直方向排列元素,并能动态调整大小和位置以适应不同屏幕。主要属性包括justifyContent、alignItems、direction和wrap,适用于导航栏、侧边栏和表单等多种场景。示例代码展示了如何使用这些属性创建美观的布局。
21 10
|
13天前
|
容器
在 Flex 布局中,如何设置元素在侧轴上的初始对齐方式?
【10月更文挑战第22天】同时,还可以进一步探索其他 Flex 布局相关的属性和技巧,以更好地掌握 Flex 布局的强大功能,创造出更具创意和适应性的页面布局。
22 2
|
28天前
|
前端开发 容器
flex布局
【10月更文挑战第7天】
27 1
|
1月前
多个p标签,并让div“flex”布局,且单行溢出隐藏
多个p标签,并让div“flex”布局,且单行溢出隐藏
27 0
|
1月前
|
容器
flex布局
flex布局
44 0
|
20小时前
|
容器
HTML中使用Flex布局实现双行夹批效果
在HTML中,还可以用table元素来实现双行夹批效果,但比flex布局代码更复杂,效果也不见得更理想。