【转】移动端的适配(网易、淘宝)

1.通用

html{font-size:10px}@media screen and (min-width:321px) and (max-width:375px){html{font-size:11px}}
@media screen and (min-width:376px) and (max-width:414px){html{font-size:12px}}
@media screen and (min-width:415px) and (max-width:639px){html{font-size:15px}}
@media screen and (min-width:640px) and (max-width:719px){html{font-size:20px}}
@media screen and (min-width:720px) and (max-width:749px){html{font-size:22.5px}}
@media screen and (min-width:750px) and (max-width:799px){html{font-size:23.5px}}
@media screen and (min-width:800px){html{font-size:25px}}

开发原则:文字流式,控件弹性,图片等比缩放。

2.网易

基于iphone4或者iphone5的设计稿,竖直放时的横向分辨率为640px,width: 6.4rem

html的font-size=deviceWidth / 6.4

deviceWidth = 320,font-size = 320 / 6.4 = 50pxdeviceWidth = 375,font-size = 375 / 6.4 = 58.59375px
deviceWidth = 414,font-size = 414 / 6.4 = 64.6875px
deviceWidth = 500,font-size = 500 / 6.4 = 78.125px

(1)先拿设计稿竖着的横向分辨率除以100得到body元素的宽度:

如果设计稿基于iphone6,横向分辨率为750,body的width为750 / 100 = 7.5rem
如果设计稿基于iphone4/5,横向分辨率为640,body的width为640 / 100 = 6.4rem

(2)布局时,设计图标注的尺寸除以100得到css中的尺寸:

播放器高度为210px,写样式的时候css应该这么写:height: 2.1rem

(3)在dom ready以后,通过以下代码设置html的font-size:

document.documentElement.style.fontSize = document.documentElement.clientWidth / 6.4 + ‘px‘;

(4)font-size可能需要额外的媒介查询,并且font-size不能使用rem,如网易的设置:
@media screen and (max-width:321px){
    .m-navlist{font-size:15px}
}

@media screen and (min-width:321px) and (max-width:400px){
    .m-navlist{font-size:16px}
}

@media screen and (min-width:400px){
    .m-navlist{font-size:18px}
}(5)说明a.视口设置
<meta name="viewport" content="initial-scale=1,maximum-scale=1, minimum-scale=1">

b.当deviceWidth大于设计稿的横向分辨率时,html的font-size始终等于横向分辨率/body元素宽
从手机访问网易,看到的是触屏版的页面,如果从pad访问,看到的就是电脑版的页面。如果你也想这么干,只要把总结中第三步的代码稍微改一下就行了:
var deviceWidth = document.documentElement.clientWidth;
if(deviceWidth > 640) deviceWidth = 640;
document.documentElement.style.fontSize = deviceWidth / 6.4 + ‘px‘;
3.淘宝

(1)通过js设置viewport

var scale = 1 / devicePixelRatio;
document.querySelector(‘meta[name="viewport"]‘).setAttribute(‘content‘,‘initial-scale=‘ + scale + ‘, maximum-scale=‘ + scale + ‘, minimum-scale=‘ + scale + ‘, user-scalable=no‘);(2)html元素的font-size的计算公式

font-size = deviceWidth / 10最后还有一个情况要说明,跟网易一样,淘宝也设置了一个临界点,当设备竖着时横向物理分辨率大于1080时,html的font-size就不会变化了,原因也是一样的,分辨率已经可以去访问电脑版页面了。淘宝开源:https://github.com/amfe/lib-flexible(1)动态设置viewport的scale
var scale = 1 / devicePixelRatio;
document.querySelector(‘meta[name="viewport"]‘).setAttribute(‘content‘,‘initial-scale=‘ + scale + ‘, maximum-scale=‘ + scale + ‘, minimum-scale=‘ + scale + ‘, user-scalable=no‘);
(2)动态计算html的font-size
document.documentElement.style.fontSize = document.documentElement.clientWidth / 10 + ‘px‘;

(3)布局的时候,各元素的css尺寸=设计稿标注尺寸/设计稿横向分辨率/10

(4)font-size可能需要额外的媒介查询,并且font-size不使用rem,这一点跟网易是一样的。

 

5. 比较网易与淘宝的做法


共同点:


  • 都能适配所有的手机设备,对于pad,网易与淘宝都会跳转到pc页面,不再使用触屏版的页面
  • 都需要动态设置html的font-size
  • 布局时各元素的尺寸值都是根据设计稿标注的尺寸计算出来,由于html的font-size是动态调整的,所以能够做到不同分辨率下页面布局呈现等比变化
  • 容器元素的font-size都不用rem,需要额外地对font-size做媒介查询
  • 都能应用于尺寸不同的设计稿,只要按以上总结的方法去用就可以了

不同点


    • 淘宝的设计稿是基于750的横向分辨率,网易的设计稿是基于640的横向分辨率,还要强调的是,虽然设计稿不同,但是最终的结果是一致的,设计稿的尺寸一个公司设计人员的工作标准,每个公司不一样而已
    • 淘宝还需要动态设置viewport的scale,网易不用
    • 最重要的区别就是:网易的做法,rem值很好计算,淘宝的做法肯定得用计算器才能用好了 。不过要是你使用了less和sass这样的css处理器,就好办多了,以淘宝跟less举例,我们可以这样编写less:

//定义一个变量和一个mixin

@baseFontSize: 75;//基于视觉稿横屏尺寸/100得出的基准font-size
.px2rem(@name, @px){
    @{name}: @px / @baseFontSize * 1rem;
}

