说明:

①:H5自适应不同分辨率的设备,其实主要就一句

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

width=device-width 屏幕宽度;initial-scale=1 原始缩放比例为1,即100%铺满;minimum-scale=1 最小缩放比例为1;maximum-scale=1 最大缩放比例为1;user-scalable=no 禁止页面缩放。有些浏览器支持不一样,所以若想禁止缩放,就把最大最小缩放比例设为1即可!

②:字体单位使用rem,尽量不使用px,rem能等比适应所有屏幕。使用rem的优缺点,有详细介绍 http://isux.tencent.com/web-app-rem.html

③:dpr分屏,动态修改meta标签内容

下面试代码,有详细注释

<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
<title>移动h5自适应布局</title>
<style>
/*320px布局*/
html{font-size: 100px; /*根字体100px, 即1px = 0.01rem*/}
body{font-size: 0.14rem;/*实际相当于14px*/}
body{
padding:0;
margin:0;
}
.div2{
font-size:0.14rem;
}
.div3{
width:3rem;
height:3rem; border:1px solid #000;
box-sizing:border-box;
}
.div4{
margin-top:0.1rem;
width:2rem;
height:2rem; border:1px solid #000;
box-sizing:border-box;
}
.img1{
width:3.2rem;
}
</style>
</head>
<body> <div class="div2">动态更改html元素大小</div>
<div class="div3"></div>
<div class="div4"></div>
<img class="img1" src="http://www.baidu.com/img/bdlogo.png" alt="" />
</body>
<script>
// 该代码来自http://www.ghugo.com/mobile-h5-fluid-layout-for-iphone6/
(function (doc, win) {
// 分辨率Resolution适配 自适应
var docEl = doc.documentElement,
//判断浏览器是否支持orientationchange改变方向的函数
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
//客户端窗口的(逻辑)宽度,逻辑像素=物理像素/2 如:iphone6 (750/2=375)
var clientWidth = docEl.clientWidth; if (!clientWidth) return;
// 把document的fontSize大小设置成跟窗口成一定比例的大小,从而实现响应式效果 由rem转换到px
docEl.style.fontSize = 100 * (clientWidth / 320) + 'px';
}; // 如果浏览器不支持addEventListener函数就终止
if (!doc.addEventListener) return; //addEventListener()多次绑定同一事件 参数(事件名,要执行的函数,处理程序的阶段)
//如果浏览器不支持orientationchange改变方向的函数,则返回resize,会执行recalc函数
win.addEventListener(resizeEvt, recalc, false); //绑定浏览器缩放与加载时间
doc.addEventListener('DOMContentLoaded', recalc, false); /*dpr分屏,动态修改meta标签内容*/
// 一物理像素在不同屏幕的显示效果不一样。要根据devicePixelRatio来修改meta标签的scale,要注释上面的meta标签
(function(){
return;
var dpr = scale =1;
var isIPhone = win.navigator.appVersion.match(/iphone/gi);
//获取到当前设备的dpr
var devicePixelRatio = win.devicePixelRatio;
if (isIPhone) {
// iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案
if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {
dpr = 3;
} else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){
dpr = 2;
} else {
dpr = 1;
}
} else {
// 其他设备下,仍旧使用1倍的方案
dpr = 1;
}
scale = 1 / dpr; // js动态写meta标签
var metaEl = "";
metaEl = doc.createElement('meta');
//设置viewport,进行缩放,达到高清效果
metaEl.setAttribute('name', 'viewport');
metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');
if (docEl.firstElementChild) {
//动态写入样式
docEl.firstElementChild.appendChild(metaEl);
} else {
var wrap = doc.createElement('div');
wrap.appendChild(metaEl);
doc.write(wrap.innerHTML);
}
})(); })(document, window); </script>
</html>

运行结果:

