H5自适应
- 一、设置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自适应的更多相关文章
- 移动h5自适应布局
问题一,分辨率Resolution适配:不同屏幕宽度,html元素宽高比和字体大小,元素之间的距离自适应,使用rem单位. 问题二,单位英寸像素数PPI适配:使用rem单位,文字会发虚.段落文字,使用 ...
- H5自适应屏幕分辨率大小
说明: ①:H5自适应不同分辨率的设备,其实主要就一句 <meta name="viewport" content="width=device-width,init ...
- 最佳移动端h5自适应rem适配方案
一.利用lib-flexible.postcss-plugin-px2rem插件 进行移动端rem适配. 1.第一 引入lib-flexible . 安装lib-flexible: npm i lib ...
- 【笔记】H5自适应(待)
参考: 1.盒子模型:http://www.cnblogs.com/sunyunh/archive/2012/09/01/2666841.html 2.浮动:http://www.w3school.c ...
- 手机网页H5 自适应不同分辨率的屏幕 必学标签meta之viewport
viewport 语法介绍 <meta name="viewport"content=" height = [pixel_value | device-height ...
- asp.net mvc中使用jquery H5省市县三级地区选择控件
地区选择是项目开发中常用的操作,本文讲的控件是在手机端使用的选择控件,不仅可以用于实现地区选择,只要是3个级别的选择都可以实现,比如专业选择.行业选择.职位选择等.效果如下图所示: 附:本实例asp. ...
- 移动端Web适配的两种做法思路总结
看了几篇文章,理一下网易跟淘宝移动端适配的思路,主要是参考 从网易与淘宝的font-size思考前端设计稿与工作流 像素相关概念 物理像素(physical pixel) 一个物理像素是显示器(手机屏 ...
- JEECMS v8 发布,java 开源 CMS 系统
JEECMSv8 是国内java开源CMS行业知名度最高.用户量最大的站群管理系统,支持栏目模型.内容模型交叉自定义.以及具备支付和财务结算的内容电商为一体: 对于不懂技术的用户来说,只要通过后台的 ...
- 极速创建 IOS APP !涛舅舅苹果 IOS APP自助生成系统!不用证书、不用越狱、永久可用
不用签名将网页封装成苹果APP,无需苹果企业签名,IPA签名,ios签名,免越狱安装 (本方法只支持网站封装app,原生的用不了,详细请咨询客服) 近期很多朋友问我把网站变成app的方法,原因很多种, ...
- 移动端rem适配布局
dome如下: <!doctype html><html><head> <meta charset="UTF-8" /> <m ...
随机推荐
- [glibc2.23源码]阅读源码&调试,找出free_hook-0x13分配失败的原因
0x00 写在前面 发freebuf了:https://www.freebuf.com/articles/endpoint/373258.html 本次阅读源码是本人第一次,算是一个全新的开始.本次看 ...
- #Powerbi 1分钟学会,RANK函数,多字段排名函数.
一:思维导图&数据源示例 1.1思维导图 1.2示例数据源 二:参数构成 三:案例度量值 基础度量值 总销量 = CALCULATE(SUM('数据源'[销量])) 总销售额 = CALCUL ...
- GrapeCity Documents V6.0 Update 2发布,新增支持SpreadJS的.sjs文件格式
近日,GrapeCity Documents 正式迎来其V6.2 的发布更新,能够支持 SpreadJS 中 .sjs 类型的文件.这一重大更新将为用户带来更多地惊喜. .sjs文件有两个关键优势:空 ...
- Codeforces 1462F The Treasure of The Segments
题意 给\(n(1\leq n\leq 2*10^5)\)个线段$[l_i,r_i] (1≤l_i≤r_i≤10^9) $,问最少删除几个线段,使得剩下线段中,有至少一个线段与所有线段相交. 分析 对 ...
- KRPano多屏互动原理
KRPano可以实现多个屏幕之间的同步显示,主要应用到Websocket技术进行通信. 在控制端,我们需要发送当前KRPano场景的实时的视角和场景信息,可以使用如下的代码: embedpano({ ...
- windows10 jdk下载及环境配置
一.环境准备 windows10 系统 jdk 各种版本(配置大同小异) 二.下载并安装jdk 下载地址:http://www.oracle.com/technetwork/java/javase/ ...
- 搭建eureka服务注册中心,单机版
单独搭建的 搭建springboot项目 (1)pom文件 <?xml version="1.0" encoding="UTF-8"?> <p ...
- Appilot发布:打造面向DevOps场景的开源AI助手
今日,数澈软件Seal (以下简称"Seal")宣布推出面向 DevOps 场景的 AI 助手 Appilot,这款产品将充分利用 AI 大语言模型的能力为用户提供变革性的部署和应 ...
- 好用!这些工具国庆一定要研究下「GitHub 热点速览」
再过 3 天就要开始一年最长的假期--国庆长假了,这次除了宅家.出游之外,多了一个新选项:研究下哪些项目可以安排上,来辅助自己的日常开发. 你觉得一周获得 4k star 的 hyperdx 如何,它 ...
- MySQL系列之主从复制基础——企业高可用性标准、主从复制简介、主从复制前提(搭建主从的过程)、主从复制搭建、主从复制的原理、主从故障监控\分析\处理、主从延时监控及原因
文章目录 0.企业高可用性标准 *** 0.1 全年无故障率(非计划内故障停机) 0.2 高可用架构方案 1. 主从复制简介 ** 2. 主从复制前提(搭建主从的过程) *** 3. 主从复制搭建(C ...