//使用示例:

.container {
    .px2rem(height, 240);
}

//less翻译结果:
.container {
    height: 3.2rem;
}
 
				
时间: 2024-10-16 07:06:11

【转】移动端的适配(网易、淘宝)的相关文章

详解如何利用淘宝外部低价促销引流平台提高销量

“日前阿里巴巴零售平台开出5月第二张罚单,47个集市淘宝商家被查实参与“仿真刷单”,其中有26个皇冠级卖家,最高星级为4皇冠,开店最长的已超过八年.”--网易新闻 2015年的电商之路,注定是最艰难的一年!之前流行的一句话,“刷单是找死,不刷单是等死”,果真应验了. 显然,刷单致富路已到了尽头,对于实力不强的中小卖家来说,这无疑是最致命的打击了! 然而,除了刷单之外,就没有别的办法提高销量了吗?好在天无绝人之路,小编有幸采访了一位淘宝运营高手,从他那里了解到一些通过淘宝外部平台进行低价促销提高销

淘宝严厉打击刷单,卖家应该如何进行突围?

今年电商普遍都很难做,因为阿里为了给美国的股民一个好看的报表,采取了严厉打击刷单的亮剑行动.卖家若再想通过刷单来带动销量,已经非常非常难了.阿里说的话,要想有饭吃,就给老子交保护费,要想吃到肉,就要交大把大把的保护费! 但是僧多粥少,即使真的给阿里交了保护费,很多时候,都只能喝到粥而已,甚至连粥都很难喝到.但是对于中小卖家来说,又有几个人能交的起保护费? 因此,广大卖家,不能坐以待毙,要通过各种方式来打破阿里的魔咒.这里小编给大家抛砖引玉,希望能给大家带来一些启发 米折.折800.卷皮.1折等网

淘宝网触屏版 - 学习笔记(1 - 关于meta)

注:本文是学习笔记,并不是教程,所以会有很多我不理解或猜测的问题,也会有不尽详实之处,望见谅. <meta charset="utf-8"> <meta content="yes" name="apple-mobile-web-app-capable"> <meta content="yes" name="apple-touch-fullscreen"> <meta

从淘宝和网易的font-size思考移动端怎样使用rem?

最近翻了一下关于移动端的rem的使用,怎样最方便.在读到流云诸葛的一篇关于<从网易与淘宝的font-size思考前端设计稿与工作流>的文章后,来总结一下. 然而根据我以往做移动端web项目的时候,设计稿一般是640或者750的,我一般会在head里面这样写: <meta name="viewport" content="width=750, user-scalable=no, target-densitydpi=device-dpi"><

淘宝——移动端页面终端适配

注:本文参考自:http://www.cnblogs.com/xianyulaodi/p/5533201.html 阅读目录 适配的要求 适配的方法,3个步骤 适配中背景图片的处理 适配的原理解析 摘要:在进行移动端界面的书写的时候,如果把宽度高度或者字体大小全部写死的话,那么在所有手机上看到的大小都一样,存在的问题就是同样大小的字体,或者一个盒子模型, 在大屏幕手机上看起来会有点偏小.比如iphone6PLUS.如果是做成适配的话,就很好的解决了这个问题,大屏幕显示的内容大一点,小屏幕显示的小

从网易与淘宝的font-size思考前端设计稿与工作流 (转)

从网易与淘宝的font-size思考前端设计稿与工作流 阅读目录 1. 问题的引出 2. 简单问题简单解决 3. 网易的做法 4. 淘宝的做法 5. 比较网易与淘宝的做法 6. 如何与设计协作 7. 总结 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问题,内容较多,但对你的技术和工作一定有价值,欢迎阅读和点评:). 1. 问题的引出 最近阅读白树的博文<移动web资源整理>时,他在博文中有一段指出

[转载]从网易与淘宝的font-size思考前端设计稿与工作流

原文地址:http://www.cnblogs.com/lyzg/p/4877277.html 原文作者:流云诸葛 阅读目录 1. 问题的引出 2. 简单问题简单解决 3. 网易的做法 4. 淘宝的做法 5. 比较网易与淘宝的做法 6. 如何与设计协作 7. 总结 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问题,内容较多,但对你的技术和工作一定有价值,欢迎阅读和点评:). 1. 问题的引出 最近阅

(淘宝无限适配)手机端rem布局详解

一.        首先我们先来看看淘宝不同分辨率下的适配页面 可以看出来,淘宝在不同的分辨率下,页面的尺寸和模块间的间距会发生变化,这是因为淘宝采用了rem,这篇文章会简单介绍淘宝的布局思路以及具体做法,不过在此之前我们先了解一些移动端的知识,以为更好的理解淘宝布局的方案,下面我们来看一些移动端的知识 二.了解一些移动端的知识viewport的<meta>标签用法 其主要用来告诉浏览器如何规范的渲染Web页面,而你则需要告诉它视窗有多大 移动端开发中,通常我们都会采用<meta nam

从网易与淘宝的font-size思考前端设计稿与工作流

1. 问题的引出 最近阅读白树的博文<移动web资源整理>时,他在博文中有一段指出,如果html5要适应各种分辨率的移动设备,应该使用rem这样的尺寸单位,同时给出了一段针对各个分辨率范围在html上设置font-size的代码: html{font-size:10px} @media screen and (min-width:321px) and (max-width:375px){html{font-size:11px}} @media screen and (min-width:376