要掌握的知识点:

  

iphone6 屏幕尺寸为 375*667 (pt)也就是 网页 全屏显示时候 document.documentElement.clientWidth------可以理解为屏幕越大这个值越大(但是像素不一定高)

      dpr(设备独立像素):2.0   可用(window.devicePixelRatio)得出 (------------像素越高 或者屏幕越小-------dpr越大)

              window.devicePixelRatio = 物理像素 / dips

              

      屏幕分辨率为 750*1334   (px)  ppi:326

------------------------------------------------------------------------------

对比 sony z2  屏幕尺寸为327*580

dpr(设备独立像素):3.333

  在Android中,规定以160dpi为基准,1dp=1px。如果密度是320dpi,则1dp=2px,以此类推

----------------------------------------------------------------------------------------------------------

思考:

有个常见的现象,就是 pc端 一般字体 设置为12px 为正常字体 可以看清楚,但是把这个网页放到手机端游览 字体就会变得很小,为什么?

因为pc端dpr 一般都是1,所以当设置为12px时是 真正的12px,

而 手机端 现在大部分都是高清屏幕

例如, iphone6 dpr=2 那么 pc上12px大小的字体,放到iphone6上就会被缩小两倍,

    sony z2  dpr=3.3 所以pc上12px大小的字体,放到z2上就会被缩小3.33倍,

    有 dpr=1 的手机吗?

    有!

    在举例 iphone 3gs

    iphone 3gs 屏幕尺寸为 320*480  分辨率  480*320px  dpr=1

    iphone  4  屏幕尺寸为 320*480  分辨率  960*640px  dpr =2

    也就是说:pc上12px的字,在iphone3gs 上可以看清,且同pc上字体大小一样,

         pc上12px的字,在iphone4 上会缩小两倍,也就是说pc上12px大小的字  在 iphone4上同样大小 得写24px才行(实际不用,请看下文)

有一个div style='多少 px‘  放到iphone4上 会是宽度全屏 是320px? 还是 640px?

答案是 640px,

<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1, minimum-scale=1">

  以上这段做移动端时候都会粘贴进去,(上面讨论的字看不清的情况就不存在了)为什么

  

device-width的计算公式为:设备的物理分辨率/(devicePixelRatio * scale)------可以理解为 device-width 为手机的屏幕大小

那这时候有一个div style='多少 px‘  放到iphone4上 会是宽度全屏 是320px? 还是 640px?

答案是 320px

  

那么此时可以总结前端设计工作流(网易做法)

1设计师 按照iphone6  像素  设计    750px  *1334    px

2 前端

0)
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1, minimum-scale=1">
注意:上面这句不加的时候  iphone6的  document.documentElement.clientWidth=####上面这句加上的时候  iphone6的  document.documentElement.clientWidth=375
注意:上面这句不加的时候  iphone6的  document.documentElement.clientWidth=####上面这句加上的时候  iphone6的  document.documentElement.clientWidth=375
注意:上面这句不加的时候  iphone6的  document.documentElement.clientWidth=####上面这句加上的时候  iphone6的  document.documentElement.clientWidth=375
1)便于计算
html{
  font-size:100px
}
2)那么这个时候想要让宽度全屏只需设置body7.5rem
body{
  width: 7.5rem
} 3)动态改变html的font-size
<script>
    document.documentElement.style.fontSize = document.documentElement.clientWidth / 7.5 + 'px';
</script>

得出结论: iphone6的时候 html的 font-size 为50px  ( 375/7.5  +'px' = 50 px. )
      body的 宽度为 7.5*50 = 375px 所以全屏了就
)

同理 sony z2 (加上viewport后)document.documentElement.clientWidth = 360  #### 不加的话为document.documentElement.clientWidth = 980
得出结论: sony z2 的时候 html的 font-size 为50px  ( 360/7.5  +'px' = 48 px. )
      body的 宽度为 7.5*48 = 360px 所以全屏了就 为什么 两个手机 在不加viewport 时候 document.documentElement.clientWidth = 980?
因为当初移动设备兴起,想游览所有网页 包括pc端的网页,那这个时候问题来了,由于手机屏幕太小,网页放置不下,所以出现了视口的概念,并默认为980,这样相当于 (比如一般pc网页视口宽度为1024)告诉游览器 你把1024宽的网页 放到另一个 980宽的是口里,并且要全部显示,所以系统会把网页缩小980/1024 倍。放到980里,当然真实的手机视口可能都没有那么大。比如iphone6 屏幕宽度 只有375 ,为什么当初视口不定位375? 因为 如果把1024宽的网页 缩放到375宽的屏幕中 要缩小四倍 才能全部显示,这样网页中的内容基本都会太小 而看不清!!
那么我手机视口也定为1024呢?这样倒是不缩放了,网页和pc端一样大,但是会出现横向竖向滚动条太多,游览起来费事,所以定为980 是中间的一个值
 

总结前端设计工作流(淘宝做法)

举例
0)iphone 6
<meta name="viewport" content="width=device-width,initial-scale=0.5,maximum-scale=1, minimum-scale=1">
2 document.documentElement.clientWidth =750(不是原来的375)
3    html的  font:size = 75px

