• 一、设置html的font-size,使用rem作为单位

假设设计稿宽度750px,屏幕宽高750px,

1、1rem=屏幕宽度/设计稿宽度*100px,适合用px表示宽度

1rem=100px

rem=实际/100,300px=3rem

2、1rem=屏幕宽度/10,适合用百分比表示宽度

1rem=75px

rem=实际/设计稿宽度*10=百分比值/10,250px=30%=3rem

JS

 1 (function(doc, win) {
2 var pageWidth = 750;
3 var docEl = doc.documentElement,
4 isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
5 dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1,
6 dpr = window.top === window.self ? dpr : 1, //被iframe引用时,禁止缩放
7 dpr = 1,
8 scale = 1 / dpr,
9 resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
10 docEl.dataset.dpr = dpr;
11 var metaEl = doc.createElement('meta');
12 metaEl.name = 'viewport';
13 metaEl.content = 'initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale;
14 docEl.firstElementChild.appendChild(metaEl);
15 var recalc = function() {
16 var width = docEl.clientWidth;
17 if (width / dpr > pageWidth) {
18 width = pageWidth * dpr;
19 }
20 // 乘以100,px : rem = 100 : 1
21 docEl.style.fontSize = 100 * (width / pageWidth) + 'px';
22 };
23 recalc()
24 if (!doc.addEventListener) return;
25 win.addEventListener(resizeEvt, recalc, false);
26 })(document, window);
  • 二、设置viewport的scale,缩放视口
 1 var view_timer = null;
2 function viewPort(userAgent, pageWidth) {
3 var oView = document.getElementById('viewport');
4 if (oView) {
5 document.head.removeChild(oView);
6 }
7 if (!pageWidth) {
8 pageWidth = 750;
9 }
10 var screen_w = parseInt(window.screen.width),
11 scale = screen_w / pageWidth;
12
13 var creat_meta = document.createElement('meta');
14 creat_meta.name = 'viewport';
15 creat_meta.id = 'viewport';
16 if (/Android (\d+\.\d+)/.test(userAgent)) {
17 var version = parseFloat(RegExp.$1);
18 if (version > 2.3) {
19 creat_meta.content = 'width=' + pageWidth + ', initial-scale = ' + scale + ',user-scalable=1, minimum-scale = ' + scale + ', maximum-scale = ' + scale + ', target-densitydpi=device-dpi';
20 } else {
21 creat_meta.content = '"width=' + pageWidth + ', target-densitydpi=device-dpi';
22 }
23 } else {
24 if(window.orientation=='-90' || window.orientation == '90'){
25 scale = window.screen.height / pageWidth;
26 creat_meta.content = 'width=' + pageWidth + ', initial-scale = ' + scale + ' ,minimum-scale = ' + scale + ', maximum-scale = ' + scale + ', user-scalable=no, target-densitydpi=device-dpi';
27 }
28 else{
29 creat_meta.content = 'width=' + pageWidth + ', initial-scale = ' + scale + ' ,minimum-scale = ' + scale + ', maximum-scale = ' + scale + ', user-scalable=no, target-densitydpi=device-dpi';
30 }
31 }
32 document.head.appendChild(creat_meta);
33 }
34 viewPort(navigator.userAgent);
35
36 window.onresize = function() {
37 clearTimeout(view_timer);
38 view_timer = setTimeout(function(){
39 viewPort(navigator.userAgent);
40 }, 500);
41 }

