IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 通过调试微信小程序示例代码解析flex布局参数功能(一) -> 正文阅读

[移动开发]通过调试微信小程序示例代码解析flex布局参数功能(一)

通过调试微信小程序示例代码解析flex布局参数功能
官方示例小程序源代码下载地址:https://github.com/wechat-miniprogram/miniprogram-demo

通过调试微信小程序示例代码解析flex布局参数功能

在这里插入图片描述
在微信示例小程序中可以看到有很多flex的使用!

学习flex首先先在开放社区中搜索flex,扫一眼官方文档说明、
1
要点是“通过display:inline | block | inline-block、 position、float来实现布局,缺乏灵活性且有些适配效果难以实现,比如难以实现在内容高度不确定下保持垂直居中。”

display:flex;
flex-direction:row(默认值) | row-reverse | column |column-reverse
flex-wrap:nowrap(默认值) | wrap | wrap-reverse
justify-content:flex-start(默认值) | flex-end | center |space-between |space-around | space-evenly
align-items:stretch(默认值) | center | flex-end | baseline | flex-start
align-content:stretch(默认值) | flex-start | center |flex-end | space-between | space-around | space-evenly

flex-direction属性

flex-direction 通过设置坐标轴,来设置项目排列方向。

视觉效果是在wxss中设置的,而它与wxml之间的通过class类来连接:在wxml的<view class=''>的语句中定义class的名称,如class=‘container’,然后在wxss中通过相应的命令设置container的视觉效果。设置flex的第一步是在父级容器(这里是最高父级容器container)的样式中设置display为flex.接着再设置其它的参数。
在wxml中的代码是<view class='container'>...</view>
如下面的在源代码的app.wxss文件中中设置了全局container的样式:

.container {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  justify-content: space-between;
  font-size: 16px;
  font-family: -apple-system-font,Helvetica Neue,Helvetica,sans-serif;
}

回到之前看到的容器属性的第一个: flex-direction 通过设置坐标轴,来设置项目排列方向。

flex-direction:row(默认值) | row-reverse | column |column-reverse

column应该就是项目竖着排列的意思。
在搜索框中里再搜flex-direction,查看设置其它值的情况示例。
在这里插入图片描述
查看代码详情:

.item-content {
  width: 100%;
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  height: 150px;
  align-items: center;
}

代码中在名称为item-content的类的样式中设置flex,然后flex-dirction设为水平。
在调试器中查看item-content所在的容器的情况:
在这里插入图片描述
看鼠标所在的位置,以及在模拟器中对应的变蓝区域。文本和图片水平排列。
然后再将flex-direction改为column:
在这里插入图片描述
修改之后可以看到文本和图片变成垂直排列。

flex-direction还有另一种设置方法,例如在"view"页面上,<view class="flex-wrp" style="flex-direction:row;"><view class="flex-wrp" style="flex-direction:column;">分别将排列方式设置为水平和垂直。
如图所示,上一部分中A B C水平排列,下半部分垂直排列。
在这里插入图片描述
放上对应wxml代码,看不懂可以跳过,以后有机会写文章再讲,现在要学习的地方是style="flex-direction:row"的设置方式

<import src="../../../common/head.wxml" />
<import src="../../../common/foot.wxml" />

<view class="container">
  <template is="head" data="{{title: 'view'}}"/>
  <view class="page-body">
    <view class="page-section">
      <view class="page-section-title">
        <text>flex-direction: row\n横向布局</text>
      </view>
      <view class="page-section-spacing">
        <view class="flex-wrp" style="flex-direction:row;">
          <view class="flex-item demo-text-1"></view>
          <view class="flex-item demo-text-2"></view>
          <view class="flex-item demo-text-3"></view>
        </view>
      </view>
    </view>
    <view class="page-section">
      <view class="page-section-title">
        <text>flex-direction: column\n纵向布局</text>
      </view>
      <view class="flex-wrp" style="flex-direction:column;">
        <view class="flex-item flex-item-V demo-text-1"></view>
        <view class="flex-item flex-item-V demo-text-2"></view>
        <view class="flex-item flex-item-V demo-text-3"></view>
      </view>
    </view>
  </view>
  <template is="foot" />
</view>

在调试器中大致查看各个代码块对应的视觉模块。
在这里插入图片描述

flex-wrap属性

第二个参数可以看到flex-wrap.

设置是否允许项目多行排列,以及多行排列时换行的方向。
flex-wrap:nowrap(默认值) | wrap | wrap-reverse
nowrap(默认值):不换行。如果单行内容过多,则溢出容器。
wrap:容器单行容不下所有项目时,换行排列。
wrap-reverse:容器单行容不下所有项目时,换行排列。换行方向为wrap时的反方向。
搜索查看设置了flex-wrap参数的代码文件。

在这里插入图片描述
打开emoji(表情)的相应文件查看:
在这里插入图片描述
把flex-wrap的参数改成nowrap,然后再查看。可以看到多出的表情消失了,术语就是溢出了。
在这里插入图片描述

nowrap(默认值):不换行。如果单行内容过多,则溢出容器。

justify-content属性

然后看 justify-content

设置项目在主轴方向上对齐方式,以及分配项目之间及其周围多余的空间。
justify-content:flex-start(默认值) | flex-end | center |space-between |space-around | space-evenly

对于这些参数,官方文档也给出了说明。

