0、写在前面的话

前几章的内容串联起来,基本上已经能写比较基础的小程序页面逻辑了,当然,wxml和wxss的我并没有写,因为前端我也并不擅长。这个章节,准备随便叨叨,然后补充一些之前没有提到的基础知识,这部分我会从我慕课网的学习笔记上搬过来,不过说实话,慕课网的笔记不能导出,还是很麻烦的,笔记记录的体验还行,但是查阅的体验可实在不怎么样。

1、rpx

在HTML中我们常用的是px这个单位,而在微信小程序中,官方提供了rpx单位,也是用得最多的单位,因为可以自适应屏幕,先看下官方的解释吧:
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

上面的概念就要稍微展开一些来谈了,我们先来说说什么是px,它其实有两个方面的概念:
  • 设备像素点px
  • CSS像素点px

设备像素点px,我们可以理解为说的是一个点,可是,谁能描述说一个“点”具体有多大多长?但是我们可以知道的是,同等面积,点越小,数量越多,画面就越清晰。这里的同等面积,就是指pt(印刷行业的常用单位,等于1/72英寸),一个pt中容纳多少个px,则称之为Reader,即pt/px的值,一般人类肉眼的极限是2~3。而所谓分辨率,就是指可以铺多少个设备像素点(当然这个点的大小各个设备定义不同),iPhone6的分辨率是750*1334,可以算出,其1个pt中铺了750/375=2个点。

而我们在Web中也有用的px这个单位,这里则不是指所谓设备像素点,而是指CSS像素点px,同时要知道的是,并不完全CSS中的1px≠设备中的1px,CSS的px在不同设备是不同的,也就是说,“当你给元素设置了 width: 200px 时,这个元素的宽度跨越了200个CSS像素。但是它并不一定跨越200个设备像素”,拿苹果的视网膜屏幕来举例,它的像素密度是普通屏幕的2倍,所以当我们设置 width: 200px; 时,200个CSS像素跨越了400个设备像素,如下图(《一篇真正教会你开发移动端页面的文章(一)》):


那么问题来了,一个CSS像素px到底有多长?它是一个相对单位,说起来就复杂了,抛出一个链接《像素(px)到底是个什么单位》,按参考文章中的总结,px是一个相对单位,而且在特定设备上总是一个近似值(原则是尽量接近参考像素)。

所以你可以理解为,就手机设备而言,CSS的px是个“固定”的单位长度,而这个长度在iPhone6则是375px*667px:
 
好了,现在我们回过头来再看微信中rpx的定义:
rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px = 1物理像素。

那么现在你可以理解了,微信规定了屏幕宽为750rpx,那么假设你设置一个字体为75rpx,那么它会占手机屏幕宽度的75/750=10%,不管手机是iPhone6还是iPhone4,始终是尺寸的10%了。这也是为什么文档中建议开发微信小程序时设计师用 iPhone6 作为视觉稿的标准了,因为iPhone6正好是375px,分辨率是750*1334,正好和750rpx相同,从视觉稿到页面设计,不必再去额外转换。

当然,在微信小程序中并不是所有都适合使用rpx,比如部分文字,在iPhone6上使用rpx作为单位,换作iPhone4小屏幕,可能字体就缩小到无法看清了。不同场合下,根据需要使用rpx或px。

2、wxss的引入

之前在讲到模板部分的时候,模板引入了,实际上模板对应的wxss也是可以独立开进行单独引入的。使用 @import 语句可以导入外联样式表,@import后跟需要导入的外联样式表的相对路径,用;表示语句结束,如下例:
/** common.wxss **/
.small-p {
padding:5px;
}
4
 
1
/** common.wxss **/ 
2
.small-p {
3
  padding:5px;
4
}
/** app.wxss **/
@import "common.wxss";
.middle-p {
padding:15px;
}
 
1
/** app.wxss **/
2
@import "common.wxss";
3
.middle-p {
4
  padding:15px;
5
}

3、关于Page下的json

app.json可以配置全局属性(整个应用程序,包括window),某个页面下的json只能配置当前页面的配置(仅window);所以单独页面的时候配置时不需要写window。

4、利用事件冒泡精简绑定代码

合理利用事件的冒泡,可以精简事件绑定的代码,如swiper中各个item的点击事件,可以统一绑定只在swiper上绑定一个事件即可,因为冒泡所以会被触发,但是要注意的是数据传递的问题,target和currentTarget的区别:taget指的是当前点击的组件,例如swiper里的image,而currentTarget指的是事件捕获的组件。
 

5、方法体,页面等变量参数的传递

往往可以考虑在Page的data中,或者App的全局变量,设置是小程序的缓存中,考虑变量属性的中转。

6、template注意事项

template模板中的事件,是无法在对应的template目录下的js文件中的,并不会生效。事件的对应函数,应该在调用模板的page中的js去写。

template传入的数据data,可以采用组合的方式,详见官方文档

不要在template上写class来控制样式,template只是一个占位符,实际上解析的时候就没了。

7、星星评分的启发

在豆瓣的页面中,我们可以看到星星评分的样式,实现的方式有点启发:把评分转换成5个数字的数组,如1表示有星,0表示无星(如5星是[1,1,1,1,1],三星则是[1,1,1,0,0]),循环即可通过三元运算符进行控制星星图片输出来实现。

8、页面编写的思路

先里后外,模板嵌套,先静后动,豆瓣 API,先结构后样式

9、设置页面背景颜色

json文件里面配置的background-color是最底层的,就是下拉刷新露出来的那部分背景。要设置我们常用的底层背景色,则设置page组件的 background-color 即可。
 

10、scroll-view和下拉刷新

