微信小程序开发实战-第二周

news/2024/7/20 2:21:44 标签: 小程序, javascript, html, css

第二周

2. flex弹性布局

作图工具https://www.processon.com/

2.1 了解弹性布局

Flex 是 Flexible Box 的缩写,意为"弹性布局",可以轻松的控制元素排列、对齐和顺序的控制。

现在的终端类型非常多,使用弹性盒模型可以让元素在不同尺寸终端控制尺寸。

主轴交叉轴

justify-content主轴的对齐方式

align-items交叉轴的对齐方式

声明定义

容器盒子里面包含着容器元素,使用 display:flexdisplay:inline-flex 声明为弹性盒子。

声明块级弹性盒子

display:flex

声明内联级弹性盒子

display:inline-flex

flex-direction

用于控制盒子元素排列的方向。

描述
row从左到右水平排列元素(默认值)
row-reverse从右向左排列元素
column从上到下垂直排列元素
column-reverse从下到上垂直排列元素

image-20200320202152061

flex-wrap

flex-wrap 属性规定flex容器是单行或者多行,同时横轴的方向决定了新行堆叠的方向。

选项说明
nowrap元素不拆行或不拆列(默认值)
wrap容器元素在必要的时候拆行或拆列。
wrap-reverse容器元素在必要的时候拆行或拆列,但是以相反的顺序

行元素换行

image-20200320194520803

水平排列反向换行

image-20200320194814269

垂直元素换行

image-20200320194954354

垂直元素反向换行

image-20200320195057563

flex-flow

flex-flowflex-directionflex-wrap 的组合简写模式。

justify-content

用于控制元素在主轴上的排列方式,再次强调是主轴的排列方式。

选项说明
flex-start元素紧靠主轴起点
flex-end元素紧靠主轴终点
center元素从弹性容器中心开始
space-between第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间
space-around每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍
space-evenly元素间距离平均分配

水平排列元素,并使用 justify-content: flex-end 对齐到主轴终点

image-20200320195354555

使用 space-evenly 平均分配容器元素

image-20200320195608426

align-items

用于控制容器元素在交叉轴上的排列方式。

选项说明
stretch元素被拉伸以适应容器(默认值)
center元素位于容器的中心
flex-start元素位于容器的交叉轴开头
flex-end元素位于容器的交叉轴结尾

拉伸适应交叉轴

如果设置了 width | height | min-height | min-width | max-width | max-height ,将影响stretch 的结果,因为 stretch 优先级你于宽高设置。

image-20200320201148550

对齐到交叉轴的顶部

image-20200320200431530

对齐到交叉轴底部

image-20200320200520747

对齐到交叉轴中心

image-20200320200554748

纵向排列时交叉轴排列

image-20200320200813442

align-content

只适用于多行显示的弹性容器,它的作用是当flex容器在交叉轴上有多余的空间时,对元素的对齐处理。

选项说明
stretch将空间平均分配给元素
flex-start元素紧靠主轴起点
flex-end元素紧靠主轴终点
center元素从弹性容器中心开始
space-between第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间
space-around每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍
space-evenly元素间距离平均分配

水平排列在交叉轴中居中排列

image-20200320201445338

align-self

用于控制单个元素在交叉轴上的排列方式,align-items 用于控制容器中所有元素的排列,而 align-self 用于控制一个弹性元素的交叉轴排列。

选项说明
stretch将空间平均分配给元素
flex-start元素紧靠主轴起点
flex-end元素紧靠主轴终点
center元素从弹性容器中心开始

flex-grow

用于将弹性盒子的可用空间,分配给弹性元素。可以使用整数或小数声明。

例如为三个DIV 弹性元素设置了1、3、6 ,即宽度分成10等份,第三个元素所占宽度为(宽度/(1+3+6)) X 6

如果弹性元素设置了宽度,将把(弹性盒子-弹性元素宽度和)后按照 flex-grow 进行分配 。

flex-shrink

flex-grow 相反 flex-shrink 是在弹性盒子装不下元素时定义的缩小值。

例如在600宽的弹性盒子中放了 1000 宽的弹性元素。并为最后两个元素设置了缩放,最后一个元素的缩放比例为 500 -( ( (1000-600) / (100X1+400x3+500X6) ) x 3 ) X 500 = 220.9,计算公式说明如下:

缩小比例 = 不足的空间 / (元素 1 宽度 x 缩小比例) + (元素 2 宽度 x 缩小比例) ...
最终尺寸 = 元素三宽度 - (缩小比例 x  元素 3 的宽度) X 元素宽度

flex-basis

flex-basis 属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。

可以是长度单位,也可以是百分比。flex-basis的优先级高于width、height属性。

优先级

flex-basis 优先级大于 width、height。

flex

flex是flex-grow、flex-shrink 、flex-basis缩写组合。

建议使用 flex 面不要单独使用 flex-grow / flew-shrink / flex-basis 。

下例定义平均分配剩余空间,并不进行尺寸缩小,基础尺寸为200px。

order

用于控制弹性元素的位置,默认为 order:0 数值越小越在前面,可以负数或整数。

下面是通过J动态改变order属性产生移动效果,因为本章节是讲CSS所以JS功能没有完善,只是体验一下order。

3.项目开发阶段

组件开发

新建components目录用于存放所有组件

VsCode中推荐使用wxapp-helperwechat-snippet插件,快速开发

like组件

