移动端开发多设备适配

一、移动端多设备适配

参考了手机淘宝:

针对安卓所有设备,devicePixelRatio(简称dpr),统一当作“1”处理,即一倍屏;然后viewport的宽度就等于device-width,但是淘宝的做法是没有对viewport的width做明确指定,仅指定了scale值;因为浏览器实际上会根据scale来设置viewport的宽度;

针对ios,则存在2倍,3倍屏;

最终就是根据dpr来确定html根元素的字体大小,所有元素的宽高以rem单位来展示;

这里有一个基准值,就是设计稿的尺寸,比如设计稿是640*960,则这个基准值是64;具体可参考这篇文章:http://www.html-js.com/article/Mobile-terminal-H5-mobile-terminal-HD-multi-screen-adaptation-scheme%203041

;(function(){
            var win = window, doc = document, docEl = doc.documentElement;
            var ios = win.navigator.appVersion.match(/iPhone/i), dpr = win.devicePixelRatio || 1, finalDpr = dpr;

            //仅针对iPhone做倍屏处理,即其它平台dpr=1;
            if(!ios){
                finalDpr = 1;
            }

            var scale = 1 / finalDpr;

            var metaEl = doc.querySelector(‘meta[name="viewport"]‘);
            metaEl.setAttribute(‘content‘, ‘initial-scale=‘ + scale + ‘,maximum-scale=‘ + scale + ‘, minimum-scale=‘ + scale + ‘,user-scalable=0‘);

            docEl.setAttribute(‘data-dpr‘, finalDpr);

            var width = docEl.getBoundingClientRect().width;

            //针对安卓屏幕宽度超过设计稿尺寸时,限制最宽为640,也就是说rem最大为64px;
            if(width / finalDpr > 640){
                width = 640 * finalDpr;
            }
            docEl.style.fontSize = width  / 10 + ‘px‘;

        })()

另外一个注意事项是,页面初始化是需要指定一个viewport(淘宝是可以动态创建)

<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
时间: 2024-11-04 13:20:09

移动端开发多设备适配的相关文章

移动端开发高清效果和多屏适配

背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对iphone6而言:原先的3

08-移动端开发教程-移动端适配方案

由于移动端的特殊性,屏幕的尺寸碎片化严重,要想很好的适配不同的尺寸的设备,需要我们前端开发相比PC端要做一些基层的适配方案. 1. 常见的适配方案 百分比+固定高度布局方案 固定屏幕为理想视口宽度 少许的媒体查询设置字体 水平百分比布局 水平方向部分也可以使用弹性布局 Rem解决方案 Rem的大小取值:根据页面的dpr动态改变 Rem的取值: 1rem = 100px 或者 1rem = 1/10 * 理想视口的宽度 chrome浏览器字体小于12px(会被重置为12px) 固定设计稿的宽度开发

移动端开发适配总结

移动端开发适配2种方案总结 针对移动端适配的方案~ 一: 第一种方案是:所有的单位使用rem来适配:首先在页面上设置html的font-size的大小:如下我项目中的设置: html { font-size: 100px; } @media(min-width: 320px) { html { font-size: 100px; } } @media(min-width: 360px) { html { font-size: 112.5px; } } @media(min-width: 400p

移动端开发适配的2中方案

原文地址:http://www.cnblogs.com/tugenhua0707/p/5568734.html 针对移动端适配的方案~ 一: 第一种方案是:所有的单位使用rem来适配:首先在页面上设置html的font-size的大小:如下我项目中的设置: html { font-size: 100px; } @media(min-width: 320px) { html { font-size: 100px; } } @media(min-width: 360px) { html { font

【Android应用开发技术:用户界面】设备适配

作者:郭孝星 微博:郭孝星的新浪微博 邮箱:[email protected] 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell 由于Android平台的丰富性和多样性,全世界的Android设备有着各种各样的尺寸和大小,而为了能够推广我们的应用给各种各样的用户,设备适配是一件很重要的工作. 一 语言适配 把UI中的字符串存储在外部文件,通过代码提取,这是一种很好的做法.Android可以通过工程中的资源

移动端开发用touch事件还是click事件

前端开发现在包含了跨浏览器,跨平台(不同操作系统)和跨设备(不同尺寸的设备)开发. 在移动开发的过程中,到底选取touch事件还是click事件?对了,请不要鄙视click,click在移动端开发用着也是不错的. 首先,我先说一下touch事件在开发中存在的两个问题: 1.touch事件在某些场景下存在点击穿透的问题. 2.touchstart事件时触摸屏幕就会触发,touchend事件是手指离开屏幕就会触发,而有时候,我们仅仅是只想滑动屏幕,却会触发这两个事件. 1问题的原因:移动端事件触发的

优雅地进行移动端开发

对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 1)选取一款手机的屏幕宽高作为基准(比如 iphone6的375×667). 2)对于高清屏幕,为了达到高清效果,视觉稿的画布大小会是基准的2倍(对iphone6而言:原先的375×667,就会变成750×1334). 问题1:对于dpr=2的手机,为什么画布大小×2,就可以解决高清问题? 首先,我们要先了解一下 dpr 是什么? 设备像素比(简称dpr)定义了物理像素和设备独立像素的对应关系,它的值可以按如下的公式的

探究移动端开发

探究移动端开发 什么使移动端开发呢?这就是在手机等移动端设备上的网页开发.而当今比较流行的通过rem进行移动端的适配,所以这篇文章会主要介绍一些基本概念以及rem适配方案. 第一部分:基本概念 物理像素:这个就是在屏幕上可以控制的最小显示单位,比如显示颜色的最小单位. css像素: 就是我们在设计网页时在css中使用的像素,比如:border: 1px black solid;这里的1px即为css像素,实际上这种像素就是下面我们要介绍的设备独立像素. 设备独立像素(density-indepe

移动端开发,几个你可能不知道的CSS单位属性。

1. rem "em" 单位是我们开发中比较常用到的,它表示以当前元素的父元素的单位大小为基准来设置当前元素的大小:“rem” 中的 “r” 代表 “root”,它表示以根(即“html”)元素的单位大小为基准来设置当前元素的单位大小,所以不管当前元素是任意子节点,一旦设单位大小为 “rem” 那么这个元素大小都是以根元素单位为参考的,这里的 “em” 和 “rem” 均具有继承性. 2. vw 和 vh(移动端开发个人最喜欢的单位属性,也是这次介绍的重点) 传统的响应式开发中,我们常