下拉刷新则通过在 xxx.json 中配置实现,页面包含scroll-view则下拉刷新会“失效”,因为滑动会只滑动scroll-view组件而不是页面,所以无法触发onPullDownRefresh事件。想共存的方法就是将scroll-view替换为view,改用onReachBottom监听页面上滑到底。

11、undefined等数据为空的错误

做数据绑定时,最好给对象初始值(即使是空值),主要是数据请求的方式是异步的,可能因为执行的先后顺序而读取不到对象,继而报错。

12、scroll-view滚动展示图片

对于scroll-view中横向滚动展示图片,最好加上css white-space:nowrap(不换行)

13、css3新特性:模糊滤镜

filters主要运动在图片上以实现特效,如模糊则为 -webkit-filter:blur(20px)

微信小程序开发 [06] 一些补充的知识点的更多相关文章

  1. 从零入手微信小程序开发

    前言: 哈哈,发现我写的随笔都是项目驱使的.当然,这篇也是项目驱使的咯,前段时间领导在玩微信时候发现了微信小程序的好处,流程,切换速度快等,然后就让小弟研究研究小程序的实现. 补充下,博客大多都是处理 ...

  2. 微信小程序开发工具中快捷键

    微信小程序开发工具表面上是没有更多的样式类的工具,例如缩进.隐藏代码什么的. 现在总结一下小程序开发工具常用的一些快捷键: 格式调整 Ctrl+S:保存文件Ctrl+[, Ctrl+]:代码行缩进Ct ...

  3. WordPress版微信小程序开发系列(二):安装使用问答

    自WordPress版微信小程序发布开源以来,受关注的程度超过我原来的想象.这套程序主要面对的用户是wordpress网站的站长,如果wordpress站想在微信的生态圈得到推广,小程序成为一种重要的 ...

  4. 《腾讯游戏人生》微信小程序开发总结

    为打通游戏人生擂台赛与线下商家的O2O衔接,同时响应时下日臻火热的微信小程序,项目团队决定也开发一款针对性的微信小程序,以此方便商家在我们平台入驻并进行擂台赛事的创建和奖励的核销,进一步推广擂台赛的玩 ...

  5. 微信小程序开发:学习笔记[3]——WXSS样式

    微信小程序开发:学习笔记[3]——WXSS样式 快速开始 介绍 WXSS(WeiXin Style Sheets)是一套用于小程序的样式语言,用于描述WXML的组件样式,也就是视觉上的效果. WXSS ...

  6. 微信小程序开发:学习笔记[1]——Hello World

    微信小程序开发:学习笔记[1]——Hello World 快速开始 1.前往微信公众平台下载微信开发者工具. 地址:https://mp.weixin.qq.com/debug/wxadoc/dev/ ...

  7. 微信小程序开发-蓝牙功能开发

    0. 前言 这两天刚好了解了一下微信小程序的蓝牙功能.主要用于配网功能.发现微信的小程序蓝牙API已经封装的很好了.编程起来很方便.什么蓝牙知识都不懂的情况下,不到两天就晚上数据的收发了,剩下的就是数 ...

  8. 微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载

    微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 1.不同类型文件的选取 1.1 常用的图片 视频 对于大部分开发者来说,需要上传的文件形式主要为图片,微信为此提供了接口. wx.ch ...

  9. 让微信小程序开发如鱼得水

      关于微信小程序开发一直想写一篇相关的文章总结和记录下,结果拖延症犯了迟迟没有下笔:这不最近天气不错,于是找一个空闲的下午将这篇文章输出下(好像跟天气没啥关系),那我们就开始吧! 注意:本文默认开发 ...

随机推荐

  1. Atcoder:AGC004F Namori

    传送门 先考虑树,树是一个二分图. 看到是二分图并且每次是对两边的同色的点反色可以想到转化:让奇数层的点为黑,偶数为白,变成每次可以交换两个点的颜色. 把黑看成 \(-1\),白看成 \(1\),那么 ...

  2. drupal7 获取profile2模块自定义字段的值

    $user=user_load($uid); $student=profile2_load_by_user($user,'student'); 这个函数官方有文档,通过用户对象返回用户的profile ...

  3. cmd--命令短集

    查看ip地址:ipconfig 查看ip地址:ipconfig/all 进入c盘program files目录下:cd %Program Files%,”x:“, 进入x盘根目录.cd “ ”进入某文 ...

  4. Maven安装本地jar包

    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging= ...

  5. 关于TCP/IOCP构架中出现的假死连接解决方案

    如果在2台不同的公网机器,对TCP的c/s做过详细的压力测试,那么很不幸,会有很多人发现自己的server端会出现大量的假死连接. 假死连接具体表现如下: 1.在s端机器上,会有一些处于TCP_EST ...

  6. 大数据【二】HDFS部署及文件读写(包含eclipse hadoop配置)

    一 原理阐述 1' DFS 分布式文件系统(即DFS,Distributed File System),指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.该系统架构 ...

  7. 基于MD5的增强型摘要算法

    message-digest algorithm 5(信息-摘要算法),md5的长度,默认为128bit,也就是128个0和1的二进制串.但是,这样表达是很不友好的,所以将二进制转成了16进制,每4个 ...

  8. Supervisor 管理进程,Cloud Insight 监控进程,完美!

    Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...

  9. BBR,附CentOS 6/7配置过程

    最近这段时间BBR都比较火,前面有说如何在CAC的Debian-8-64bit安装BBR正确打开方式,现在说下,CentOS 6/7配置过程. 推荐理由:没配置BBR前,用SS看U2B的速度206K/ ...

  10. python虚拟环境 -- virtualenv , virtualenvwrapper

    virtualenv -- python虚拟沙盒 有人说:virtualenv.fabric 和 pip 是 pythoneer 的三大神器. 一.安装 pip install virtualenv ...