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

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. Asp.NET Core2.0 项目实战入门视频课程_完整版

    END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...

  2. 2.x与3.x差异、条件语句、数据类型、其他

    一.输入(raw_input)=====>python2.x版本 #!/usr/bin/env python # -*- coding: utf-8 -*- # 将用户输入的内容赋值给 name ...

  3. bootstrap 菜单之手风琴效果

    自己用bootstrap搭了个项目,纯属娱乐....为了检验学习bootstrap之成果. 效果如图: 一.搭建中发现一问题,因为以前测试都是写的html页面,这次用了母版页,点击页面的之后,页面会刷 ...

  4. C#Json转DataTable

    需求:有一个log文件,需要整理成Excel,日志文件里面的数据都是json字符串 思路是,把Json字符串转换成DataTable,然后导出到Excel 在网上找了一些资料,整理了以下三种类型的Js ...

  5. servlet2.3/2.5/3.0/3.1的xml名称空间备忘

    The web.xml is a configuration file to describe how a web application should be deployed. Here’re 5  ...

  6. ShellCode瘦身的艺术0_HASH

    写在前面的话: 前面几篇文章,我们介绍了如何获取kernerl32.dll导出函数地址的方法: 并在此基础上,编写了ShellCode,实现了动态加载DLL以及解析API地址: 但是,似乎还称不上Pe ...

  7. POJ-2485 Highways---最小生成树中最大边

    题目链接: https://vjudge.net/problem/POJ-2485 题目大意: 求最小生成树中的最大边 思路: 是稠密图,用prim更好,但是规模不大,kruskal也可以过 #inc ...

  8. win10 apache配置虚拟主机后localhost无法使用

    win10系统配置虚拟主机1.用记事本或Sublime Text打开httpd.confctrl + f 搜索httpd-vhosts.conf 将#Include conf/extra/httpd- ...

  9. 直接插入排序算法:ArrayList实现和数组实现

    直接插入排序算法思想: 排序区间R[1..n]: 在排序的过程中,整个排序区间被分为两个子区间: 有序区R[ 1 ... i-1 ]和无序区R[ i ... n ]: 共进行n-1趟排序,每趟排序都是 ...

  10. [SCOI2005]骑士精神

    题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位.两组数据之间没有空行. 输出格式 ...