微信小程序前端开发

一、小程序简介

  1. 小程序与普通网页开发的区别
    1. 运行环境不同
    2. API不同
      1. 小程序中无法调用DOM和BOM的API。
      2. 可以调用微信环境提供的各种API
        1. 地理定位
        2. 扫码
        3. 支付
    3. 开发模式不同
      1. 申请小程序开发账号
      2. 安装小程序开发者工具
      3. 创建和配置小程序项目
  2. 可使用微信扫码下方小程序码,体验小程序:

二、注册小程序开发账号

  1. 点击注册按钮:打开微信公众平台,点击右上角“立即注册”。
  2. 选择注册账号类型 → 小程序
  3. 填写账号信息
  4. 提示邮箱激活
  5. 点击激活账号链接
  6. 选择主体类型 → 个人
  7. 主体信息登记
  8. 获取小程序的AppID
    1. 开发 → 开发设置 → 开发者ID

三、安装开发者工具

  1. 了解微信开发者工具:官方推荐使用的小程序开发工具
  2. 下载 → 微信开发者工具(稳定版 Stable Build)下载地址与更新日志 | 微信开放文档 
  3. 扫码登陆
  4. 设置外观和代理 → 左上设置图标 → 外观:浅色 → 字号18、行距12 → 代理:不使用任何代理

四、创建小程序项目

  1. 点击“加号”按钮
  2. 填写项目信息:不使用云服务、JS基础版
  3. 项目创建完成
  4. 在模拟器上查看项目效果  → 在手机上查看效果 → 预览扫码
  5. 主界面5个组成部分

注意:

  1. 机型选择iphone 6/7/8 显示比例85%
  2. 调试器中用的最多的 console
  3. 设置中的通用设置用的比较多
  4. 帮助中可以找到开发者文档

五、项目结构

  1. 了解项目基本组成结构 
    1. pages:存放所有小程序的页面
    2. utils:存放工具性质的模块
    3. app.js:项目的入口文件
    4. app.json:项目的全局配置文件
    5. app.wxss:项目的全局样式文件
    6. project.config.json:项目的配置文件
    7. sitemap.json:小程序及其页面是否允许被微信索引
  2. 小程序页面的组成部分
    1. 小程序官网建议把所有小程序的页面都存放在 pages 目录中,以单独的文件夹存在
      1. 每个页面由四个基本文件组成:
        1. .js文件        页面的脚本文件,存放页面的数据事件处理函数等
        2. .json文件    当前页面的配置文件,配置窗口的外观、表现等
        3. .wxml文件   页面的模板结构文件
        4. .wxss文件   当前页面的样式表文件

json配置文件的作用

JOSN是一种数据格式,在实际开发中,JSON总是以 配置文件 的形式出现。小程序项目中也不例外:通过不同的 .json配置文件,可以对小程序项目进行不同级别的配置。

小程序项目中由4种json配置文件,分别是:

  1. 项目根目录中的 app.json配置文件 →全局配置文件
  2. 项目根目录中的 project.config.json配置文件
  3. 项目根目录中的 sitemap.json配置文件
  4. 每个页面文件夹中的 .json配置文件

app.json文件

app.json是当前小程序的全局配置,包括了小程序的所有页面路径、窗口外观、界面表现、底部tab等。Demo项目里边的app.json配置内容如下:

  1. pages:用来记录当前小程序所有页面的路径
  2. window:全局定义小程序所有页面的背景色、文字颜色等
  3. style:全局定义小程序组件所使用的样式版本
  4. sitemapLocation:用来指明sitemap.json的位置

project.config.json文件

project.config.json是项目配置文件,用来记录我们对小程序开发工具所做的个性化配置,例如:

  • setting 中保存了 编译相关的配置
  • projectname 中保存的是 项目名称
  • appid  中保存的是 小程序的账号ID

sitemap.json文件

微信现已开放 小程序内搜索,效果类似于PC网站的SEO。sitemap.json 文件用来 配置小程序页面是否允许微信索引。

当开发者允许微信索引时,微信会通过爬虫的形式,为小程序的页面内容建立索引。当用户的所有关键字和页面的索引匹配成功的时候,小程序的页面将可能展示在搜索结果中。

   

页面的 .json配置文件