flex-start(默认值):项目对齐主轴起点,项目间不留空隙。
center:项目在主轴上居中排列,项目间不留空隙。主轴上第一个项目离主轴起点距离等于最后一个项目离主轴终点距离。
flex-end:项目对齐主轴终点,项目间不留空隙。
space-between:项目间间距相等,第一个项目离主轴起点和最后一个项目离主轴终点距离为0。
space-around:与space-between相似。不同点为,第一个项目离主轴起点和最后一个项目离主轴终点距离为中间项目间间距的一半。
space-evenly:项目间间距、第一个项目离主轴起点和最后一个项目离主轴终点距离等于项目间间距。

官方的说明又正式又绕(you chou you chang),它的意思其实就是分布的时候项目之间有没有间距的时候往哪边靠拢(起点、终点或中间),以及有距离的时候(也就是平均分布的时候)间距怎么分,而分间距按不同规则分成三个不同的情况。之所以要这么绕,是想说通过设置了flex-direciotn不一样,能实现除了向左向右对齐之外其它方向的对齐,通过设置不同flex-direction参数就是改变了“主轴”的方向。
如下图所示,不同flex-direction的参数,是项目呈水平或垂直排布,主轴也呈水平或垂直正方向和反方向。

这里是引用

故技重施,在搜索栏里搜索justify-content
在这里插入图片描述
可以看到基友设置为示例代码中除了space-evenly其它的都有设置过。

我们选择包含了space-between和space-around两种样式的background-audio来查看效果。
设置flex-content为space-between的类如下:

.play-time {
  font-size: 14px;
  width: 350px;
  padding: 10px 0;
  display: flex;
  justify-content: space-between;
  box-sizing: border-box;
}

设置flex-content为space-between的类如下:

.page-body-buttons {
  display: flex;
  justify-content: space-around;
  margin-top: 50px;
}

在调试器中找到这两个类对应的视觉容器:
在这里插入图片描述
可以看到play-time是用来排列音频的初始和结束时长的,而page-body-buttons用于放置下方表示开始播放的图标。
现在音频的初始和结束时长的位子如下:
在这里插入图片描述

然后我们将play-time中的flex-content改为space-around,然后查看变化:在这里插入图片描述
可以看到两个数字之间的宽度变窄了。
然后在将其改成space-evenly:
在这里插入图片描述
可以看到两个数字之间的宽度变得更窄了。
在来看官方文档这三个参数的描述:

space-between:项目间间距相等,第一个项目离主轴起点和最后一个项目离主轴终点距离为0。
space-around:与space-between相似。不同点为,第一个项目离主轴起点和最后一个项目离主轴终点距离为中间项目间间距的一半。
space-evenly:项目间间距、第一个项目离主轴起点和最后一个项目离主轴终点距离等于项目间间距。

第一个很好理解,第二个就是在分距离的时候要多分出一份,划给第一个和最后一个项目各一半,用来作为头距离和尾距离。第三个则是要多分两个,分别给第一个和最后一个项目用来作为开头的距离和离终点的距离。

一级目录align-items与align-content

再来看参数align-items

align-items 属性:设置项目在行中的对齐方式。 align-items:stretch(默认值) | flex-start | center | flex-end | baseline

stretch(默认值):项目拉伸至填满行高。
flex-start:项目顶部与行起点对齐。
center:项目在行中居中对齐。
flex-end:项目底部与行终点对齐。
baseline:项目的第一行文字的基线对齐。

比起一般的对齐,只多了一个拉伸stretch,可以按照上面的方法去调试器中查看。而如果熟练了,光看说明文档就能理解:

这里是引用
在这里插入图片描述

再看最后一个容器属性align-content

align-content属性:多行排列时,设置行在交叉轴方向上的对齐方式,以及分配行之间及其周围多余的空间。
align-content: stretch(默认值) | flex-start | center | flex-end | space-between |space-around | space-evenly

看它的参数的说明和图解

stretch(默认值):当未设置项目尺寸,将各行中的项目拉伸至填满交叉轴。当设置了项目尺寸,项目尺寸不变,项目行拉伸至填满交叉轴。
flex-start:首行在交叉轴起点开始排列,行间不留间距。
center:行在交叉轴中点排列,行间不留间距,首行离交叉轴起点和尾行离交叉轴终点距离相等。
flex-end:尾行在交叉轴终点开始排列,行间不留间距。
space-between:行与行间距相等,首行离交叉轴起点和尾行离交叉轴终点距离为0。
space-around:行与行间距相等,首行离交叉轴起点和尾行离交叉轴终点距离为行与行间间距的一半。
space-evenly:行间间距、以及首行离交叉轴起点和尾行离交叉轴终点距离相等。

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

可以发现除了第一个stretch拉伸之外,其它几个与justify-content参数中的值是相同的,功能也十分相似。但align-content是在交叉轴上的分布,交叉轴是指与主轴垂直的轴。即设置了flex-direction,确定了主轴之后,项目按主轴方向排列,然后按当内容超出一行时候,按交叉轴的方向排第二和第三行。因此这一参数的设置所属位置,与justify-content设置所属位置垂直。
以上是flex布局的容器参数解析,以微信小程序示例代码为例。

总结

总之,要学会在调试器中查看视觉模块(或项目)和对应代码的能力,特别是对于功能是放置在不同代码文件的前端开发来说,通过调试器能让它们具体形象地联系起来。比如这篇文章中,能在调试器中通过找到类名,把布置框架的wxml和装修功能的wxss代码联系起来。而后面,wxml又将与js文件一起共同创建与用户的互动体验。

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:01:03  更:2022-01-24 11:01:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:53:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码