复习总结1,2,3章

第一章

微信小程序概述

微信小程序是一种基于微信平台的应用程序,用户可以在微信中直接使用,无需下载安装。它提供了一种轻量级的应用开发和使用方式,用户可以随时随地在微信中打开和使用小程序。

微信小程序具有以下特点:
无需下载安装:用户可以直接在微信中打开小程序,无需下载和安装额外的应用程序。
轻量级应用:微信小程序相比于传统应用程序,体积较小,加载速度快,占用手机存储空间少。
便捷分享:用户可以通过微信分享小程序给朋友或者在朋友圈中分享,方便快捷。
多种应用场景:微信小程序可以涵盖生活服务、电商购物、社交娱乐等多个领域,满足用户的不同需求。
接口丰富:微信提供了丰富的接口和工具,方便开发者开发和优化小程序,提供更好的用户体验。
商业化变现:微信小程序支持广告、支付、会员等多种商业化手段,为开发者提供了变现的机会。
        微信小程序的发展迅速,已经成为了中国最大的小程序平台之一,拥有庞大的用户群体和丰富多样的小程序。它为用户提供了便捷的应用体验,为开发者提供了广阔的发展空间。

第一个微信小程序

// index.js
const defaultAvatarUrl = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
 
Page({
  data: {
    motto: 'Hello World',
    userInfo: {
      avatarUrl: defaultAvatarUrl,
      nickName: '',
    },
    hasUserInfo: false,
    canIUseGetUserProfile: wx.canIUse('getUserProfile'),
    canIUseNicknameComp: wx.canIUse('input.type.nickname'),
  },
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail
    const { nickName } = this.data.userInfo
    this.setData({
      "userInfo.avatarUrl": avatarUrl,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  onInputChange(e) {
    const nickName = e.detail.value
    const { avatarUrl } = this.data.userInfo
    this.setData({
      "userInfo.nickName": nickName,
      hasUserInfo: nickName && avatarUrl && avatarUrl !== defaultAvatarUrl,
    })
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
})

 HTML模块

<!--index.wxml-->
<scroll-view class="scrollarea" scroll-y type="list">
  <view class="container">
    <view class="userinfo">
      <block wx:if="{{canIUseNicknameComp && !hasUserInfo}}">
        <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
          <image class="avatar" src="{{userInfo.avatarUrl}}"></image>
        </button>
        <view class="nickname-wrapper">
          <text class="nickname-label">昵称</text>
          <input type="nickname" class="nickname-input" placeholder="请输入昵称" bind:change="onInputChange" />
        </view>
      </block>
      <block wx:elif="{{!hasUserInfo}}">
        <button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button>
        <view wx:else> 请使用2.10.4及以上版本基础库 </view>
      </block>
      <block wx:else>
        <image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image>
        <text class="userinfo-nickname">{{userInfo.nickName}}</text>
      </block>
    </view>
    <view class="usermotto">
      <text class="user-motto">{{motto}}</text>
    </view>
  </view>
</scroll-view>

 CSS模块

/**index.wxss**/
page {
  height: 100vh;
  display: flex;
  flex-direction: column;
}
.scrollarea {
  flex: 1;
  overflow-y: hidden;
}
 
.userinfo {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: #aaa;
  width: 80%;
}
 
.userinfo-avatar {
  overflow: hidden;
  width: 128rpx;
  height: 128rpx;
  margin: 20rpx;
  border-radius: 50%;
}
 
.usermotto {
  margin-top: 200px;
}
 
.avatar-wrapper {
  padding: 0;
  width: 56px !important;
  border-radius: 8px;
  margin-top: 40px;
  margin-bottom: 40px;
}
 
.avatar {
  display: block;
  width: 56px;
  height: 56px;
}
 
.nickname-wrapper {
  display: flex;
  width: 100%;
  padding: 16px;
  box-sizing: border-box;
  border-top: .5px solid rgba(0, 0, 0, 0.1);
  border-bottom: .5px solid rgba(0, 0, 0, 0.1);
  color: black;
}
 
.nickname-label {
  width: 105px;
}
 
.nickname-input {
  flex: 1;
}

index.json模块

{
  "usingComponents": {
  }
}

 运行结果

 

微信开发者工具界面功能介绍


如图所示,微信小程序开发界面分为五大区域:工具栏,模拟区,目录文件区,编辑区,调试区。
1.工具栏
在工具栏中可以实现多种功能,例如账号的切换,模拟区、编辑区,调试区的显示/隐藏,小程序的编译、预览,切换后台,清理缓存等。
2.模拟区
在模拟区中选择模拟手机的类型、显示比例、网络类型后,模拟器中会显示小程序的运行效果。
3.目录文件区
目录文件区用来显示当前项目的目录结构,单击左上角的“+”按钮可以进行目录和文件的创建,右键单击目录文件区中的文件或目录可以进行“硬盘打开”“重命名”“删除”等相关操作。
4.编辑区
编辑区用来实现对代码的编辑操作,编辑区中支持对.wxml、.wxss、.js及.json文件的操作,使用组合键能提高代码的编辑效率。
5. 调试区
调试区的功能是帮助开发者进行代码调试及排查有问题的区域。小程序系统为开发者提供了9个调试功能模块,分别是Console、Sources、Network、Security、Storage、AppData、 Wxml、Sensor和Trace。最右边的扩展菜单项“三个竖着的点”是定制与控制开发工具按钮。

第二章

微信小程序开发基础总结

以第一章新建的项目为参考,了解项目的基本结构,如图,在小程序的基本结构中,项目的主目录有两个子目录(pages和utils)和四个文件(app.json, app.less, app.ts, sitemap.json)。

 

pages目录中有两个子目录(index和logs)。每个子目录中保存着一个页面的相关文件。一般情况下包含四个扩展名(.wxml, .wxss, .js, .json),分别用于表示页面结构,页面样式文件,页面逻辑,页面配置文件。同一个页面的四个文件必须具有相同的路径和文件名。

主体文件
微信小程序主体由三个文件组成,三个文件必须放在项目的主目录,负责整体配置,名称固定。

app.js 小程序逻辑文件,主要用来注册小程序全局实例。在编译时,app·js文件会和其他页面的逻辑文件打包成一个JavaScript文件。该文件在项目中不可缺少。

app.json小程序公共设置文件,配置小程序全局设置。该文件在项目中不可缺少。

app.wxss小程序主样式表文件,类似HTML的.css文件。在主样式表文件中设置的样式在其他页面文件中同样有效。该文件在项目中不是必需的。

页面文件
小程序通常是由多个页面组成的,每个页面包含4个文件,同一页面的这4个文件必须具有相同的路径与文件名。当小程序被启动或小程序内的页面进行跳转时,小程序会根 app.json 设置的路径找到相对应的资源进行数据绑定。

.js文件 页面逻辑文件,在该文件中编写JavaScript代码控制页面的逻辑。该文件在每个小程序的页面中不可缺少。

.wxml文件 页面结构文件,用于设计页面的布局、数据绑定等,类似HTML页面中的.html文件。该文件在页面中不可缺少。

.wxss 文件页面样式表文件,用于定义本页面中用到的各类样式表。当页面中有样式表文件时,文件中的样式规则会层叠覆盖app.wxss中的样式规则;否则,直接使用 app.wxss 中指定的样式规则。该文件在页面中不可缺少。

.json 文件页面配置文件。该文件在页面中不可缺少。

全局配置文件

全局配置项

 全局配置文件内容整体结构:

{
设置页面路径
"pages":[],
//设置默认页面的窗口表现
"window":{},
//设置底部 tab 的表现
"tabBar":{},
//设置网络请求API的超时时间值
"networkTimeout":{},
//设置是否开启 debug 模式
"debug":false
}

 

1.psges配置项

app.json文件配置

{
  "pages": [
    "pages/news/news",
    "pages/logs/logs"
  ],
}

 window配置项及其描述

 在app.json中设置window配置项

"window": {
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "小程序window功能演示",
    "backgroundColor": "#ccc",
    "backgroundTextStyle":"light"
  },

 tabBar配置项及其描述

tabBar中list选项

 

 在app.json文件设置tabBar配置

"tabBar": {
      "color":"#666666",
      "selectedColor":"#ff0000",
      "borderStyle":"black",
      "backgroundColor":"ffffff",
      "list":[
        {
          "pagePath":"pages/logs/logs",
          "iconPath": "images/6b2e7226deef74f675d79d6cf0f21a3.png",
          "selectedIconPath": "images/84c52bdd9c1f0f077507bbf367b8019.jpg",
          "text": "首页"
        },
        {
          "pagePath":"pages/news/news",
          "iconPath": "images/6b2e7226deef74f675d79d6cf0f21a3.png",
          "selectedIconPath": "images/84c52bdd9c1f0f077507bbf367b8019.jpg",
          "text": "新闻"
        }
      ]
    },

 networkTimeout配置项

 例如,为了提高网络效率,可以在app.json中使用下列超时设置

{
  "networkTimeout":{
    "request":20000,
    "connectSocket":20000,
    "uploadFile":20000,
    "downloadFlie":20000
  }
}

 页面中的window配置只需写配置项,不用写window:

{
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTextStyle": "black",
    "navigationBarTitleText": "小程序window功能演示",
    "backgroundColor": "#ccc",
    "backgroundTextStyle":"light"
  }

 逻辑层文件

项目逻辑文件配置项

 

  页面逻辑文件配置项

 

在Page()函数的参数中,可以定义当前页面的生命周期函数。页面的生命函数主要有onLoad,onShow,onReady,onHide,onUnload.

onLoad,页面加载函数,当页面加载完成后调用该函数,一个页面只会调用一次,该函数的参数可以获取wx.navigateTo和wx.redirectTo及<navigator/>

onShow,页面显示函数。当页面显示时调用该函数。每次打开页面都会调用一次

onReady,页面数据绑定函数。当页面初次数据绑定完成时调用该函数。一个页面只会调用一次,代表页面已经准备就绪,可以和视图层进行交互。

onHide,页面隐藏函数。当页面隐藏时及当navigateTo 或小程序底部进行tab 切换时调用该函数

onUnload,页面卸载函数。当页面卸载、进行navigateBack或redirectTo 操作时,调用该函数

data:{
    name:'lwk',
    age:30,
    birthday:[{year:1988},{month:11},{data:18}],
    object:{hobby:'computer'},
}

 

<view>姓名:{{name}}</view>
<view>年龄:{{age}}</view>
<view>出生日期:
{{birthday[0].year}}年
{{birthday[1].month}}月
{{birthday[2].data}}日
</view>

 

冒泡事件

 

 WXSS常用属性 

 

第三章

        页面布局

盒子模型
盒子模型就是我们在更面设计中经常用到的一种思维模型。在CSS中,一个独立的盒子模型由内容(content)、内边距(padding)、边框(border)和外边距(margin)4个部分组成。

此外,对 padding、border和margin可以进一步细化为上、下、左、右4个部分,在css中可以分别进行设置

 一个盒子实际所占有的宽度(高度)应该由“内容”+“内边距”+“边框”+“外边距”组成,例如:

.box{
    width:70px;
    padding:5px;
    margin:10px;
}

此盒子所占宽度如图: 

css中的布局都基于盒子模型,不同类型的元素对盒子模型的处理不同。

块级元素与行内元素
元素按显示方式分为块级元素,行内元素和行内块元素,他们的显示方式由display属性控制。

块级元素 
块级元素默认占一行高度,一行内通常只有一个块级元素(浮动后除外),添加新的块级元素时,会自动换行,块级元素一般作为盒子出现。块级元素的特点如下:
(1)一个块级元素占一行。
(2)块级元素的默认高度由内容决定,除非自定义高度。
(3)块级元素的默认宽度是父级元素的内容区宽度,除非自定义宽度。
(4)块级元素的宽度、高度、外边距及内边距都可以自定义设置。
(5)块级元素可以容纳块级元素和行内元素。

<view/>组件默认为块级元素,使用<view/>组件演示盒子模型及块级元素的示例代码如下:

 

<view style="border: 1px solid #f00">块级元素1</view>
<view style="border: 1px solid #0f0;margin: 15px;padding: 20px;">块级元素2</view>
<view style="border: 1px solid #00f;width: 200px;height: 80px;">块级元素3</view>
<view style="border: 1px solid #ccc;">
<view style="border: 1px solid #ccc"></view>
</view>
<view style="border: 1px solid #f00;width: 100px;background-color: #ccc;">
父级元素高度随内容决定,内容为文本</view>

显示效果: 

行内元素
 行内元素,不必从新一行开始,通常会与前后的其他行内元素显示在同一行中,它们不占有独立的区域,仅靠自身内容支撑结构,一般不可以设置大小,常用于控制页面中文本的样式。将一个元素的 display属性设置为inine后,该元素即被设置为行内元素。行内元素的特点如下:
(1)行内元素不能被设置高度和宽度,其高度和宽度由内容决定。

(2)行内元素内不能放置块级元素,只级容纳文本或其他行内元素。
(3)同一块内,行内元素和其他行内元素显示在同一行。

<texw/>组件默认为行内元素,使用<view/>及<text/>组件演示盒子模型及行内元素的示例代码如下:

<view style="padding: 20px;">
<text style="border: 1px solid #f00;">文本1</text>
<text style="border: 1px solid #0f0;margin: 10px;padding: 5px;">文本2</text>
<view style="border: 1px solid #00f;display: inline;">块级元素设置为行内元素</view>一行显示不全,自动换行显示
</view>

显示效果:

行内块元素

当元素的 display 属性被设置为imline-bock时,元素被设置为行内块元素。行内块元素可以被设置高度、宽度、内边距和外边距。示例代码如下:

<view>元素显示方式的<view style="display: inline-block;border: 1px solid #f00;margin: 10px;padding: 10px;width: 200px;">块级元素和行内元素</view>三种类型
</view>

显示效果

元素浮动与清除

元素浮动就是设置了浮动属性的元素会脱离标准文档流的控制,移到其父元素指定位置的过程。在css里通过float属性定义浮动,基本格式为:

{
floa:none|left|right;
}

代码示例,分别对box1,box2,box3元素左浮动

<view>box1,box2,box3没浮动</view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="border: 1px solid #0f0;">box1</view>
<view style="border: 1px solid #0f0;">box2</view>
<view style="border: 1px solid #0f0;">box3</view>
</view>
<view>box1左浮动</view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="float: left; border: 1px solid #0f0;">box1</view>
<view style="border: 1px solid #0f0;">box2</view>
<view style="border: 1px solid #0f0;">box3</view>
</view>
<view>box1 box2左浮动</view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="float: left; border: 1px solid #0f0;">box1</view>
<view style="float: left; border: 1px solid #0f0;">box2</view>
<view style="border: 1px solid #0f0;">box3</view>
</view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="float: left; border: 1px solid #0f0;">box1</view>
<view style="float: left; border: 1px solid #0f0;">box2</view>
<view style="float: left; border: 1px solid #0f0;">box3</view>
</view>

运行效果:

通过案例发现,box3左浮动后,父元素边框未能包裹box3元素,这时可以通过清除浮动来解决

清除浮动基本格式为:

{
clear:left|right|both|none;
}

 

left:清除左浮动

right:清除右浮动

both:清除两侧浮动

none:不清除浮动

示例代码:

<view>box1 box2左浮动box3清除左浮动</view>
<view style="border: 1px solid #f00;padding: 5px;">
<view style="float: left; border: 1px solid #0f0;">box1</view>
<view style="float: left; border: 1px solid #0f0;">box2</view>
<view style="clear:left;border: 1px solid #0f0;">box3</view>
</view>

运行效果:

还可以在父元素外面添加一个空元素,实现父元素被包裹浮动元素,示例代码:

wxml

<view>box1 box2 box3左浮动 在父元素后面添加一个空元素</view>
<view style="border: 1px solid #f00;padding: 5px" class="clear-float">
<view style="float: left; border: 1px solid #0f0;">box1</view>
<view style="float: left; border: 1px solid #0f0;">box2</view>
<view style="float:left;border: 1px solid #0f0;">box3</view>
</view>

 wxss

.clearfloat::after{
  display: block;
  clear: both;
  height: 0;
  content: "";
}

运行效果

 元素定位

在css中通过pisition属性可以实现对页面元素的精确定位。基本格式:

{
position:static|relative|absolute|fixed
}
 
​


static-默认值

relative-相对定位

absolute-绝对定位

fixed-固定定位

对box1,box2,box3进行元素静态定位,示例代码:

<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box3</view>

 

运行效果:

 

对box1,box2,box3进行元素相对定位,示例代码:

<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="float: left; border: 1px solid #0f0;width: 100px;height: 100px;position: relative;left: 30px;top: 30px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px">box3</view>

----------------

运行效果:

 对box1,box2,box3进行元素绝对定位,示例代码:

<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="float: left; border: 1px solid #0f0;width: 100px;height: 100px;position: absolute;left: 30px;top: 30px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px">box3</view>


运行效果:

  对box1,box2,box3进行元素固定定位,示例代码:

<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="float: left; border: 1px solid #0f0;width: 100px;height: 100px;position: fixed;left: 30px;top: 30px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px">box3</view>


 通过案例发现,绝对定位和固定定位效果相同。因为它们的父元素是page,没有定位。

如果将box1,box2,box3的父元素采用相对定位,将box2采用绝对定位,代码·:

<view style="position: relative;top: 50px;left: 50px;border: 1px solid #00f;">
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;position: absolute;left: 30px;top: 30px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box3</view>
</view>


运行效果

如果将box1,box2,box3的父元素采用相对定位,将box2采用固定定位,代码·:

<view style="position: relative;top: 50px;left: 50px;border: 1px solid #00f;">
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box1</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;position: fixed;left: 30px;top: 30px;">box2</view>
<view style="border: 1px solid #0f0;width: 100px;height: 100px;">box3</view>
</view>


运行效果

flex布局

flex主要由容器和项目组成,采用flex布局的元素称为flex容器(flex container),flex布局的所有直接子元素自动成为容器的成员,称为flex项目(flex item)。

容器默认存在两根轴:水平的主轴(main axis),和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。 

容器属性

flex容器支持的属性有七种,如图:

1.display用来指定元素是否为flex布局,语法格式为:

.box{
display:flex|inline|flex;
}


 flex——块级flex布局,该元素变为弹性盒子;

inline-flex——行内flex布局,行内容器符合行内元素的特征,同时在容器内又符合flex的布局规范。

设置了flex布局后,子元素的float,clear,vertical-align属性将失效;

2. flex - direction
fex-direction用于设置主轴的方向,即项目排列的方向,语法格式为:

.box{
flex-direction:row|row-reverse|column|column-reverse;
}


其中,mw--主轴为水平方向,起点在左端,当元素设置为ex布局时,主轴默认为、
row-reverse--主轴为水平方向,起点在右端;column--主轴为垂直方向,起点在顶端;colunn -reverse--主轴为垂直方向,起点在底端。

如图所示为元素在不同主轴方向下的显示效果

 3. flex - wrap
flex-wrap用来指定当项目在一根轴线的排列位置不够时,项目是否换行,其语法格式如下:

.box{
flex-wrap:nowrap|wrap|wrap -reverse;
}


其中,nowrap--不换行,默认值;
wrap--换行,第一行在上方;
wrap-reverse--换行,第一行在下方。
当设置换行时,还需要设置 aign-item属性来配合自动换行,但 align -item 的值不"stretch "
nex-wrap不同值的显示效果如图所示。

 4. flex -flow
flex-flow是flex -direction 和 flex-wrap 的简写形式,默认值为 row nowrap。语法格式如下:

.box{
flex-flow:<flex-direction>||<flex-wrap>;
}


示例代码:
 

.box{flex-flow:row nowrap;}//水平方向不换行
.box{flex-flow:row-reverse wrap;}//水平方向逆方向换行
.box{flex-flow:column wrap-reverse;}//垂直方向逆方向换行


5. justify-content
justify-content用于定义项目在主轴上的对齐方式。语法格式如下:

.box{
justify-content:flex-start|flex-end|center|space -between|space-around;
}


其中,justify-content-
dex-sart--左对齐,默认值;
nex-end--右对齐;
center--居中;
space-between--两端对齐,项目之间的间隔都相等;space-around--每个项目两侧的间隔相等。
图3-15 所示为justify-content 不同值的显示效果。

 6. align -items
dlipn-iiems用于指定项目在交叉轴上的对齐方式,语法格式如下:

.box{
align-items:flex-start|flex-end|center|baseline|stretch;
}


其中,align-iems--与交叉轴方向有关,默认交叉由上到下;
0ex-slar--交叉轴起点对齐;
nex-end--交叉轴终点对齐;
cenler--交叉轴中线对齐;
baseline--项目根据它们第一行文字的基线对齐;
streteh--如果项目未设置高度或设置为auto,项目将在交叉轴方向拉伸填充容器,此为默认值。
示例代码如下:

wxml

<view class="cont1">
<view class="item">1</view>
<view class="item item2">2</view>
<view class="item item3">3</view>
<view class="item item4">4</view>
</view>
wxss

.cont1{
  display: flex;
  flex-direction: row;
  align-items: baseline;
}
.item{
  background-color: #ccc;
  border:1px solid #f00;
  height: 100px;
  width: 50px;
  margin: 2px;
}
.item2{
  height: 80px;
}
.item3{
  display: flex;
  height: 50px;
  align-items: flex-end;
}
.item4{
  height: 120px;
}

运行效果:

 7. align -content
align-content用来定义项目有多根轴线(出现换行后)在交叉轴上的对齐方式,如果只有一根轴线,该属性不起作用。语法格式如下:

.box{
align-content:flex-start|fle -end|center|space -between|space-around|stretch
}


其中,space-between--与交叉轴两端对齐,轴线之间的间隔平均分布;space-around--每根轴线两侧的间隔都相等,轴线之间的间隔比轴线与边框间隔大倍。
其余各属性值的含义与align-items属性的含义相同。

如图所示为align-content不同值的显示效果

项目属性

容器内的项目支持六个属性,其功能和名称如图

1.order

order属性定义项目排列顺序,数值越小排列越靠前,默认为0,语法格式:

,item{
order:<number>;
}


 示例代码:

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" style="order:1">1</view>
<view class="item" style="order:2">2</view>
<view class="item" style="order:3">3</view>
<view class="item">4</view>
</view>


运行效果:

 2.flex-grow

nex-grow 定义项目的放大比例,默认值为0,即不放大。语法格式如下:

.item{
flex-grow:<number>;
}


示例代码:

​
<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" style="flex-grow:1">1</view>
<view class="item" style="flex-grow:2">2</view>
<view class="item" style="flex-grow:3">3</view>
<view class="item">4</view>
</view>
 
​


运行效果:

 3. nex -shrink
nex-shzink 用来定义项目的缩小比例,默认值为1,如果空间不足,该项目将被编小语法格式如下:

.item{
flex-shrink:<number>;
}


示例代码:

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" style="flex-shrink:1">1</view>
<view class="item" style="flex-shrink:2">2</view>
<view class="item" style="flex-shrink:1">3</view>
<view class="item" style="flex-shrink:4">4</view>
</view>

 假定容器宽度为800px,4个元素的宽度分别为240px,元素宽度比容器多160px(即240 x4-800)。当flex-shrink 属性值为!时,由于空间不足,4 个项目将被等比例缩小,每个元素变为200px;当4个元素的缩小比例为1:2:1:4时,它们的宽度分别减少20px、40px、20p、80,它们的实际宽度变为220Px、200 P220 px、160 px。
4.flex- basis

flex-basis 属性用来定义伸缩项目的基准值,剩余的空间将按比例进行缩放,它的默认值为auto(即项目的本来大小)。语法格式如下:

.item{
flex-basis:<number>lauto;
}


示例代码:

<view class="cont1">
<view class="item">1</view>
<view class="item">2</view>
<view class="item">3</view>
<view class="item">4</view>
</view>
<view class="cont1">
<view class="item" >1</view>
<view class="item" style="flex-basis:100px">2</view>
<view class="item" style="flex-basis:200px">3</view>
<view class="item">4</view>
</view>


5. llex
flex属性是 flex-grow、flex-shrink 和flex-basis的简写,其默认值分别为0、1、auto.语法格式如下:

.item{
flex:<flex-grow>|<flex-shrink>|<flex-basis>;
}
 实例代码:

.item{
flex:auto;
}
.item{
flex:none;
}


6.align-self

align-self属性用来指定单独的伸缩项目在交叉轴上的对齐方式。该属性会重写默认的对齐方式。语法格式如下:

.item{
align-self:auto|flex-start|flex-end|cengter|baseline|stretch;
}


在该属性值中,除了auto以外,其余属性值和容器align-items的属性值完全一致。auto 表示继承容器 align-ilems的属性,如果没有父元素,则等于stretch(默认值).

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值