小程序中的每一个页面,可以使用 .json文件来对本页面的窗口外观进行配置,页面中的配置项会覆盖 app.json 的 window中相同的配置项。

新建小程序页面

在app.json --> pages 中新增页面的存放路径,小程序开发者工具即可帮我们自动创建对应的页面文件。小程序会把排在第一位的页面当作项目首页进行渲染。               

六、小程序代码构成

1.WXML

WXML 是小程序框架设计的一套标签语言,用来构建小程序页面的结构,其作用类似于网页开发中的HTML

2.WXML和HTML区别

  1. 标签名称不同
    1. HTML(div  span  img  a)
    2. WXML(view text  image  navigator)
  2. 属性节点不同
    1. <a herf="#">超链接</a>
    2. <navigator url="/pages/home/home"></navigator>
  3. 提供了类似Vue中的模板语法
    1. 数据绑定
    2. 列表渲染
    3. 条件渲染

3.什么是WXSS

WXSS是一套 样式语言,用于描述WXML的组件样式,类似于网页开发中的CSS

4.WXSS和CSS区别

  1. 新增了rpx尺寸单位
    1. css中需要手动进行像素单位换算,例如rem
    2. wxss在底层支持新的尺寸单位rpx,在不同大小的屏幕上小程序会自动进行换算
  2. 提供了全局的样式和局部样式
    1. 项目根目录中的app.wxss会作用于所有小程序页面
    2. 局部页面的.wxss样式仅对当前页面生效
  3. WXSS仅支持部分CSS选择器
    1. .class   #id
    2. element
    3. 并集选择器、后代选择器
    4. ::after   ::before等伪类选择器

5.小程序中的 .js 文件

一个项目仅仅提供页面展示是不够的,在小程序中,我们通过.js文件来处理用户的操作。例如:响应用户的点击、获取用户的位置等等。

.js文件的分类:

  1. app.js
    1. 整个小程序项目的入口文件,通过调用App( )函数来启动整个小程序
  2. 页面的 .js文件
    1. 页面的入口文件,通过调用Pages( )函数来创建并运行页面
  3. 普通的 .js文件
    1. 普通的功能模块文件,用来封装公共的函数或属性供页面使用

6.小程序的宿主环境

什么是宿主环境

        宿主环境指的是 程序运行所必须的依赖环境。例如:

                Android系统和iOS系统 是两个不同的宿主环境。安卓版的微信App是不能在iOS环境下运行的,所以,Android是安卓软件的宿主环境,脱离了宿主环境的软件是没有任何意义的。

小程序的宿主环境

手机微信是小程序的宿主环境

小程序借助宿主环境提供的能力,可以完成许多普通网页无法完成的功能

小程序宿主环境包含的内容

  • 通信模型
    • 通信的主体:小程序中通信的主体是渲染层和逻辑层
      • WXML模板和WXSS样式工作在渲染层
      • JS脚本工作在逻辑层
    • 通信模型
      • 渲染层和逻辑层之间的通信
        • 由微信客户端进行转发
      • 逻辑层和第三方服务器之间的通信
        • 由微信客户端进行转发
  • 运行机制
    • 启动的过程
      • 把小程序的代码包下载到本地
      • 解析app.json全局配置文件
      • 执行app.js小程序入口文件,调用App()创建小程序实例
      • 渲染小程序首页
      • 小程序启动完成
    • 页面渲染过程
      • 加载解析页面的.json配置文件
      • 加载页面的.wxml模板和.wxss样式
      • 执行页面的.js文件,调用Page()创建页面实例
      • 页面渲染完成
  • 组件
    • 小程序中的组件也是由宿主环境提供的,开发者可以基于组件快速搭建出漂亮的页面结构。
  • API

组件

1、视图容器

view
  • 普通视图区域
  • 类似于HTML中的div,是一个块级元素
  • 常用来实现页面的布局效果
基本使用

实现如图的flex横向布局效果:

关于display:flex; justify-content:space-around;的解释 弹性盒子(display: flex)布局超全讲解|Flex 布局教程_display:flex-CSDN博客

srcoll-view
  • 可滚动的视图区域
  • 常用来实现滚动列表的效果
基本使用

实现如图的纵向滚动效果:

swiper、swiper-item
  • 轮播图容器组件 和 轮播图item组件
基本使用

swiper组件的常用属性
属性类型默认值说明
indicator-dotsbooleanfalse是否显示面板指示点
indicator-colorcolorrgba(0,0,0,0.3)指示点颜色
indicator-active-colorcolor#000000当前选中的指示点颜色
autoplaybooleanfalse是否自动切换
intervalnumber5000自动切换时间间隔
circularbooleanfalse是否采用衔接滑动

<swiper class="swiper-container" indicator-dots="true" indicator-color="white" indicator-active-color="gray" autoplay="true" interval="3000" circular="true">
  <!-- 第1项 -->
  <swiper-item>
    <view class="item">A</view>
  </swiper-item>
   <!-- 第2项 -->
   <swiper-item>
    <view class="item">B</view>
  </swiper-item>
   <!-- 第3项 -->
   <swiper-item>
    <view class="item">C</view>
  </swiper-item>
</swiper>
.swiper-container{
  height: 150px; /* 轮播图容器的高度 */
}

.item{
  height: 100%;
  line-height: 150px;
  text-align: center;
}

swiper-item:nth-child(1) .item{
  background-color: lightgreen;
}
swiper-item:nth-child(2) .item{
  background-color: lightskyblue;
}
swiper-item:nth-child(3) .item{
  background-color: lightpink;
}

2、基础内容

text
  • 文本组件
  • 类似于HTML中的span标签,是一个行内元素
基本使用

通过text组件的 selectable / user-select 属性,实现长按选中文本内容的效果:

rich-text
  • 富文本组件
  • 支持把HTML字符串渲染为WXML结构
基本使用

通过rich-text组件的 nodes 属性节点,把HTML字符串渲染为对应的UI结构:

3、表单组件

button
  • 按钮组件
  • 功能比HTM中的button按钮丰富
  • 通过open-type属性可以调用微信提供的各种功能(客服、转发、获取用户授权、获取用户信息等)
基本使用

<!-- 按钮组件的基本使用 -->
<!-- 通过 type 属性指定按钮颜色类型 -->
<button>默认按钮</button>
<button type="primary">主色调按钮</button>
<button type="warn">警告按钮</button>
<!-- size = "min" 小尺寸按钮 -->
<button size="mini">默认按钮</button>
<button type="primary" size="mini">主色调按钮</button>
<button type="warn" size="mini">警告按钮</button>
<!-- plain 镂空按钮 -->
<button plain="true">默认按钮</button>
<button type="primary" plain="true">主色调按钮</button>
<button type="warn" plain="true">警告按钮</button>
image
  • 图片组件
  • image组件默认宽度约300px、高度约240px

image组件的mode属性

image组件的 mode 属性用来指定图片的 裁剪 和 缩放 模式,常用的 mode 属性值如下:

mode值说明

scaleToFill

(默认值)缩放模式, 不保持纵横比缩放图片,使图片的宽高完全拉伸至填满image元素
aspectFit缩放模式,保持纵横比缩放图片,使图片的长边能完全显示出来。也就是说,可以完整的将图片显示出来
aspectFill缩放模式,保持纵横比缩放图片,只保证图片的短边能完全显示出来。即 图片通常只在水平或垂直方向是完整的,另一个方向将会发生截取
widthFix

缩放模式,宽度不变,高度自动变化,保持原图宽高比不变

heightFix缩放模式,高度不变,宽度自动变化,保持原图宽高比不变

4、导航组件

navigator(后面课程会专门讲解)
  • 页面导航组件
  • 类似HTML中的 a 链接

5、媒体组件

6、map地图组件

7、canvas画布组件

8、开放能力

9、无障碍访问

七、API

1.小程序API概述

小程序中的API是由宿主环境提供的,通过这些丰富的小程序API,开发者可以方便的调用微信提供的能力,例如:获取用户信息、本地存储、支付功能等。

