移动端”宴席知多少

转载(http://adt.aicai.com/index.php/archives/179/)

瞎折腾移动端的项目已经很长一段时间了,并不像其它企业一样,可以有项目组去完成,基本都是一个人瞎尝试,时而web,时而web app。恍恍惚惚过了这段岁月,也不晓得自己忙了啥。总叫别人去总结,让别人学会总结,也该为自己总结总结了。也为了团队之间更好的知识共享吧。如何开发 移动端就跟如何上菜一样,上菜有规则,先冷后热,先菜后点,先咸后甜,先炒后烧等等。按照一定的程序来才能恰到好处地掌握。那么,现在还是上菜吧,客官等 久了... ...

前菜(凉菜,冷盘)

一、移动端开发与PC端开发不同
大家都知晓,手机种类千千万,也导致移动端开发面对的屏幕尺寸是各种头疼。
Web:固定布局和弹性布局
Web app:响应式布局

二、调试工具
firefox的响应式设计视图:Firefox 浏览器内置了 自定义设计视图 的功能,可以通过 Firefox->Web 开发者->自定义设计视图(或者摁下 Shift + Ctrl + m )。相比网络工具,运行更加流畅,无需联网。

Chrome开发,chrome浏览器也有个Emulation,如图:

chrome

另外,就是设备上的调试,方法很多。

1. 直接把做好的静态页面放到手机用浏览器打开查阅
2. 在本地搭建环境,比如php环境,局域网访问ip查阅页面(有搭建过博客的都知道)
3. 远程调试

A:Android 设备 Chrome 远程调试
B:uc浏览器开发者调试

开胃汤

那么,问题来了,移动端开发到底该如何下手?
1.关于viewport

  • a)概念:设备的pixels和css的pixels(总体而言,你只需要关注CSS的pixels,这些pixels指定你的样式被如何渲染。
  • b)概念:视窗 viewport(viewport的功能在于控制你网站的最高块状(block)容器:<html>元素。 )

viewport

viewport2

下面是link的一些用法,但是移动端也好web端也好,为了减少HTTP请求数, 个人建议最好能使用媒体查询来解决的可以尽可能的用媒体查询。

link

媒体查询如下:

媒体查询

头菜

