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

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. greenplum集群某台机器磁盘占用100%处理方式

    一.问题描述 使用gpfdist往集群中导入大量数据, 一段时间后连接退出,集群无法连接 二.问题定位 使用如下命令查看: gpstate -s mdw-:gpadmin-[INFO]:- Segme ...

  2. Spring Data Jpa简单了解

    原文来源:http://www.cnblogs.com/xuyuanjia/p/5707681.html 以下是自己简单整理原有文章,其实就是在原来文章基础上化重点以及可能会有所删减的方式进行整理,需 ...

  3. AES(高级加密)

    AES(高级加密) #3.6安装 pip3 install pycryptodome #mac pip3 install pycrypto a. 事例: ####################### ...

  4. Java-Maven(七):Eclipse中Maven依赖、聚合、继承特性

    之前通过学习了解,maven集成到eclipse中的如何创建项目,以及maven命令插件在eclipse中安装后的用法.那么接下来我们将会学习一些maven在项目中的一些特性,及如何使用. Maven ...

  5. JavaScript 中常见的内存泄露陷阱(摘)

    内存泄露是每个开发者最终都不得不面对的问题.即便使用自动内存管理的语言,你还是会碰到一些内存泄漏的情况.内存泄露会导致一系列问题,比如:运行缓慢,崩溃,高延迟,甚至一些与其他应用相关的问题. 什么是内 ...

  6. 有些ES6方法极简,但是性能不够好

    So,也许你觉得ES6让你视野大开,但是并不是性能也能跟得上~ 首先,让我们先来一个简单的性能测试: 数组去重 es5写法: function delSame(arr){ var n = []; ; ...

  7. ubuntu安装mysql并修改编码为utf-8

    参考地址:ubuntu中文 sudo apt-get install mysql-server mysql-client -y # 中途会要求输入一下root用户的密码 编辑/etc/mysql/co ...

  8. IIS7 http自动跳转到https

    1.下载安装URL重写模块:Microsoft URL Rewrite Module 32位:http://download.microsoft.com/download/4/9/C/49CD28DB ...

  9. MySQL-分组查询(GROUP BY)及二次筛选(HAVING)

    为了测试GROUP BY 语句,我们创建两张表,并往表中添加数据 -- 创建部门表 CREATE TABLE IF NOT EXISTS department( id TINYINT UNSIGNED ...

  10. [ZooKeeper] 2 环境搭建

    上一篇中我们介绍了 ZooKeeper 的一些基本概念,这篇我们讲一下 ZooKeeper 的环境搭建. ZooKeeper 安装模式 单机模式:ZooKeeper 运行在一台服务器上,适合测试环境: ...