H5自适应的更多相关文章

  1. 移动h5自适应布局

    问题一,分辨率Resolution适配:不同屏幕宽度,html元素宽高比和字体大小,元素之间的距离自适应,使用rem单位. 问题二,单位英寸像素数PPI适配:使用rem单位,文字会发虚.段落文字,使用 ...

  2. H5自适应屏幕分辨率大小

    说明: ①:H5自适应不同分辨率的设备,其实主要就一句 <meta name="viewport" content="width=device-width,init ...

  3. 最佳移动端h5自适应rem适配方案

    一.利用lib-flexible.postcss-plugin-px2rem插件 进行移动端rem适配. 1.第一 引入lib-flexible . 安装lib-flexible: npm i lib ...

  4. 【笔记】H5自适应(待)

    参考: 1.盒子模型:http://www.cnblogs.com/sunyunh/archive/2012/09/01/2666841.html 2.浮动:http://www.w3school.c ...

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

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

  6. asp.net mvc中使用jquery H5省市县三级地区选择控件

    地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...

  7. 移动端Web适配的两种做法思路总结

    看了几篇文章,理一下网易跟淘宝移动端适配的思路,主要是参考 从网易与淘宝的font-size思考前端设计稿与工作流 像素相关概念 物理像素(physical pixel) 一个物理像素是显示器(手机屏 ...

  8. JEECMS v8 发布,java 开源 CMS 系统

    JEECMSv8 是国内java开源CMS行业知名度最高.用户量最大的站群管理系统,支持栏目模型.内容模型交叉自定义.以及具备支付和财务结算的内容电商为一体:  对于不懂技术的用户来说,只要通过后台的 ...

  9. 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用

    不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...

  10. 移动端rem适配布局

    dome如下: <!doctype html><html><head> <meta charset="UTF-8" /> <m ...

随机推荐

  1. K210 调节颜色阈值识别红绿黄三色

    官方在机器视觉的API中提供了寻找绿色色块的例程 https://wiki.sipeed.com/soft/maixpy/zh/api_reference/machine_vision/image/i ...

  2. Spring HandlerInterceptor工作机制

    本文以一个通过正常注册拦截器流程注册拦截器失败的实际场景,来带领大家阅读源码,体会Spring的HandlerInterceptor拦截器整个工作流程 简单认识 org.springframework ...

  3. java实现的类似于sql join操作的工具类,通用递归,最低需要java8

    直接上代码,缺包的自行替换为自己项目中存在的 import java.util.ArrayList; import java.util.Collection; import java.util.Has ...

  4. [Python] 今天开始学习Python3了, 纪念一下

    #! /usr/bin/env python3 import time print("你好, 请告诉我你的名字.") name = input("名前: ") ...

  5. vivo数据中心网络链路质量监测的探索实践

    作者:vivo 互联网服务器团队- Wang Shimin 网络质量监测中心是一个用于数据中心网络延迟测量和分析的大型系统.通过部署在服务器上的Agent发起5次ICMP Ping以获取端到端之间的网 ...

  6. RK3568开发笔记(十一):开发版buildroot固件移植一个ffmpeg播放rtsp的播放器Demo

    前言   目标开发任务还有个功能,就是播放rtsp摄像头,当然为了更好的坐这个个,我们必须支持rtsp播放失败之后重新尝试,比如5s重新尝试打开一次,从而保障联网后重新打开,然后达成这个功能.   D ...

  7. 探索Lighthouse性能分数计算背后的奥秘

    作为开发我们都知道,页面性能很重要,一个性能良好的页面可以给用户带来非常好的用户体验.那么,怎么能知道自己写的页面性能是好是坏呢? Lighthouse 是Chrome提供给开发者用来测量页面性能的工 ...

  8. SQL函数升序Asc,降序Desc使用总结

    关键字-升序Asc及降序Desc的使用语法 对某一结果集按列进行升序或降序排列即:结果集 Order by 列名/数字 Asc/Desc. 一.Asc,Desc排序讲以下5点 1.不写关键字Asc/D ...

  9. daffodil

    import java.util.ArrayList; public class Daffodil { /** * 打印出100-999之间所有的"水仙花数",所谓"水仙 ...

  10. Arduino – Turn LED ON and OFF With Button

    In this Arduino tutorial I will show you how to turn an LED on and off with a push button. In fact, ...