2.小程序API的3大分类

  • 事件监听API
    • 特点:以 on 开头,用来 监听某些事件的触发
    • 举例:wx.onWindowResize(function callback)监听窗口尺寸变化的事件
  • 同步API
    • 特点1:以 Sync 结尾的API都是同步API
    • 特点2:同步API的执行结果,可以通过函数返回值直接获取,如果执行出错会抛出异常
    • 举例:wx.setStorageSync('key','value') 向本地存储中写入内容
  • 异步API
    • 特点:类似于jQuery中的 $.ajax(options)函数,需要通过success、fail、complete接受调用的结果
    • 举例:wx.request()发起网络数据请求,通过success回调函数接收数据

八、协同工作和发布

协同工作

1、了解 权限管理需求

在中大型的公司里,人员的分工非常仔细:同一个小程序项目,一般会有不同岗位、不同角色的员工同时参与设计和开发。

此时处于管理需要,我们迫切需要对不同岗位、不同角色的员工的权限进行边界的划分,使他们能够高效的进行协同工作。

2、了解项目成员的组织结构

3、小程序的开发流程

提出需求 → 设计 → 开发 → 体验 → 测试 → 发布

小程序的版本

1、软件开发过程中的不同版本

在软件开发工程中,根据时间节点的不同,会产出不同的软件版本,例如:

  • 开发者编写代码的同时,对项目代码进行自测(开发版本)
  • 程序达到一个稳定可体验的状态时,开发者把体验版本给到产品经理和测试人员进行体验测试
  • 最后修复完程序的Bug后,发布正式版供外部用户使用

2、小程序的版本

  • 开发版本:使用开发者工具,可将代码上传到开发版本中。开发版本只保留每人最新的一份上传的代码。点击提交审核,可将代码提交审核。开发版本可删除,不影响线上版本和审核中版本的代码。
  • 体验版本:可以选择某个开发版本作为体验版,并且选取一份体验版。
  • 审核中的版本:只能有一份代码处于审核中。有审核结果后可以发布到线上,也可直接重新提交审核,覆盖原审核版本。
  • 线上版本:线上所有用户使用的代码版本,该版本代码在新版本代码发布后被覆盖更新。

3、发布上线

整体步骤:

  • 上传代码 
    • 点击开发者工具顶部工具栏中的“上传”按钮
    • 填写版本号以及项目备注
    • 可以在后台查看上传之后的版本:登陆小程序管理后台 -> 管理 ->版本管理 -> 开发版本
  • 提交审核
    • 为了保证小程序的质量,以及符合相关的规范,小程序的发布是需要经过腾讯官方审核的
    • 提交审核的方式:在开发版本的列表中,点击"提交审核"按钮之后,按照页面提示填写相关的信息
  • 发布
    • 审核通过之后,管理员的微信中会受到小程序通过审核的通知,此时在审核版本的列表中,点击“发布”按钮之后,即可把“审核通过”的版本发布为“线上版本”,供所有小程序用户访问和使用
  • 基于小程序码进行推广
    • 比普通二维码在样式上更具有辨识度和视觉冲击力
    • 能够更加清晰的树立小程序的品牌形象
    • 可以帮助开发者更好的推广小程序
  • 获取小程序码的5个步骤
    • 登录小程序后台管理
    • 设置
    • 基本设置
    • 基本信息
    • 小程序码及线下物料下载
  • 查看小程序运营数据的两种方式
    • “小程序后台”查看
      • 登录管理后台
      • 点击侧边栏的“统计”
      • 点击相应的tab可以看到相关数据
    • 使用“小程序数据助手”查看
      • 打开微信
      • 搜索“小程序数据助手”
      • 查看已发布的小程序相关的数据

九、模板与配置

1、WXML模板语法 --- 数据绑定

数据绑定的基本原则

  • 在date中定义页面的数据
    • 在页面对应的 .js文件中,把数据定义到 date对象中即可
  • 在WXML中使用数据
    • Mustache 语法的格式;把 date 中的数据绑定到页面中渲染,使用Mustache语法(双大括号)将变量包起来即可。语法格式为:
      <view>{ { 要绑定的数据名称 } } </view>

    • Mustache语法的应用场景

      • 绑定内容

        • 动态绑定内容

          • 页面数据如下:

          • 页面结构如下:

      • 绑定属性

        • 动态绑定属性

          • 页面数据如下:

          • 页面结构如下:

          • 注:可以添加 mode属性使图片自适应展示

      • 运算(三元运算、算术运算等)

        • 三元运算

          • 页面数据如下:

          • 页面结构如下:

        • 算术运算

          • 页面数据如下:

          • 页面结构如下:

在微信小程序中,random 是一个常用的方法,用于生成一个 [0, 1) 之间的随机浮点数

toFixed() 是 JavaScript 中 Number 对象的一个方法,用于将数字格式化为具有指定小数位数的字符串。

你看到的类似这样的代码:

var randomNum = Math.random().toFixed(2);

在上面的代码中:

  1.   Math.random() 生成一个 [0, 1) 之间的随机浮点数。
  2.   .toFixed(2) 将这个浮点数格式化为一个字符串,并保留两位小数。

所以,randomNum 会是一个形如 "0.xx" 的字符串,其中 "xx" 是两位随机小数。

如果你想在微信小程序中生成一个具有特定小数位数的随机浮点数,你应该首先使用 Math.random() 生成随机数,然后使用 toFixed() 进行格式化。如果你需要的是一个数字而不是字符串,你可以再次使用 parseFloat() 或 Number() 来转换它。

var randomNum = parseFloat((Math.random() * 100).toFixed(2)); // 生成一个0到99.99之间的随机浮点数

请注意,使用 toFixed() 会四舍五入到指定的小数位数,并且结果是一个字符串。因此,如果你想再次得到一个数字,你需要进行转换。

2、WXML模板语法 --- 事件绑定

什么是事件?

事件是渲染层到逻辑层的通讯方式。通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理。

小程序中常用的事件

类型绑定方式事件描述
tapbindtap 或 bind:tap手指触摸后马上离开,类似于HTML中的click事件
inputbindinput 或 bind:input文本框的输入事件
changebindchange 或 bind:change状态改变时触发

事件对象的属性列表

当事件回调触发的时候,会收到一个事件对象event,它的详细属性如下表所示:

属性类型说明
typeString事件类型
timeStampinteger页面打开到触发事件所经过的毫秒数
targetObject触发事件的组件的一些属性值集合
currentTargetObject当前组件的一些属性值集合
detailObject额外的信息
touchesArray触摸事件,当前停留在屏幕中的触摸点信息的数组
changedTouchesArray触摸事件,当前变化的触摸点信息的数组

target (常用) 和 currentTarget 的区别

target是触发该事件的源头组件,currentTarget是当前事件所绑定的组件。举例如下:

点击内部按钮时,点击事件以 冒泡 的方式向外扩散,也会触发外层 view 的 tap 事件处理函数。

此时,对于外层的view来说:

  • e.target指向的是触发事件的源头组件,因此,e.target是内部的按钮组件
  • e.currentTarget指向的是当前正在触发事件的那个组件,因此,e.currentTarget是当前 view的组件

如同你去拍超级风暴,target相当于风暴中心,currentTarget相当于你站的位置

bindtap的语法格式

在小程序中,不存在HTML中的onclick鼠标点击事件,而是通过tap事件来响应用户的触摸行为。

  • 通过bindtap,可以为组件绑定 tap 触摸事件,语法如下:
    • <button type = "primary" bindtap = "btnTapHandler">按钮</button>
    • 在页面的 .js 文件中定义对应的事件处理函数,事件参数通过形参 event (一般简写成e)来接收:

事件绑定
在事件处理函数中为 data 中的数据赋值

通过调用 this.setData(dataObject)方法,可以给页面data中的数据重新赋值,示例如下:

事件传参

小程序中的事件传参比较特殊,不能在绑定事件的同时为事件处理函数传递参数。例如,下面的代码不能正常工作:

<button type="primary" bindtap="btnHandler(123)">事件传参</button>

因为小程序会把bindtao的属性值统一当作事件名称来处理,相当于要调用一个名称为btnHandler(123)的事件处理函数。

可以为组件提供 data-* 自定义属性传参,其中 *代表的是参数的名字。示例如下:

<button bindtap="btnHandler" data-info="{{2}}">事件传参</button>
  • info会被解析为 参数的名字
  • 数值2会被解析为参数的值

在事件处理函数中,通过event.target.dataset.参数名 可以获取到 具体参数的值,示例如下:

btnHanlder(event){
    //dataset 是一个对象,包含了所有通过 data-* 传递过来的参数项
    console.log(event.target.dataset)
    //通过 dataset 可以访问到具体参数的值
    console.log(event.target.dataset.info)
}

