腾讯移动Web整体解决方案 Spirit

MIT
未知
腾讯
2014-09-01
叶秀兰

Spirit 是移动 Web 开发规范,基于日常开发的沉淀,总结了字体、交互、性能等方面的最佳实践,是移动Web开发的指导标准。

移动开发规范概述

以下规范建议,均是Alloyteam在日常开发过程中总结提炼出的经验,规范具备较好的项目实践,强烈推荐使用

字体设置

使用无衬线字体

body {
    font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;}

iOS 4.0+ 使用英文字体 Helvetica Neue,之前的iOS版本降级使用 Helvetica。中文字体设置为华文黑体STHeiTi。    需补充说明,华文黑体并不存在iOS的字体库中(http://support.apple.com/kb/HT5484?viewlocale=en_US), 但系统会自动将华文黑体STHeiTi兼容命中系统默认中文字体黑体-简或黑体-繁

Heiti SC Light 黑体-简 细体
Heiti SC Medium 黑体-简 中黑
Heiti TC Light 黑体-繁 细体
Heiti TC Medium 黑体-繁 中黑
           

原生Android下中文字体与英文字体都选择默认的无衬线字体

4.0 之前版本英文字体原生 Android 使用的是 Droid Sans,中文字体原生 Android 会命中 Droid Sans Fallback
4.0 之后中英文字体都会使用原生 Android 新的 Roboto 字体
其他第三方 Android 系统也一致选择默认的无衬线字体

基础交互

设置全局的CSS样式,避免图中的长按弹出菜单与选中文本的行为

a, img {
    -webkit-touch-callout: none; /* 禁止长按链接与图片弹出菜单 */}html, body {
    -webkit-user-select: none;   /* 禁止选中文本(如无文本选中需求,此为必选项) */
    user-select: none;}
           

           

移动性能

要考虑Android低端机与2G网络场景下性能 注意!

发布前必要检查项

  • 所有图片必须有进行过压缩

  • 考虑适度的有损压缩,如转化为80%质量的jpg图片

  • 考虑把大图切成多张小图,常见在banner图过大的场景

加载性能优化, 达到打开足够快

  • 数据离线化,考虑将数据缓存在 localStorage

  • 初始请求资源数 < 4 注意!

  • 图片使用CSS Sprites 或 DATAURI

  • 外链 CSS 中避免 @import 引入

  • 考虑内嵌小型的静态资源内容

  • 初始请求资源gzip后总体积 < 50kb

  • 静态资源(HTML/CSS/JS/IMAGE)是否优化压缩?

  • 避免打包大型类库

  • 确保接入层已开启Gzip压缩

  • 尽量使用CSS3代替图片

  • 初始首屏之外的图片资源需延迟加载 注意!

  • 单页面应用(SPA)考虑延迟加载非首屏业务模块

运行性能优化, 达到操作足够流畅

  • 避免 iOS 300+ms 点击延时问题 注意!

  • 缓存 DOM 选择与计算

  • 避免触发页面重绘的操作

  • Debounce连续触发的事件(scroll/resize),避免高频繁触发执行

  • 尽可能使用事件代理,避免批量绑定事件

  • 使用CSS3动画代替JS动画

  • 避免在低端机上使用大量CSS3渐变阴影效果,可考虑降级效果来提升流畅度

  • HTML结构层级保持足够简单,推荐不超过 5 个层级

  • 尽能少的使用CSS高级选择器与通配选择器

  • Keep it simple

在线性能检测评定工具使用指南

  • 访问 Google PageSpeed 在线评定网站

  • 在地址栏输入目标URL地址,点击分析按钮开始检测

  • 按 PageSpeed 分析出的建议进行优化,优先解决红色类别的问题

关于 Spirit:

Spirit(勇气号),美国航天局NASA派往Mars(火星)的第一艘探测器。

移动Web开发是一块新的领域,甚至有很多坑,这一点与人类从未踏上的Mars(火星)相似。为了避免开发者重复遇到相同的问题,我们创建了Mars项目(view on Github),收集与归纳移动Web开发中常见的问题。

Spirit正是为了Mars而生,Mars项目中归纳的问题,会放到Spirit中解决,并沉淀到开发工具(JM与JMUI)以及开发规范中,真正建立移动Web开发的集成解决方案。

加载中

评论(1)

sp42
sp42
Dead?

暂无资讯

暂无问答

House of Spirit学习调试验证与实践

作家:Bug制造机 原文来自:House of Spirit学习调试验证与实践 House of Spirit和其他的堆的利用手段有所不同。它是将存在的指针改写指向我们伪造的块(这个块可以位于堆、栈、bss任何一个位...

2018/08/07 15:38
26
0
ceph 源码安装 configure: error: "Can't find boost spirit headers"

问题:configure: error: "Can't find boost spirit headers" 解决: 推荐:sudo apt-get install libboost-dev 1.下载boost_1_65_1.tar.gz, 链接地址:http://www.boost.org/users/histor...

2019/04/15 19:12
9
0
技术的极限(6): 密码朋克精神(Cypherpunk Spirit)

上一篇:技术的极限(5): 识别计算与技术背后的心智 下一篇:技术的极限(7): 处理复杂与分层 目录: ** 0x01 数据和App分离 ** 0x02 蒸汽朋克/赛博朋克/密码朋克 ** 0x03 20年的数学与5年的E...

2019/01/05 19:55
5
0
is boost::property_tree::ptree thread safe?

关于boost::property_tree::ptree 中 boost::property_tree::json_parser::read_json(xmlnIStream, pt)函数,线程安全问题...

2014/10/14 15:16
330
0
[Angular] 'providedIn' for service

There is now a new, recommended, way to register a provider, directly inside the @Injectable() decorator, using the new providedIn attribute. @Injectable({ providedIn: 'root'...

2018/08/29 00:34
6
0
您如何断言在JUnit 4测试中引发了某种异常? - How do you assert that a certain exception is thrown in JUnit 4 tests?

问题: How can I use JUnit4 idiomatically to test that some code throws an exception? 如何惯用JUnit4来测试某些代码引发异常? While I can certainly do something like this: 虽然我...

03/29 21:48
23
0
about x86 protected mode

well,we only find 2 byte display of segment register in OD, but in fact, the segment register size is 96bit at least. and the protected mode is on segment registers. there are s...

2018/05/30 18:04
15
0
pandas练习(三)------ 数据分组

探索酒类消费数据 相关数据见(github) 步骤1 - 导入pandas库 import pandas as pd 步骤2 - 数据集 path3 = "./data/drinks.csv" # drinks.csv 步骤3 将数据框命名为drinks drinks = p...

2018/06/20 11:14
0
0
微信小游戏 demo 飞机大战 代码分析 (三)(spirit.js, animation.js)

微信小游戏 demo 飞机大战 代码分析(三)(spirit.js, animation.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞机大战 代码分析(二)(databus.js) 微信小游戏 ...

2019/05/30 20:18
13
0
[ZJCTF 2019]EasyHeap

[TOC] ##逆向分析 -------------------------------- Easy Heap Creator -------------------------------- 1. Create a Heap 2. Edit a Heap ...

03/02 15:45
18
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部