zoukankan      html  css  js  c++  java
  • 微信小程序--试水

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

    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/750
        context.drawImage("/imgs/pic-bg.png", 0, 0, cWidth * 684, cWidth * 1100);
    
        // 国外院校
        var forSchool = this.data.dataList.foreigncolleges
        // 大于5条数据所取前5条  
        if (forSchool.length>5){
          for (var i = 0; i < 5; i++) {
            context.setFillStyle("#eb8848");
            context.setFontSize(cWidth * 26);
            context.fillText(forSchool[i].schoolname.trim(), cWidth * 72, (i + 1) * cWidth * 64 + cWidth * 195)
    
            context.setFillStyle("#b0b4bc");
            context.setFontSize(cWidth * 26);
            context.fillText(forSchool[i].ranking.trim(), cWidth * 420, (i + 1) * cWidth * 64 + cWidth * 195)
    
            //当录取率为null时"-"显示
            if (forSchool[i].rate == null){
              context.setFillStyle("#b0b4bc");
              context.setFontSize(cWidth * 26);
              context.fillText('-', cWidth * 550, (i + 1) * cWidth * 64 + cWidth * 195)  
            }else{
              context.setFillStyle("#b0b4bc");
              context.setFontSize(cWidth * 26);
              context.fillText(forSchool[i].rate.trim(), cWidth * 550, (i + 1) * cWidth * 64 + cWidth * 195)
            }
            
            context.beginPath();//开始一个新的路径 
            context.setStrokeStyle('#eee');
            context.moveTo(cWidth * 42, (i + 1) * cWidth * 64 + cWidth * 210);//路径的起点  
            context.lineTo(cWidth * 648, (i + 1) * cWidth * 64 + cWidth * 210);//路径的终点  
            context.stroke();//对当前路径进行描边  
            context.closePath();//关闭当前路径 
          }
        } else {//小于5条时全部展示
          for (var i = 0; i < forSchool.length; i++) {
            context.setFillStyle("#eb8848");
            context.setFontSize(cWidth * 26);
            context.fillText(forSchool[i].schoolname.trim(), cWidth * 72, (i + 1) * cWidth * 64 + cWidth * 195)
    
            context.setFillStyle("#b0b4bc");
            context.setFontSize(cWidth * 26);
            context.fillText(forSchool[i].ranking.trim(), cWidth * 420, (i + 1) * cWidth * 64 + cWidth * 195)
             
             //当录取率为null时"-"显示
            if (forSchool[i].rate == null) {
              context.setFillStyle("#b0b4bc");
              context.setFontSize(cWidth * 26);
              context.fillText('-', cWidth * 550, (i + 1) * cWidth * 64 + cWidth * 195)
            } else {
              context.setFillStyle("#b0b4bc");
              context.setFontSize(cWidth * 26);
              context.fillText(forSchool[i].rate.trim(), cWidth * 550, (i + 1) * cWidth * 64 + cWidth * 195)
            }
            context.beginPath();//开始一个新的路径 
            context.setStrokeStyle('#eee');
            context.moveTo(cWidth * 42, (i + 1) * cWidth * 64 + cWidth * 210);//路径的起点  
            context.lineTo(cWidth * 648, (i + 1) * cWidth * 64 + cWidth * 210);//路径的终点  
            context.stroke();//对当前路径进行描边  
            context.closePath();//关闭当前路径 
          }
        }
    context.draw(); 
     
  • 相关阅读:
    frp最简配置 实现内网穿透(访问内网WEB服务器)
    frp最简配置 实现内网穿透(访问内网其他服务器SSH)
    Linux 进程树查看工具 pstree
    svn Server authz 配置示例(文件夹权限配置)
    centos7 安装 mysql5.7.25
    centos7中将tomcat注册为系统服务
    keepalived 配置文件解析
    datatables参数配置详解
    使用jquery.datatable.js注意事项
    ondblclick和dblclick区别
  • 原文地址:https://www.cnblogs.com/ding0528/p/8875564.html
Copyright © 2011-2022 走看看