前言
本文是我开发了许多 H5 活动后写下的小结
正文
必备库
CSS:aqua.css
JS:kyouka
样式
端口适配
移动端:vw
pc 端:px
目前我适配两端的做法:将颜色等外观相关的属性放在一起,用媒体查询来隔开长度单位属性。小项目可以这么做,但大项目还是要写两套。
防花屏
开启gpu
加速
1 | transform: rotateZ(0); |
加载速度慢
考虑压缩图片素材,squoosh将不透明的 png 压缩成 jpg,onlineimagetool批量压缩大小
自定义字体
用fontmin生成字体再插入页面即可
业务
ios 键盘弹出错位修复
1 | ky.iosInputScrollFix(); |
防止提交后再次发送请求
动态绑定一个pointer-events-none
类即可
安卓机兼容无限下拉加载
- 不能在底部放绝对定位的图片,否则会影响高度计算,正确的做法是在加载完成后再显示图片
- 注意安卓有虚拟键会导致划不到底,应该给触底条件添加一个容差
强制刷新缓存
有的手机缓存不容易清除,此时就可以在文件后加后缀以清除缓存,例如app.js?v=1
vue 项目将资源转移至 cdn
在.env.production
中配置 cdn 地址即可
注:像 app.xxx.css 这类要经常改动的文件不放在 cdn 上
vue 防止多个页面的事件重合
切换到另一个页面后,别忘了移除上一个页面的监听事件和定时器
1 | onUnmounted(() => { |
Date 最兼容的写法
1 | new Date("2020/12/19 00:00:00"); |
跳转到外链后分享失效
这个问题的发生时机在除首页外的其他页面,因此尽量将外链放首页
注意点
- 发送请求后注意要同步更新页面上的数据
- 若用户上传的图片太大,则用Compressor压缩图片后再上传
- 展示型页面一定要注意文本的长度,单行过长则应截断(
.truncate
),行数过多则做成滚动式(.overflow-scroll
) - 图片很多的列表页应采用懒加载(lazyload)
- 如果后端还没有完成接口,那么前端可以先用假数据进行模拟测试(mock)
- 有些数据(比如活动的开始结束时间)不要写死,要读取后台,因为随时都有可能改动
- 分享助力类活动往往需要自定义分享标题,要提前问客户
- 切图尽量用 2 倍图,如果还不够清晰就用 3 倍图
- 抽奖码判断中奖时要加
includes
包含判断 - 海报生成为了避免出现底部多余的部分,应当固定好高度(通常是
ky.vw2px(210)
)