bindinput的语法格式

在小程序中,通过 input事件 来响应文本框的输入事件,语法格式如下:

  • 通过bindinput,可以为文本框绑定输入事件:
    <input bindinput="inputHandler">
  • 在页面的 .js 文件中定义事件处理函数:
    inputHandler(e){
        //e.detail.value 是变化股后,文本框最新的值
        console.log(e.detail.value)
    }

实现文本框和data之间的数据同步

步骤:

  • 定义数据:                   
  • 渲染结构:
  • 美化样式:
  • 绑定input事件处理函数:

3、条件渲染

1.wx : if

在小程序中,使用  wx:if = "{{ condition }}" 来判断是否需要渲染该代码块:

<view wx:if="{{ condition }}"> True </view>

也可以用 wx:elif  和  wx:else 来添加 else 判断:(else不用加任何条件,代表最后一种情况)

<view wx:if="{{type === 1}}"> 男 </view>
<view wx:elif="{{type === 2}}"> 女 </view>
<view wx:else> 保密 </view>

2、结合 <block> 使用 wx:if

如果要一次性控制多个组件的展示与隐藏,可以使用一个 <block></block>标签将多个组件包装起来,并在<block>标签上使用 wx:if 控制属性,示例如下:

<block wx:if="{{true}}">
    <view> view1 </view>
    <view> view2 </view>
</block>

注:<block>并不是一个组件,它只是一个包裹性质的容器,不会在页面中做任何渲染。

3、hidden

在小程序中,直接使用 hidden="{{ condition }}" 也能控制元素的显示与隐藏:

<view hidden="{{ condition }}"> 条件为 true 隐藏,条件为 false 显示 </view>

4、wx:if 与 hidden的对比

  • 运行方式不同
    • wx:if 以动态创建和移除元素的方式,控制元素的展示与隐藏
    • hidden以切换样式的方式(display:none/block;),控制元素的显示与隐藏
  • 使用建议
    • 频繁切换时,建议使用 hidden
    • 控制条件复杂时,建议使用wx:if 搭配 wx:elif、wx:else进行展示与隐藏的切换

4、列表渲染

1、wx:for

通过wx:for可以根据指定的数组,循环渲染重复的组件结构,示例如下:

<view wx:for="{{array}}">
    索引是:{{index}} 当前项是:{{item}}
</view>

默认情况下,当前循环项的索引用index表示;当前循环项用item表示。 

2、手动指定索引和当前项的变量名*(了解,较少使用)

  • 使用 wx:for-index 可以指定 当前循环项的索引 的变量名
  • 使用 wx:for-item 可以指定 当前项的变量名

示例代码:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
    索引是:{{idx}},当前项是:{{itemName}}
</view>

3、wx:key 的使用

类似于Vue列表渲染中的 :key,小程序再实现列表渲染时,也建议为渲染出来的列表项指定唯一的key值,从而提高渲染的效率,示例代码如下:

//index.wxml
<view wx:for="{{userList}}" wx:key="id">{{item.name}}</view>


//index.js
data: {
    arr1:['苹果','华为','小米'],
    array:['苹果','华为','小米'],
    userList:[
      {id:1,name:'小红'},
      {id:2,name:'小黄'},
      {id:3,name:'小白'}
    ]
  }

5、WXSS模板样式

1.什么是WXSS

WXSS 是一套 样式语言,用于美化WXML的组件样式,类似于网页开发中的CSS。

2.WXSS 和 CSS 的关系

WXSS具有CSS大部分特性,同时,WXSS还对CSS进行了扩充以及修改,以适应微信小程序的开发。

与CSS相比,WXSS扩展的特性有:

  • rpx 尺寸单位
  • @import 样式导入

1.什么是 rpx 尺寸单位

rpx(responsive pixel)是微信小程序独有的,用来解决屏适配的尺寸单位。

 2.rpx的实现原理

rpx的实现原理:鉴于不同设备屏幕的大小不同,为了实现屏幕的自动适配,rpx把所有设备的屏幕,在宽度上等分为750份(即:当前屏幕的总宽度为750rpx)

  • 在较小的设备上,1rpx所代表的宽度较小
  • 在较大的设备上,1rpx所代表的宽度较大