作为头菜,一般宴会来说,头菜是代表性的菜点。那么说到移动端呢?

  • 移动端的reset

    时过境迁,Reset 逐渐淡出的前沿前端的视野,normalize.css 取 而代之。normalize.css,统一样式的同时保留可辨识性;reset 统一样式,完全没有可读性,破坏原有标签的语义化。针对每个项目的不同,各自可以基于Normalize.css,根据目前我们大家的使用习惯进行了一些 清零及移动端的特点添加一些基础样式。

    在这里会提到一个rem,想当初应该很多人也讨论研究过px,pt,em等单位吧。rem是CSS3新 引进来的一个度量单位,举个例子:“em”是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大 小,在我们多次使用时,就会带来无法预知的错误风险。而rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考 值。

    浏览器的基准字号设置为 62.5%,也就是 10px,现在 1rem = 10px —— 为了计算方便。然后在body 上应用了 font-size: 1.6rem;,将页面字号设置为 16px。
    html {font-size: 62.5%;} body {font-size: 1.6rem; /* =16px */}

    可以用以下的代码片段保证在低端浏览器下也不会出问题

  1. html { font-size: 62.5%; }
  2. body { font-size: 14px; font-size: 1.4rem; } /* =14px /

移动端的html5+css3

css3代替DOM animation,使用setTimeout定时器, 定时修改DOM元素的style属性。
css3使用设备GPU渲染,动用硬件设备本身的计算能力来做一些展示,效率上要比DOM animation要高很多。

  1. @keyframes
  2. animation-name(动画名称)
  3. animation-duration(动画持续时间)
  4. animation-delay(延迟执行时间)
  5. animation-timing-function(动画形变函数指定)
  6. animation-play-state(播放状态指定)
  7. animation-iteration-count(无限循环)

至于HTML5,大家目前用的最多的也就仅仅是那几个标签而已,想详细了解的自便吧。比如:

  1. <input type="text" placeholder="规定帮助用户填写输入字段的提示">
  2. <input type="number">
  3. <input type="date">
  4. <input type="range">
  5. <input type="color">
  6. <input type="email">
  7. <input type="search">

移动端的javascript

先说这一类的框架吧:
JQuery mobile,Sencha Touch等都是很庞大的UI框架。
Zepto.js:框架小,类jQuery,没有多余的其他模块,适合团队自己扩展。(不支持WP)
没有一个很好的团队去折腾的话,还是建议使用jqm,因为你到后面还是会改成jqm搭配Hammer.js来搭建

说起移动端的javascript,使用手势操作代替鼠标输入/出事件。开发者大多数会使用封装的 tap 事件来代替click 事件,所谓的 tap 事件由 touchstart 事件 + touchmove 判断 + touchend 事件封装组成。那就先来看看PC端的一些事件:(mousedown, mouseup, click)

移动端的手势事件:
touchstart //当手指接触屏幕时触发
touchmove //当已经接触屏幕的手指开始移动后触发
touchend //当手指离开屏幕时触发
touchcancel //当在滑动手机的过程中突然出现一个系统事件,比如电话。这会就cancel掉。(基本很少用)

为何要用touch事件代替click事件?
- click事件300ms延时
- touch事件支持多点触摸
- 手势操作

移动端的css3的自定义字体(@font-face),前一篇文章有做介绍。这里就不详细述说。

主菜

有人会问,图片该怎么切,拿到的psd文件尺寸是多少,按照何种尺寸去制作?还是无从下手。那么,移动端页面那么小,做页面的时候按照何种安全可视尺寸来呢?

alert('width:' + window.innerWidth + ';height:' + window.innerHeight);

目前我知道的移动端可视区尺寸

  • iPhone4/iPhone4s 320 * 372 / 320 * 441 (已隐藏URL与状态栏)
  • iPhone5/iPhone5s 320 * 460 / 320 * 529 (已隐藏URL与状态栏)
  • Note2 360 * 567 (未隐藏URL与状态栏)
  • iPad 3/4 768*928 (未隐藏URL与状态栏)
  • GALAXY SIII 360 * 567 (未隐藏URL与状态栏)
  • 小米2A 360 *567 (未隐藏URL与状态栏)
  • HTC G10 320 * 460
  • 酷派大神 400615/400568(未隐藏URL与状态栏)

设计稿按照640的尺寸去切(有的人按照480的去切,主要是考虑图片资源的浪费),然后页面可以当作是320的来写,也就是说,字体大小以及图片大小,在页面制作的时候都需要除以2。

为什么要按照640的来切,却用320的来制作呢?因为设备分辨率太多,图片切大的去压缩,在高分辨率的设备,图片就不会变得很小了。
其实结果可知,手机端页面,因为上面viewport设置了,一般浏览器都是320,360,400这类宽度制作页面。

1、meta,link都有了
2、css reset也有了
3、尽可能的使用Flexbox 布局,尽量放弃float
4、图片的切法和媒体查询
5、移动端js的事件使用
6、最后手机测试完美收工
(简单粗糙上档次吧?)

甜品(饭后闲谈消化)

这里我必须说的是局部刷新,定位问题吧。
position:sticky与position:fixed布局,因为存在太多兼容bug,于是都会利用iscroll来解决这个问题。
如何使用,请移步iscroll官网查阅,这里不作详细说明。因为这里每一个点都可以来了说一篇或者好几篇文章。

盒子边框溢出
当我们指定了一个块级元素时,并且为其定义了边框,设置了其宽度为100%。按照盒子模型,就会发现该元素的左右边框各1个像素会溢了,导致出现横向滚动 条,这时候我们可以为其添加-webkit-box-sizing:border-box用来指定该盒子的大小包括边框的宽度。

ios数字颜色样式超过9位后失控
这个问题我不知道该怎么描述,就是在ios中,当数字超过9位数时,浏览器会给这个数字默认加上一个颜色,无论你设置什么颜色都无效。

css3关于background-size缩放背景图像的使用;如何用flex和translate等分,居中。

转载于:https://www.cnblogs.com/ling-du/p/5101821.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

快速的取整方法(~~)

为什么80%的码农都做不了架构师&#xff1f;>>> 最近看一篇js装逼小技巧————双波浪号的妙用(将内容转化为数字,或者小数取整)&#xff0c;但是本身我的JavaScript水平比较低对其底层操作和其使用范围不甚了解&#xff1b;通过翻阅资料现进行简单的整理。 ###装…

git log友好显示

查看commit 提交日志 $ git log $git log --prettyoneline $git reflog 显示所有提交记录&#xff0c;包括已经回退的提交&#xff0c;如图&#xff1a;提交了abc 和 bb 然后回退到 abc   $git log 只显示abc提交 可以使用 $git reset --hard commit号 回退到bb git reflog…

南理工计算机技术专业学位,南京理工大学计算机技术(专业学位)考研难吗

很多考生在准备南京理工大学计算机技术(专业学位)考研难吗&#xff1f;是考研报考的时候都会产生这样的疑问&#xff1a;这个专业的研究生好吗&#xff1f;适合我吗&#xff1f;对我以后的人生和职业会有帮助吗&#xff1f;考生在准备南京理工大学计算机技术(专业学位)专业考研…

《分布式系统:概念与设计》一2.3.2 体系结构模式

2.3.2 体系结构模式 体系结构模式构建在上述讨论过的相对原始的体系结构元素之上&#xff0c;提供组合的、重复出现的结构&#xff0c;这些结构在给定的环境中能运行良好。它们未必是完整的解决方案&#xff0c;但当与其他模式组合时&#xff0c;它们会更好地引导设计者给出一…

javascript sort()实现元素json对象的排序

看以下代码&#xff1a; var s [ { name: "Robin Van PurseStrings", age: 30 } ,{ name: "Theo Walcott", age: 24 } ,{ name: "Bacary Sagna", age: 28 } ].sort(function(obj1, obj2) {// 实现增序排列&#xff1a;前者的 age 小于后者…

调查:Java程序员最伤心,C++程序员最年老

说起我们对编程世界现有的刻板印象&#xff0c;你一定听说过类似于没有人喜欢用Java编码或者使用C 都是老人家&#xff0c;等等这样的话。为了分析这些刻板印象背后的真相&#xff0c;Trestle Technology的数据工程师写了一个工具。 不知道你有没有听说过微软的Project Oxford&…

计算机不小心删除怎么找回桌面,如何将桌面上误删的文件找回

在如今工作电脑化的趋势下&#xff0c;用户都会在桌面上创建各种各样的文件等&#xff0c;这些文件都是需要在工作中经常要进行各种操作的重要文件&#xff0c;那么频繁的操作也会出现各种的意外情况等&#xff0c;如果不小心删除了重要的文件该怎么恢复呢&#xff1f;想要恢复…

OnClickListener冲突的问题

OnClickListener冲突的问题 (2011-11-26 15:28:27) 转载▼标签&#xff1a; 杂谈 分类&#xff1a; android学习记录 import anfroid.view.View.OnClickListenerimport anfroid.content.DialogInterface.OnClickListener 这两个东西要同时用的话&#xff0c;要使用以下方式&…

html 响应式 同一行,一行CSS实现各种响应式元素 – Fluidity

一行CSS实现各种响应式元素 – Fluidity3月 31, 2014评论SponsorFLUIDITY是一个极微小的CSS样式表&#xff0c;压缩版只有一行代码&#xff0c;大小只有115个字节&#xff0c;它能实现图像、文本、Canvas、Table表格以及iFrame框架的响应式功能。好用且实用&#xff01;这个响应…

玩C一定用得到的19款Java开源Web爬虫

网络爬虫(又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者)&#xff0c;是一种按照一定的规则&#xff0c;自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 今天将为…

一元二次方程

转载于:https://www.cnblogs.com/569114a/p/4179164.html

数据中心存在不当投资吗?

不正当的投资是一种危害&#xff1a;在一些项目建设中&#xff0c;投入大量的资金是错误的&#xff0c;因为这些项目的需求是不可持续的或高估的。那么数据中心属于这一类吗? 投资不当的问题 不当投资会与经济的繁荣与萧条齐头并进。例如&#xff0c;抑制按揭贷款利率可能会导…

html如何设置滚动动画,JavaScript 实现页面滚动动画

在做前端 UI 效果时&#xff0c;让元素根据滚动位置实现动画效果是一个非常流行的设计&#xff0c;通常我们会使用第三方插件或库来实现。在本教程中&#xff0c;我将教大家使用纯 JavaScript 和 CSS 来实现。先预览一下实现的效果&#xff1a;我们使用 CSS 来实现动画&#xf…

绝非玩笑!人工智能或开创黑客新时代

专家称&#xff0c;未来的网络战争可能是机器对机器&#xff0c;这可能需要几年甚至几十年时间&#xff0c;但黑客并不一定总是人类。人工智能(AI)是可彻底改变网络安全的技术&#xff0c;而它有一天可能成为最终的攻击工具。 今年8月由美国国防部先进项目研究局(DARPA)赞助的C…

自学python系列14:映像,集合类型-集合类型

集合类型1.1如何创建集合类型和给集合赋值1.1.1 如何创建集合类型和给集合赋值集合的工厂方法set()和frozenset()>>> sset(abc)>>> sset([a, c, b])>>> tfrozenset(abc)>>> tfrozenset([a, c, b])len()计算的是集合的字母的个数1.1.2如何访…

观点:我们为什么需要威胁情报?

最近被谈论的异常火热的一个术语就是威胁情报&#xff0c;那么威胁情报到底是什么意思&#xff0c;它是一种什么概念或者机制呢?本文中我们就来亲密接触一下威胁情报&#xff0c;并了解它所具有的功能&#xff0c;然后给出几个威胁情报的最佳实践示例&#xff0c;最后分析威胁…

vijos 1942 [AH 2005] 小岛

描述 西伯利亚北部的寒地&#xff0c;坐落着由 N 个小岛组成的岛屿群&#xff0c;我们把这些小岛依次编号为 1 到 N 。 起初&#xff0c;岛屿之间没有任何的航线。后来随着交通的发展&#xff0c;逐渐出现了一些连通两座小岛的航线。例如增加一条在 u 号小岛与 v 号小岛之间的航…

聊城大学计算机应用基础函授,聊城大学试题计算机应用基础试题

姓名 年级专业层次 教学单位密封线 第1页 共3页聊城大学《计算机应用基础》函授试题一、判断题(共10题&#xff0c;每题2分&#xff0c;共20分)1、信息按状态划分可以划分为动态信息和静态信息。( √ )2、操作系统不具有通用性。( )3、在Windows XP环境中&#xff0c;整个显示…

(七)SpringBoot+SpringCloud —— 集成断路器

2019独角兽企业重金招聘Python工程师标准>>> 断路器简介 在一个项目中&#xff0c;系统可能被拆分成多个服务&#xff0c;例如用户、订单和库存等。 这里存在这服务调用服务的情况&#xff0c;例如&#xff0c;客户端调用订单服务&#xff0c;订单服务又调用库存服务…

计算机学业水平考试及格,信息技术学业水平考试表格部分试题(带答案)

第三章表格信息的加工与表达复习学案【学习目标】1.熟练使用excel加工表格信息&#xff0c;理解用图表来表现信息的特点与意义&#xff0c;2.能根据表格数据关系选择合适的图表类型表达意图。【考点】1.表格中常用的函数及其求值方法&#xff1b;2.根据数据选择合适的图表类型&…