应公司需求,接手小程序,在此之前我是一点也没有接触过,对此,拿过小程序文档和官方案例就一顿恶补,在此期间也看过一些小程序建立模型的视频,终于对小程序知晓一二,拿过项目开始研究。好了废话不多说,总结一下此次做小程序遇到的坑以及难点:

1、input、textera、video等组件层级太高

问题描述:页面有个input文本框,有个自定义的弹框(非微信自己的组件),当弹框显示时候,弹层底下的input文本框覆盖到弹层上,加z-index无效;

解决法案:网上很多人遇到这个问题,大概是微信官方组件的“特点”,所以需要我们手动处理设置一个控制input显示隐藏的变量,iputIsShow: true 默认为true ,input文本框显示,当弹层显示时,iputIsShow:false, input文本框隐藏。但这个方法并不是针对所有场景都有效,当弹窗部分没有遮挡住input文本框时候不适用;

2、页面生成图片

问题描述:把一组数据单独生成一张图片;

解决方案:利用canvas绘制图片,把需要用到的数据添加在canvas上;

3、canvas适配问题

问题描述:小程序中所有的单位都是用rpx,却唯独canvas默认是px;

解决方案: (1)有网友建议单独写一个view,把需要的图片用view写出来,获取它的宽高赋值给canvas(这是什么鬼方法,直接被我pass掉了);

     (2)我在思考既然小程序官方可以把px换算rpx,那我们一定也可以把px换算成rpx,果然,官方规定屏幕宽度为750物理像素,无论它在什么设备上宽度都是750物理像素,那么我们就可以获取到它在设备上rpx与px的换算比例:设备宽/750 ,在canvas上的实际宽度为:设备宽/750*实际量取的值

    var context = wx.createCanvasContext('mycanvas')
var that = this
// 获取canvas的的宽 自适应宽(设备宽/750) px
var cWidth = wx.getSystemInfoSync().windowWidth/
context.drawImage("/imgs/pic-bg.png", , , cWidth * , cWidth * ); // 国外院校
var forSchool = this.data.dataList.foreigncolleges
// 大于5条数据所取前5条
if (forSchool.length>){
for (var i = ; i < ; i++) {
context.setFillStyle("#eb8848");
context.setFontSize(cWidth * );
context.fillText(forSchool[i].schoolname.trim(), cWidth * , (i + ) * cWidth * + cWidth * ) context.setFillStyle("#b0b4bc");
context.setFontSize(cWidth * );
context.fillText(forSchool[i].ranking.trim(), cWidth * , (i + ) * cWidth * + cWidth * ) //当录取率为null时"-"显示
if (forSchool[i].rate == null){
context.setFillStyle("#b0b4bc");
context.setFontSize(cWidth * );
context.fillText('-', cWidth * , (i + ) * cWidth * + cWidth * )
}else{
context.setFillStyle("#b0b4bc");
context.setFontSize(cWidth * );
context.fillText(forSchool[i].rate.trim(), cWidth * , (i + ) * cWidth * + cWidth * )
} context.beginPath();//开始一个新的路径
context.setStrokeStyle('#eee');
context.moveTo(cWidth * , (i + ) * cWidth * + cWidth * );//路径的起点
context.lineTo(cWidth * , (i + ) * cWidth * + cWidth * );//路径的终点
context.stroke();//对当前路径进行描边
context.closePath();//关闭当前路径
}
} else {//小于5条时全部展示
for (var i = ; i < forSchool.length; i++) {
context.setFillStyle("#eb8848");
context.setFontSize(cWidth * );
context.fillText(forSchool[i].schoolname.trim(), cWidth * , (i + ) * cWidth * + cWidth * ) context.setFillStyle("#b0b4bc");
context.setFontSize(cWidth * );
context.fillText(forSchool[i].ranking.trim(), cWidth * , (i + ) * cWidth * + cWidth * ) //当录取率为null时"-"显示
if (forSchool[i].rate == null) {
context.setFillStyle("#b0b4bc");
context.setFontSize(cWidth * );
context.fillText('-', cWidth * , (i + ) * cWidth * + cWidth * )
} else {
context.setFillStyle("#b0b4bc");
context.setFontSize(cWidth * );
context.fillText(forSchool[i].rate.trim(), cWidth * , (i + ) * cWidth * + cWidth * )
}
context.beginPath();//开始一个新的路径
context.setStrokeStyle('#eee');
context.moveTo(cWidth * , (i + ) * cWidth * + cWidth * );//路径的起点
context.lineTo(cWidth * , (i + ) * cWidth * + cWidth * );//路径的终点
context.stroke();//对当前路径进行描边
context.closePath();//关闭当前路径
}
}
context.draw();
 