小程序在不同设备上运行的时候,会自动把rpx的样式单位换算成对应的像素单位来渲染,从而实现屏幕适配。

3.rpx 与 px 之间的单位换算*(了解)

在iPhone6上,屏幕宽度为375px,共有750个物理像素,等分为750rpx。则:

750rpx = 375px = 750物理像素

1rpx = 0.5px = 1物理像素

设备rpx换算px(屏幕宽度/750)px换算rpx(750/屏幕宽度)
iPhone51rpx = 0.42px1px = 2.34rpx
iPhone61rpx = 0.5px1px = 2rpx
iPhone6 Plus1rpx = 0.552px1px = 1.81rpx

官方建议:开发微信小程序时,设计师可以用iPhone6作为视觉稿的标准。

开发举例:在iPhone6上如果要绘制宽100px,高20px的盒子,换算成rpx单位,宽高分别为200rpx和40rpx。

3、什么是样式导入

使用WXSS提供的 @import 语法,可以导入外联的样式表。

4、@import的语法格式

@import 后跟需要导入的外联样式表的相对路径,用 ; 表示语句结束。示例如下:

5、全局样式和局部样式

1、全局样式

定义在app.wxss中的样式为全局样式,作用于每一个页面。

2、局部样式

在页面 .wxss 文件中定义的样式为局部样式,只作用于当前页面。

注意:

  • 当局部样式和全局样式冲突时,根据就近原则,局部样式会覆盖全局样式
  • 当局部样式的权重大于或等于全局样式的权重时,才会覆盖全局的样式

6、全局配置

1.全局配置文件以及常用的配置项

小程序根目录下的 app.josn 文件时小程序的全局配置文件。常用的配置项如下:

  • pages
    • 记录当前小程序所有页面的存放路径
  • window
    • 全局设置小程序窗口的外观
  • tabBar
    • 设置小程序底部的 tabBar 效果
  • style
    • 是否启用新版的组件样式

2.全局配置 -- window

1、小程序窗口的组成部分 -- navigationBar 和 background部分

2、了解 window 节点常用的配置项
属性名类型默认值说明
navigationBarTitleTextString字符串导航栏标题文字内容
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如#000000
navigationBarTextStyleStringwhite导航栏标题颜色,仅支持 black / white
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStyleStringdark下拉loading的样式,仅支持 dark / light
enablePullDownRefreshBooleanfalse是否全局开启下拉刷新
onReachBottomDistanceNumber50页面上拉触底事件触发时距页面底部距离,单位为px

1、2、3是用来配置导航栏相关的样式效果;4、5用来配置窗口背景相关的;6、7用来控制页面效果的选项

3、设置导航栏的标题

设置步骤:app.json ---> window ---> navigationBarTitleText

4、设置导航栏的背景色

设置步骤:app.json ---> window --->  navigationBarBackgroundColor

不支持文本颜色,只支持以#开头的

5、设置导航栏的标题颜色

设置步骤:app.json ---> window ---> navigationBarTextStyle

需求:将导航条上的标题从默认的black改为white

                                                    ↓

注意:navigationBarTextStyle 的可选值只有 blackwhite

6、全局开启下拉刷新功能

概念:下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。

设置步骤:app.json ---> window ---> enablePullDownRefresh 改为true

注意:在app.json中启用下拉刷新功能,会作用于每一个小程序页面!

模拟器并不能百分百还原真机操作,调试时需要真机预览进行测试

7、设置当下刷新时窗口的背景颜色

当全局开启下拉刷新功能之后,默认的窗口背景为白色。如果自定义下拉刷新窗口背景色,设置步骤为:app.json ---> window ---> backgroundColorTop 为指定16进制的颜色值#efefef

8、设置下拉刷新时loading的样式

当全局开启下拉刷新功能之后,默认窗口的loading样式为白色,如果要更改loading样式的效果,设置步骤为:app.json ---> window ---> backgroundTextStyle 为指定值 dark / light。

9、设置上拉触底的距离

概念:上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

设置步骤为:app.json ---> window ---> onReachBottomDistance

注意:默认距离为50px,如果没有特殊需求,使用默认值即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值