先罗列一下我遇到的问题:

  1. 用户可选择图片上传,但是图片比较大(基本都是2M以上),而且还得异步上传。
  2. 由于操作上比较多的设计都是隐性的例如滑动之类,需要手势动画作提示。
  3. 块内元素滚动时不流畅,或不能滚动问题。
  4. 由于设计师设计的布局复杂度高,会出现比较多的元素需使用绝对定位。
  5. 如果页面是推广页面,绝大部分用户都是首次进入,而设计中的元素前端不能复现只能使用图片时,会产生加载时间较长的问题。

问题有这么多,我来一个个说。

问题1的解决方案是上传前预压缩,其实就是将原来的图片大小缩小到你可以接受的程度,再上传给服务器。使用的是canvas的接口和FileReader对象来进行操作,具体实现就不说了看这《使用HTML5的两个api,前端js完成图片压缩。》。其次是文件的异步上传,可以使用FormData把要提交的内容整合就可以了,减少很多麻烦,代码如下:

$(document.forms['ajax']).submit(function(e){
var formData = new FormData(this);
$.ajax({
...
type: 'post',
data: formData,
/*
* 由于jquery会默认处理提交数据,所以必须关闭。
* XMLHttpRequest会对 formdata 进行正确的处理
*/
processData: false,
//原理同上,XMLHttpRequest会自动加上正确的Content-Type
contentType: false,
...
})
});

最近有空把图片压缩的代码做成插件了。可以看这:

https://coding.net/u/packy/p/ImageCompress/git

问题2,这个写个动画库通用了就好XD,解决方法很多。

问题3,块内滑动问题,由于我这个卡内滑动元素还是一个fixed了的块,所有我参考了bootstrap的modal模块是如何处理的,至于百度出来的大多数并没什么卵用╮(╯_╰)╭。先上代码:

 /*可滚动的块:*/
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch; /*块内加上一个div:*/
-webkit-transform: translate(0, 0);
width: auto;

到底什么机制导致能解决这个问题目前还没时间去深究,如果看文章的你知道请务必和我说说!

问题4,该如何解决呢?这个其实得和设计师沟通互相理解,具体看会项目成本和耗时,不得就改设计吧!但是还是会有必须那样设计的问题,所有这里建议使用sass来处理不同手机尺寸的处理,能大大减少手写代码。上我先的一段处理(各位看官轻喷,我就看了一上午sass文档)。

//各手机尺寸,和比例。比例这里因设计给的是ip6的,所有就拿它来做基准。
$iPhone5: 320px 523px 0.85;
$iPhone6: 375px 622px 1;
$iPhone6-P: 414px 691px 1.1;
$screens: $iPhone5 $iPhone6 $iPhone6-P; //用于套屏幕处理的
@mixin max-screen($res){
@media only screen and ( min-width: $res )
{
@content;
}
} $btnImgSize: 191px 89px, 228px 94.5px, 128px 48.5px, 170px 67.5px, 308px 48px, 308px 48px, 308px 48px, 121.5px 129.5px;
@for $i from 1 through 8 {
.ui-img#{$i} {
background-image: url(images/btn-img#{$i}.png);
}
}
//循环屏幕数组
@each $screen in $screens {
//套用上面预设的屏幕代码
@include max-screen(nth($screen,1) - 1) {
@for $i from 1 through 8 {
.ui-img#{$i} {
width: nth(nth($btnImgSize,$i),1) * nth($screen,3);
height: nth(nth($btnImgSize,$i),2) * nth($screen,3);
}
}
}
}

问题5,这个尽量和设计师谈妥,不行就得处理图片加载了,如果大图多而且都是用到img标签的得写个预加载功能,不然还要动画什么的首次加载基本看不出,因为图片都没加载完你动画能看的出来么╮(╯_╰)╭ ,这里就不说预加载了(看官请看这Javascript实现图片的预加载功能)。还有单页面使用到background里的尽量弄成雪碧图,但是单元面里分成多页显示的,有先后次序的,还是每页的图片分开打包吧,浏览器会异步加载的了。

下周压力略大要弄个打地鼠游戏,虽然之前用egret写过游戏,但是对于egret新知识不了解,想提高工作效率还得去学,祝我顺利吧。