新建一个组件like 点赞小红心组件

在页面的JSON文件中配置使用的组件

接收一个JSON对象

引用组件

引用v-like组件,使用绝对路径

html" title=javascript>javascript">"usingComponents": {"v-like": "/components/like/index"}
使用组件
html"><v-like />

like目录下新建images,用于存储组件所用的图片

html" title=小程序>小程序中像素单位pxrpx,

iPhone6下为二倍换算关系

新建app.wxss文件,定义全局样式

  • 组件只能继承部分全局样式
  • 页面可以继承全局样式
  • 组件最好不要留有空隙
组件代码
html"><view class="container">
  <image src="images/like.png" />
  <text>
    9
  </text>
</view>
css">.container {
    display: inline-flex;
    flex-direction: row;
    padding: 10rpx;
}
.container image {
    width: 32rpx;
    height: 28rpx;
}
.container text {
    font-size: 24rpx;
    color: #bbbbbb;
    line-height: 24rpx;
    position: relative;
    bottom: 30rpx;
    left: 6rpx;
}
组件事件与事件处理-状态切换

bind:tap="onLike"定义点击

index.js中的methods中定义处理函数

数据来源的三种方式

  1. 直接写在WXML
  2. JS中获取
  3. 从服务器获取
数据绑定

数据定义在data

三元表达式
html" title=javascript>javascript">like?count1:count2

使用三元表达式来实现点赞与不点赞的效果

组件的封装性开放性及粒度

开放数据,开发数据

properties组件的属性列表

html" title=javascript>javascript">like: {
    type: Boolean,
        value: false,
            observer: function () {

            }
}
html" title=javascript>javascript">// components/like/index.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    like: {
      type: Boolean,
      value: false,
      observer: function () {
        
      }
    },
    count: {
      type: Number
    }
  },

  /**
   * 组件的初始数据
   */
  data: {
    // 点赞数据绑定
    count: 99,
    like: false
  },

  /**
   * 组件的方法列表
   */
  methods: {
    onLike: function (event) {
      let like = this.properties.like
      let count = this.properties.count

      count = like?count-1:count+1 
      this.setData({
        count: count,
        like: !like
      })
    }
  }
})

http://www.niftyadmin.cn/n/1849309.html

相关文章

python实现带头结点的单链表的就地逆置_设头指针为head,编写算法实现带头结点单链表head的就地逆置...

链表问题大全&#xff01;&#xff01;&#xff01;刚出炉的还热乎呢&#xff01;&#xff01;#include #include typedef struct node{int nDate;struct node *pstnext;}Node;//链表输出void output(Node *head){Node *p head->pstnext;while(NULL ! p){printf("%d &…

python manager.py compress_manage.py命令

manage.py是每个Django项目中自动生成的一个用于管理项目的脚本文件&#xff0c;需要通过python命令执行。manage.py接受的是Django提供的内置命令。内置命令包含checkdbshelldiffsettingsflushmakemigrationsmigraterunservershellstartappstartprojecttest其实有三种方式&…

微信小程序开发实战-第三周

第三周 3.项目开发阶段 组件化开发优点 组件复用 代码分离 3.3 生命周期函数 官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page-life-cycle.html onload&#xff1a;监听页面加载&#xff0c;最先被触发 onReady&#xff1a;监听…

详谈 vsftpd 的设置

详谈 vsftpd 的设置0 关于本文档 1 VSFTPD简述 2 VSFTPD的安装 2.1 RHL9vsftpd-1.1.3-8.i386.rpm包的安装 2.2 vsftpd-1.2.0.tar.gz的安装 3 VSFTPD的文件结构 4 VSFTPD的启动与停止 5 VSFTPD的设置选项 5.1 连接选项 5.1.1 监听地址与控制端口 5.1.2 FTP模式与数据端口 5.1.3 …

微信小程序开发实战-第四周

第四周 什么是“剥夺“函数return能力 使用回调函数的方式无法return 点赞数据提交 在page\classic\classic.js中定义onLike函数 onLike: function (event) {console.log(event)let behavior event.detail.behavior}拿到当前like组件的状态 向服务器提交状态数据&#x…

iphone怎样关闭副屏_iOS13.4.5B1发布,iOS13.3.1验证通道关闭,iPhone9的存在已确定

iOS 13.4.5beta1发布4月1日凌晨&#xff0c;也就是愚人节凌晨&#xff0c;苹果对外发布了iOS 13.4.5beta1版本&#xff0c;这次是直接绕过了iOS 13.4.1&#xff0c;这可能是在之前都已经进入了iOS 13.4.1的开发项目&#xff0c;只是在iOS 13.4正式版发布之后&#xff0c;发现了…

UUID是什么?

UUID就是Universal Unique IDentifier的缩写&#xff0c;它是一个128位&#xff0c;16字节的值&#xff0c;并确保在时间和空间上唯一。它是把硬件地址、时间以及随机数结合在一起&#xff0c;来确保其唯一性的。一般情况下&#xff0c;生成算法用计算机网卡的地址和一个60位的…

delphi 面试题

为什么80%的码农都做不了架构师&#xff1f;>>> 一、 Delphi基础 1、Delphi 内置类型 string 和 WideString 的区别。 答&#xff1a; string 即 UnicodeString&#xff0c;8 位&#xff08;ANSI &#xff09;字符 WideString 类型是动态分配的、由 16 位 Unicode…