H5自适应屏幕分辨率大小的更多相关文章

  1. delphi 窗体自适应屏幕分辨率

    delphi 窗体自适应屏幕分辨率 这是个困惑我很长时间的问题,到今天终于得到解决了. 话说Delphi有个很强的窗体设计器,这一点让VC粉丝垂涎三尺而不可得.但是,Delphi里设计的窗体并没有自动 ...

  2. #region 自适应屏幕分辨率

            #region 自适应屏幕分辨率 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        public ...

  3. Unity3D NGUI自适应屏幕分辨率(2014/4/17更新)

    原地址:http://blog.csdn.net/asd237241291/article/details/8126619 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 本文链接地址: ...

  4. jQuery Easy UI (适应屏幕分辨率大小)布局(Layout)

    一.jQuery Easy UI (适应屏幕分辨率大小)布局(Layout) 1.首先应用的是jquery-easyui-1.4 版本(版本不同,兼容性不同) 2.实现整个页面的布局( layout: ...

  5. 手机网页H5 自适应不同分辨率的屏幕 必学标签meta之viewport

    viewport 语法介绍 <meta name="viewport"content=" height = [pixel_value | device-height ...

  6. Delphi:窗体自适应屏幕分辨率的改进

    在窗体依据屏幕分辨率自适应调整尺度方面,昨天的工作可以说是一个突破点.昨天的工作找到了长期以来我的原有方案的问题所在,这是非常关键的.但是昨天晚上的解决方案并不完美,今天的这个才是比较完美的解决版. ...

  7. Unity NGUI根据高度自适应屏幕分辨率

    Unity版本:4.5.1 NGUI版本:3.6.5 本文内容纯粹转载,转载保留参考链接和作者 参考链接:http://blog.csdn.net/asd237241291/article/detai ...

  8. RS报表自动适应屏幕分辨率大小

    问题:同一个报表,由于用户电脑显示器大小,分辨率大小不同显示的不一样,看起来不完整或者很不协调 原因:设计报表大小属性的时候使用了固定值属性,比如限制为宽:1200px 那么在电脑屏幕小分辨率很小的情 ...

  9. NGUI自适应屏幕分辨率

    unity官方承诺的新ui系统一直没有推出来,我们的UI使用的是原生的OnGUI系统,刚好UI需要改版,索性就想迁到NGUI上面来,于是看了一下NGUI源码,发现NGUI可以大大的降低DrawCall ...

随机推荐

  1. vue项目常见需求(项目实战笔记)

    一.起步 1.引入reset.css解决手机之间不同分辨率的问题(reset.css为别人封装的css文件) import './assets/styles/reset.css' 使用方式 1rem= ...

  2. 简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法

    在WEB开发中异步请求方式普遍使用,ajax技术减少程序员的工作量,也提升用户交互体验.AJAX的四种异步请求方式都能实现基本需求,闲话不多说,直接切入正题. 1.$.getJSON $.getJSO ...

  3. python3.6使用f-string来格式化字符串

    这里的f-string指的是以f或F修饰的字符串,在字符串中使用{}来替换变量,表达式和支持各种格式的输出.详细的格式化定义可以看官方文档 >>> a, b = 30, 20 > ...

  4. Jenkins配置项目

    前提:服务器上部署了jenkins+Tomcat,并且安装了所需插件 1.新建项目 -- 项目配置 2.配置git地址 出现上述错误是因为该git地址,在jenkins服务器上无权限访问.在git上开 ...

  5. odoo 默认显示字段

    @api.multi def generate_customs_declaration(self): # if len(self.mapped('cus_goods_list_ids')) != 1: ...

  6. python多线程-Semaphore(信号对象)

    Semaphore(value=1) Semaphore对象内部管理一个计数器,该计数器由每个acquire()调用递减,并由每个release()调用递增.计数器永远不会低于零,当acquire() ...

  7. .NET平台常用框架

    分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架. Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度. Redis:是一个高性能的K ...

  8. JavaScript -- Math

    ----- 016-Math.html ----- <!DOCTYPE html> <html> <head> <meta http-equiv=" ...

  9. h5实现输入框fixed定位在屏幕最底部兼容性

    1.问题由来 做h5 已经有很长一段时间了,现在做的工作h5比pc上的更多,曾经解决pc端IE各个版本的兼容性也是伤透脑筋,原以为h5的会更好,殊不知,还有更头疼的问题,当设计师要设计一个聊天窗口,把 ...

  10. 数据库字典查询,从EF工具操作中提取的

    用户表: SELECT [Project1].[C1] AS [C1] , [Project1].[CatalogName] AS [CatalogName] , [Project1].[Schema ...