移动页面开发

[ 基础知识 ]   像素?!   +    长度单位?!    +    远程调试?!


[ 视口?! ] PC 浏览器中,窗口就是约束 CSS 布局的视口。即,在桌面上,视口的宽度和浏览器窗口的宽度一致。

而在手机端,

  • 布局视口,会限制 CSS 布局;
  • 视觉视口,表示浏览器的可视区域,决定用户看到什么;
  • 理想视口,是对于特定设备的特定浏览器的布局视口的一个理想尺寸。

整体来说,移动页面最理想的状态是:避免滚动条且不被默认缩放处理,这可以通过屏幕适配来进行控制,并改变浏览器默认的布局视口(layout viewport)的宽度。

[ 屏幕适配 ]  使用 meta 视口标签,设置 viewport?!                    //  快捷键为  meta:vp  +  Tab

屏幕适配是移动端开发的核心。meta 视口标签存在的主要目的是让布局视口的尺寸和理想视口的尺寸匹配。

viewport 是由 apple 公司为了解决移动设备浏览器渲染页面而提出的解决方案,后来被其他移动设备厂商所采纳。桌面浏览器不支持,也不需要它,因为它们没有理想视口的概念。

IE 是一个例外:在手机上它支持meta视口标签,但最好使用@-ms-viewport。

[ 适配方案 - 百分比宽度 ]设置页面宽度为百分比,避免使用具体的固定宽度,具体见demo:移动Web开发。

父元素高度由子元素的内容自动撑开,避免使用具体的固定高度。

// 特别说明 — 在项目文件夹结构方面:

  • css文件夹:base.css(公共样式) + index.css(页面样式)
  • 图片文件夹:images(静态图标/片)+  uploads(动态的数据图片)

进行移动页面开发,并非单纯的将复杂的PC页面完全转化为移动端页面。它通常有 2 种不同的选择:

Plan A:[ 移动Web开发 ] 制作适合移动端展示的页面(新的适应于移动端的页面)

Plan B:[ 响应式开发 ] 响应式(PC、移动为同一套页面)


移动Web开发( 京东首页 )

代码示例 — 移动端京东项目实战?!

[1] 设置公共样式 base.css


[2] 页面架构:设置整体布局


[2-1] 页面样式设置 index.css

// 调试状态下,选择responsive,可以对移动页面大小进行拖动,可以发现其存在最大/最小宽度。


[2-2] 页面制作:以 “搜索块” 为例

通过responsive状态下的不断左右拖动,发现其存在的规律:

// 实现方式:

1. f lex:1;  可能存在兼容性问题

2. 中间 margin:0 100px;    +     左右两个通过绝对定位                           // 100px为自定义,可能是其他

3. 中间 padding:0 100px;   +    左右两个通过绝对定位


[3] 动态效果:以 “搜索块” 为例                                  // 移动端类似 jQuery的库:zepto.js(待)— touch事件


[4] 移动端的点击事件 — tab 事件(了解)                                                // click事件在移动端存在延迟的现象


[5] 移动端插件的使用 — fastclick / iscroll / swiper 等插件

1. zepoto.js 轻量级移动端类库,内有封装tap、swipe事件,类似jquery.js,引用后可用jquery,也可引用jquery压缩版 http://www.zeptojs.cn/#contents

2. touch.js 移动端触摸事件库,zepto的tap事件可能在某些情况下会出问题,所以用touch.js,使用时参考文档库:http://www.cnblogs.com/Chen-XiaoJun/articles/5826698.html 有拖拽、滑动、旋转等 现成的效果

3. hammar.js 类似touch.js

4.fastclick.js 解决click的300ms的延迟和点透bug,通常用tap做点击事件,使用参考:
http://blog.csdn.net/zfy865628361/article/details/49512095

5. annimate.css 动画库 里面定义了一些常用的css动画。 移动端很吃性能,避免频繁操作dom,所以用css3的动画、过度等,性能好,使用时直接加animated和动画的类名即可。
https://daneden.github.io/animate.css/

6. swiper.js 移动端触摸滑动插件,做轮播效果 ,效果以及使用参考: http://www.swiper.com.cn/

7.iscroll-4插件 解决web-app中区域滚动问题,滑动时有惯性运动,本质:利用css3属性让dom运动
http://www.360doc.com/content/14/0724/11/16276861_396699901.shtml