15、Flex布局(2-7是介绍用在父容器中的属性设置,8-12是介绍用在items上的属性介绍)

15、Flex布局(2-7是介绍用在父容器中的属性设置,8-12是介绍用在items上的属性介绍)

1.flex布局简介

  flex布局(Flexible布局,弹性布局)
  开启了Flex布局的元素叫flex container。
  flex container里面的直接子元素叫做flex items。

  • 开启flex布局方法:设置display属性为flex或inline-flex。它的作用范围为他的直接子元素。
    flex:flex container 以块级元素存在
    inline-flex:flex container以行内元素存在
    案例:无flex布局
    代码:
<!--pages/demo06/demo06.wxml-->
<view>
    <view >学号:</view>
    <input name='name' style="border:1rpx solid gray"></input>
</view>

运行截图:
在这里插入图片描述
案例:使用flex布局
代码:

<!--pages/demo06/demo06.wxml-->
<view style='display:flex'>
    <view >学号:</view>
    <input name='name' style="border:1rpx solid gray"></input>
</view>

`运行截图:
在这里插入图片描述

2.flex-direction

flex items默认都是沿着主轴方向从主轴开始到结束的方向排列。
flex-direction决定了主轴的方向,有四个取值。row(默认值),,row-reverse,column,column-reverse。
四种值的主轴样式如下:
在这里插入图片描述案例代码:

<!--pages/demo06/demo06.wxml-->
<view style='display:flex;flex-direction:row-reverse'>
    <view >学号:</view>
    <input name='name' style="border:1rpx solid gray"></input>
</view>

运行截图:
在这里插入图片描述

3.justify-content

justify-content:决定了flex items在主轴上的对齐方式。
取值有:
flex-start(默认值);flex-end,center,
space-between(flex items与主轴开始 结束位置对齐,items间距离相等)
space-around(flex items之间间距离相等,与主轴开始、结束之间的距离也相等)
space-evenly(flex items之间间距离相等,是主轴开始、结束之间的距离的两倍)
在这里插入图片描述

案例代码:

<!--pages/demo06/demo06.wxml-->
<view style='display:flex;flex-direction:row-reverse;justify-content:center'>
    <view >学号:</view>
    <input name='name' style="border:1rpx solid gray"></input>
</view>

运行截图:
在这里插入图片描述

4. align-items

align-items决定了flex items 在cross axis交叉轴上的对齐方式。
交叉轴永远是与主轴垂直的那个轴。方向朝下或朝右。
取值:
stretch(默认值):当flex items在cross axis方向的size为auto时,会自动拉伸至填充至flex container。
flex-start
flex-end
center
baseline
在这里插入图片描述

案例代码:

<!--pages/demo06/demo06.wxml-->
<view class='st'>
    <view >学号:</view>
    <input name='name' style="border:1rpx solid gray"></input>
</view>
/* pages/demo06/demo06.wxss */
.st{
  border:1rpx solid gray;
  width: 600rpx;
  height:600rpx;
  display:flex;
  flex-direction:row;
  justify-content:center;
  align-items:center;
  }

运行截图:
在这里插入图片描述

  • 详解一下这里说的拉伸(stretch(默认值):当flex items在cross axis方向的size为auto时,会自动拉伸至填充至flex container。)
    首先通过 flex-direction:row; 知道主轴为横轴(当然如果没有设定flex-direction值默认也为横轴),如果设定flex items在交叉轴(与主轴垂直)方向size为auto,会自动拉伸至填充至flex container。
<!--pages/demo06/demo06.wxml-->
<view class='st'>
    <view class='item' style="background-color:#f00">学号1</view>
    <view class='item' style="background-color:#0f0">学号2</view>
    <view class='item' style="background-color:#00f">学号3</view>
    <view class='item' style="background-color:#ff0">学号4</view>   
</view>
/* pages/demo06/demo06.wxss */
.st{
  border:1rpx solid gray;
  width: 600rpx;
  height:600rpx;
  display:flex;
  flex-direction:row;
  justify-content:center;
  }


.item{
  height:auto;
}

运行截图:
在这里插入图片描述

5. flex-wrap

flex-wrap决定了flex container是单行还是多行。
取值:nowrap(默认),单行,如果内容多了可能会挤压flex items
wrap:多行
warp-reverse:多行(对比wrap,cross start 与cross end相反)
案例代码:flex-wrap为默认值。

<!--pages/demo06/demo06.wxml-->
<view class='st'>
    <view class='item' style="background-color:#f00">学号1</view>
    <view class='item' style="background-color:#0f0">学号2</view>
    <view class='item' style="background-color:#00f">学号3</view>
    <view class='item' style="background-color:#ff0">学号4</view>  
    <view class='item' style="background-color:#0ff">学号5</view>
    <view class='item' style="background-color:#f0f">学号6</view>
    <view class='item' style="background-color:#df8">学号7</view>    
</view>
/* pages/demo06/demo06.wxss */
.st{
  border:1rpx solid gray;
  width: 600rpx;
  height:600rpx;
  display:flex;
  flex-direction:row;
  justify-content:center;
  }


.item{
  height:100rpx;
}

运行截图:
在这里插入图片描述

案例:flex-wrap值设为多行wrap
在这里插入图片描述

6. flex-flow

flex-flow是flex-direction||flex-wrap的简写
在这里插入图片描述

7. align-content

align-content决定了多行flex items在cross items 在cross axis上的对齐方式,用法与justify-content类似。
取值:stretch(默认):与align-items的stretch类似(交叉轴方向,items的size为auto会自动拉伸)。
flex-start
flex-end
center
space-bewteen
space-around
在这里插入图片描述

案例代码wxml代码与上节相同。
在这里插入图片描述

8. order

order决定了flex items的排布顺序,可以设置为任意整数(正整数、负整数,0),值越小越排在前面。默认值是0.
案例代码:

<!--pages/demo06/demo06.wxml-->
<view class='st'>
    <view class='item' style="background-color:#f00;order:3">学号1</view>
    <view class='item' style="background-color:#0f0">学号2</view>
    <view class='item' style="background-color:#00f">学号3</view>
</view>
/* pages/demo06/demo06.wxss */
.st{
  border:1rpx solid gray;
  width: 600rpx;
  height:600rpx;
  display:flex;
  flex-direction:row;
  }
.item{
  height:100rpx;
}

运行截图:
在这里插入图片描述

9. align-self

flex items可以通过align-self覆盖flex container设置的align-items。
取值:
auto(默认值):遵从flex container的align-items设置。
stretch,flex-start,flex-end,center,baseline,效果跟align-items一样。
案例代码:

<!--pages/demo06/demo06.wxml-->
<view class='st'>
    <view class='item' style="background-color:#f00;align-self:flex-start">学号1</view>
    <view class='item' style="background-color:#0f0">学号2</view>
    <view class='item' style="background-color:#00f">学号3</view>
</view>
/* pages/demo06/demo06.wxss */
.st{
  border:1rpx solid gray;
  width: 600rpx;
  height:600rpx;
  display:flex;
  flex-direction:row;
  align-items: center;
  }
.item{
  height:100rpx;
}

运行截图:
在这里插入图片描述

10. flex-grow

flex-grow决定了flex items如何扩展。可以设置为任意非负数(正小数,正整数,0),默认值为0.。

当flex container在main axis方向上有剩余空间时,flex-grow属性才会有效。

  • 如果所有flex items的flex-grow总和sum超过1,每个flex item扩展的size为flex container的剩余size*flex-grow/sum
  • 如果所有flex items的flex-grow总和sum不超过1,每个flex item扩展的size为flex container的剩余size*flex-grow
  • flex items扩展后的最终size不能超过max-height或者max-width。

案例代码:wxss文件代码与第9节一样

<!--pages/demo06/demo06.wxml-->
<view class='st'>
    <view class='item' style="background-color:#f00;flex-grow:1;">学号1</view>
    <view class='item' style="background-color:#0f0;flex-grow:2;">学号2</view>
    <view class='item' style="background-color:#00f;flex-grow:1;">学号3</view>
</view>

运行截图:
在这里插入图片描述

11. flex-shrink

flex-shrink决定了flex items如何收缩。可以设置为任意非负数值(正小数,正整数,0),默认值为1.
当flex items在main axis方向上超过了flex container的size时,flex-shrink属性才会有效。

  • 每个item收缩的size为flex items超出flex container的size*收缩比例/所有flex items的收缩比例之和。
  • 收缩比例=flex-shrink*flex item的base size
    base size 是flex item 放入flex container之前的size
  • flex items 收缩后的最终size不能小于min-height或者min-width

例:收缩长度计算:
item1: width:100rpx;flex-shrink:1
item2: width:200rpx;flex-shrink:2
item3: width:300rpx;flex-shrink:3

收缩比例:
item1:1001
item2:200
2
item3:300*3

item1:100*(1001+2002+3003)
item2:200
(1001+2002+3003)
item3:300
(1001+2002+300*3)

12. flex-basis

flex-basis用来设置flex item在主轴main axis方向上的base size
取值:
auto(默认值)、content:取决于内容本身大小。

  • 决定flex item最终base size的因素,优先级从高到低
    max-width、max-height、min-width、min-height
    flex-basis
    width、height
    内容本身

在这里插入图片描述
具体内容请看:参考链接视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值