微信小程序--试水的更多相关文章

  1. 微信小程序踩坑集合

    1:官方工具:https://mp.weixin.qq.com/debug/w ... tml?t=1476434678461 2:简易教程:https://mp.weixin.qq.com/debu ...

  2. 微信小程序开源项目库汇总

    最近做了一个微信小程序开源项目库汇总,里面集合了OpenDigg 上的优质的微信小程序开源项目库,方便移动开发人员便捷的找到自己需要的项目工具等,感兴趣的可以到GitHub上给个star. UI组件 ...

  3. 微信小程序开源项目库集合

    UI组件 weui-wxss ★852 - 同微信原生视觉体验一致的基础样式库 Wa-UI ★122 - 针对微信小程序整合的一套UI库 wx-charts ★105 - 微信小程序图表工具 wema ...

  4. 微信小程序一:微信小程序UI组件、开发框架、实用库

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/8079095.html 内容持续更新,维护中 邮箱 ...

  5. 微信小程序基础之开源项目库汇总

    awesome-github-wechat-weapp 是由OpenDigg整理并维护的微信小程序开源项目库集合.我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们. (链接:ht ...

  6. 微信小程序UI组件、开发框架、实用库...

    UI组件 weui-wxss ★852 - 同微信原生视觉体验一致的基础样式库 Wa-UI ★122 - 针对微信小程序整合的一套UI库 wx-charts ★105 - 微信小程序图表工具 wema ...

  7. 微信小程序框架集合

    UI组件 weui-wxss ★852 - 同微信原生视觉体验一致的基础样式库 Wa-UI ★122 - 针对微信小程序整合的一套UI库 wx-charts ★105 - 微信小程序图表工具 wema ...

  8. 微信小程序< 3 > ~ 微信小程序开源项目合集

    简介 移动开发者想学习微信小程序需要学习一点HTML ,CSS和JS才能够比较快速的上手,参考自己学习Android学习过程,阅读源码是一个很好的方式,所以才收集了一些WeApp的开源项目. awes ...

  9. 微信小程序开源

    | UI组件 | | | | | | | | | weui-wxss ★1873 - 同微信原生视觉体验一致的基础样式库 | | | | | | zanui-weapp ★794 - 好用易扩展的小程 ...

随机推荐

  1. SpringCloud的注解:汇总篇

    使用注解之前要开启自动扫描功能,如下配置中base-package为需要扫描的包(含子包): 1 <context:component-scan base-package="cn.te ...

  2. 阿里云下Linux服务器安装Mysql、mongodb

    阿里云下Linux服务器安装Mysql.mongodb 一.MySQL的安装和配置 1.安装rpm包 rpm -Uvh http://dev.mysql.com/get/mysql-community ...

  3. python之集合,深浅copy

    一. 集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. ...

  4. tar磁带归档

    一:压缩.解压 1.compress/uncompress/zcat -d:解压 -c:输出到终端,不删除原文件 -v:显示详细信息 2.gzip/ungzip/zcat -d:解压 -c:将压缩或解 ...

  5. Windows10下的docker安装与入门 (二)使用docker引擎在容器中运行镜像

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...

  6. 通过java api统计hive库下的所有表的文件个数、文件大小

    更新hadoop fs 命令实现: [ss@db csv]$ hadoop fs -count /my_rc/my_hive_db/* 18/01/14 15:40:19 INFO hdfs.Peer ...

  7. POJ-3169 Layout---差分约束系统+Bellman

    题目链接: https://vjudge.net/problem/POJ-3169 题目大意: 一些母牛按序号排成一条直线.有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最 ...

  8. ZOJ-1649 Rescue---BFS+优先队列

    题目链接: https://vjudge.net/problem/ZOJ-1649 题目大意: 天使的朋友要去救天使,a是天使,r 是朋友,x是卫兵.每走一步需要时间1,打倒卫兵需要另外的时间1,问救 ...

  9. hdu-3348 coins---贪心

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3348 题目大意: 给你一个价格,还有面值分别为1,5,10,50,100(单位:毛)纸币的数量,要你 ...

  10. JS-DOM ~ 03. 子节点的操作、style.样式和属性、dom元素的创建方法及操作、14个例题、主要是利用js直接控制html属性

    带有Element和不带的区别 a)  带Element的获取的是元素节点 b)  不带可能获取文本节点和属性节点 获取所以子节点 a)   . childNodes b)   . children ...