• 一、设置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. 强化学习 Proximal Policy Optimization (PPO)

    参考: 李宏毅老师课件 PPO = Policy Gradient 从 On-policy 到 Off-policy, 再加一些constraint Policy Gradient Basic Con ...

  2. redis分布式锁,setnx+lua脚本的java实现

    1 前言 在现在工作中,为保障服务的高可用,应对单点故障.负载量过大等单机部署带来的问题,生产环境常用多机部署.为解决多机房部署导致的数据不一致问题,我们常会选择用分布式锁. 目前其他比较常见的实现方 ...

  3. 如何获取和分析Java堆信息

    引言 在Java应用程序的开发和维护过程中,了解和分析Java堆信息是一项重要的任务.本文将介绍如何获取Java堆信息的不同方法,并提供一些分析堆信息的实用技巧. 获取Java堆信息的方法 Java虚 ...

  4. 数据可视化【原创】vue+arcgis+threejs 实现流光边界线效果

    本文适合对vue,arcgis4.x,threejs,ES6较熟悉的人群食用. 效果图: 素材: 主要思路: 先用arcgis externalRenderers封装了一个ExternalRender ...

  5. Python条件控制和循环语句(if while for )

    Python条件控制和循环语句(if while for ) 条件控制 概念:Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块 结构 1. 顺序结构 ...

  6. Paddle图神经网络训练-PGLBox代码阅读笔记

    图存储部分 paddle/fluid/framework/fleet/heter_ps graph_gpu_wrapper.h GPU图主入口 graph_gpu_ps_table.h GPU图的主要 ...

  7. 用shell命令绘制三角形

    本文旨在通过几个经典的图案来练习shell编程,涉及知识点:for循环,大小比较,基本的数学公式计算,echo小技巧.update:2019-10-17 10:13:54 初次绘制 $ for ((l ...

  8. sqoop1.4.7完全支持Hadoop3.x, Hive3.x Hbase2.x

    已经修改好 保存至云盘 自己下载 花了时间的,记得关注我... 链接:https://pan.xunlei.com/s/VNe6P6Tm1A9Q-RG5GByN08rdA1# 提取码:5nke 复制这 ...

  9. SpingCloud:Gateway+Nginx+Stomp+Minio构建聊天室并进行文件传输

    注:本人使用阿里云服务器(安装mino)+本地虚拟机(安装nginx)进行,理论上完全在本地进行也可以. 1.前期准备: 1.将本地虚拟机设置为静态ip且能ping通外网,参考网址:https://w ...

  10. JUC并发编程(1)—CompletableFuture详解

    @ 目录 CompletableFuture介绍 1.创建异步任务 2.CompletableFuture API ①. 获得结果和触发计算(get.getNow.join.complete) ②. ...