4  如果想要body横向全屏
  body{
    width: 10rem
  }
   


参考资料:

http://isux.tencent.com/web-app-rem.html

http://www.cnblogs.com/well-nice/p/5509589.html

http://www.cnblogs.com/dreamlht/p/5112390.html

http://www.chinaz.com/web/2015/1110/468774.shtml#0-tsina-1-17945-397232819ff9a47a7b7e80a40613cfe1

移动端web app自适应布局探索与总结的更多相关文章

  1. 移动端Web App自适应布局探索

    1.困扰多时的问题 在这之前做Web App开发的的时候,在自适应方面一般都是宽度通过百分比,高度以iPhone6跟iPhone5之间的一个平衡值写死,我们的设计稿都是iPhone5的640 * 11 ...

  2. web app 自适应方案总结 关键字 弹性布局之rem

    关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...

  3. web app 自适应方案总结 弹性布局之rem

    关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...

  4. web app 自适应 弹性布局之rem

    关于rem,主要参考文档 1.腾讯ISUX (http://isux.tencent.com/web-app-rem.html) 2.http://www.w3cplus.com/css3/defin ...

  5. 【饿了么】—— Vue2.0高仿饿了么核心模块&移动端Web App项目爬坑(三)

    前言:接着上一篇项目总结,这一篇是学习过程记录的最后一篇,这里会梳理:评论组件.商家组件.优化.打包.相关资料链接.项目github地址:https://github.com/66Web/ljq_el ...

  6. 移动端web app要使用rem实现自适应布局:font-size的响应式

    关于webAPP的开发最主要解决的就是“自适应自适应布局”.常规的适配有很多做法,例如:流式布局.限死宽度等,但是这些方案都不是最佳的解决方法​,而最满足设计需要的是: 元素可以根据屏幕大小而等比列变 ...

  7. 移动端web app开发学习笔记

    移动web和pc端web以及web app 移动web开发跟web前端开发差别很小,使用的技术都是html+css+js.手机网页可以理解成pc网页的缩小版加一些触摸特性.在浏览器中进行的网页开发,最 ...

  8. 移动端web app开发备忘

    近期要做个手机html5的页面,做些知识储备,重要的点记录下来以备兴许. 1.devicePixelRatio:定义设备物理象素和设备独立象素的比例.css中的px能够看作是设备的独立象素.通过dev ...

  9. 利用float与overflow:hidden实现移动端两栏自适应布局

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. IntelliJ IDEA 13试用手记(附详细截图)

    从去年开始转java以来,一直在寻找一款趁手的兵器,eclipse虽然是很多java程序员的首选,但是我发现一旦安装了一些插件,workspace中的项目达到数10个以后,经常崩溃,实在影响编程的心情 ...

  2. Theano2.1.7-基础知识之设置的配置和编译模式

    来自:http://deeplearning.net/software/theano/tutorial/modes.html Configuration Settings and Compiling ...

  3. checkboxlist 下拉框多选功能 ,模拟dropdownlist带复选框效果

    前台代码 01.<html xmlns="http://www.w3.org/1999/xhtml"> 02.<head runat="server&q ...

  4. JavaScript 10分钟入门

    JavaScript 10分钟入门 随着公司内部技术分享(JS进阶)投票的失利,先译一篇不错的JS入门博文,方便不太了解JS的童鞋快速学习和掌握这门神奇的语言. 以下为译文,原文地址:http://w ...

  5. 吉特仓库管理系统-.SQL Server 2012 升级企业版

    随着业务数据的不断增大,单表的数量已经上亿,查询的数据越来越慢,所以考虑到将数据库表分区,同时也将数据库升级到SQL Server 2012. 当时没有考虑更多,在服务器上安装了 SQL Server ...

  6. 将Microsoft Ajax Minifier集成到VS2013对JS、CSS进行编译时压缩

    在网站发布中,一般要将js,css文件压缩减少体积,以减少在HTTP请求中的流量.将Microsoft Ajax Minifier集成到VS2013中就可以对JS.CSS进行编译时压缩. VS2013 ...

  7. VS2013 无法在Web服务器上启动调试。IIS未列出与打开的URL匹配的网站。

    出现这个问题的原因是:没有用管理员权限运行VS2013. 本来遇到这个问题的时候,不知道什么原因.后来附加到进程调试的时候,提示要以管理员身份运行.才知道啥原因.

  8. Oracle:高效插入大量数据经验之谈

    来源于:http://www.cnblogs.com/liwenzhen238/p/3610518.html 在很多时候,我们会需要对一个表进行插入大量的数据,并且希望在尽可能短的时间内完成该工作,这 ...

  9. Jenkins+svn+maven

    首先我们在我们的服务器上安装好svn和maven 这里在前两步骤基本上没有啥问题,主要就是在Jenkins的步骤我弄了好长时间,这里记录一下 Jenkins的问题我是在这个网址解决的:http://b ...

  10. SQL 常用函数及示例

    --SQL 基础-->常用函数 --================================== /* 一.函数的分类 SQL函数一般分为两种 单行函数 基于单行的处理,一行产生一个结果 ...