制作html5微信页面的经验总结。的更多相关文章

  1. 怎么制作html5网站页面让它适应电脑和手机的尺寸

    https://zhidao.baidu.com/question/918130826792192539.html 用以下代码开头:<!DOCTYPE HTML><html>& ...

  2. 玩转HTML5移动页面(动效篇)

    原文:http://www.grycheng.com/?p=458 作为一名前端,在拿到设计稿时你有两种选择: 1.快速输出静态页面 2.加上高级大气上档次狂拽炫酷屌炸天的动画让页面动起来 作为一个有 ...

  3. 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route

    心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验 ...

  4. 玩转HTML5移动页面

    (1) 动画雪碧图涉及的动画十分多,用的元素也十分多,请务必使用雪碧图(Sprite)!网上的工具有一些可以帮助你生成雪碧图的工具,例如CssGaga,GoPng等等,自动化构建工具Grunt和Gul ...

  5. 玩转HTML5移动页面(优化篇)

    原文:http://www.grycheng.com/?p=472 承接上文<玩转HTML5移动页面(动效篇)>,上次说的是让页面动起来的一些小技巧.而页面动起来的根基是功能可用的页面,因 ...

  6. 使用 video.js 开发 HTML5 视频页面

    时间 2015-05-13 17:11:58 The GIS Guy 原文  http://thegisguy.tk/html5-video-using-video-js/ 主题 Video.js H ...

  7. 学习pano2vr制作html5全景笔记

    demo截图: demo下载: 百度网盘:http://pan.baidu.com/s/1o8yBwIA 密码:nf62(启服务端查看); 我制作是全屏定点360的全景页面,使用pano2vr软件制作 ...

  8. HTML5手机页面里面如何把长按复制避免

    在写HTML5手机页面的时候,有时候会写到一些标签是需要用户长按然后放开的 但是微信里面长按就会出现复制,大大影响了用户体验,那么如何可以避免呢? 我也是最近写到这样的页面,总结了一部分,大家可以作为 ...

  9. 解决ios下的微信页面背景音乐无法自动播放问题

    在做各种html5场景页面的时候,插入背景音乐是一个很普遍的需求,我们都知道,ios下的safari是无法自动播放音乐的,以至于现在行程一种认知,ios是没有办法自动播放媒体资源的,这个认知其实是错误 ...

随机推荐

  1. TypeScript学习第二天:认识ts的数据类型

    目录 1,类型总览 2,基本类型 2.1,布尔 2.2,数字 2.3,字符串 2.4,Null 2.5,undefined 2.6,symbol 2.7,bigint 3,引用类型 3.1,数组 Ar ...

  2. LeetCode-080-删除有序数组中的重复项 II

    删除有序数组中的重复项 II 题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度. 不要使用额外的数组空间,你必须在 原地 修改 ...

  3. 零基础,三个月内,找到??? java后端开发工作

    一.分析你的问题 出于尊重,先分析一下你的原问题吧,从您的问题,我提取到关键信息:"零基础"."三个月内"."找到工作",最后一个关键词&q ...

  4. JQ,JQuery的ajax卡住了,浏览器页面卡住

    在使用ajax的时候浏览器卡住了, 经过测试是因为在ajax中使用的data数据变量写错了 不存在也不报错,直接卡主了 好好检查一下吧.

  5. tensorflow源码解析之framework-shape_inference

    目录 什么是形状推断 InferenceContext 关系图 涉及的文件 迭代记录 1. 什么是形状推断 前面我们讲到op的时候,提到了操作的注册器OpRegistry,并且提到,其中注册的数据是一 ...

  6. 2022年官网下安装DBever最全版与官网查阅方法

    目录 安装部署DBeaver 一.官网下载安装 1.百度搜索DBeaver. 2.进入主页,点击DownLoad下载. 3.查看列表,选择windows的exe版本下载. 4.找到位置,双击打开,弹出 ...

  7. ArcGIS进行容积率计算

    空间分析--题目2 容积率(Plot Ratio/Floor Area Ratio/Volume Fraction)又称建筑面积毛密度,是指一个小区的地上总建筑面积与用地面积的比率.对于开发商来说,容 ...

  8. MariaDB开启日志审计功能

    对于MySQL.Percona.MariaDB三家都有自己的审计插件,但是MySQL的审计插件是只有企业版才有的,同时也有很多第三方的的MySQL的审计插件,而Percona和MariaDB都是GPL ...

  9. 前端知识之BOM和DOM

    前端基础之BOM和DOM windw对象 指浏览器窗口,所有的浏览器都支持window对象 常用的window方法 window.innerHeight 浏览器窗口的内部高度 window.inner ...

  10. vue学习过程总结(06) - vue的数据存储store

    这个不知道能怎么叫不?现在对这块很迷.以下为个人理解 store是状态管理,是一个对象,有其属性和方法. 常见的值有:state/mutations/actions/getters, 这几个值的意思: ...