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 ...
随机推荐
- 三维模型OSGB格式轻量化的跨平台兼容性技术分析
三维模型OSGB格式轻量化的跨平台兼容性技术分析 在三维模型应用中,OSGB格式轻量化处理是一种常见的技术手段,可以通过数据压缩.简化.滤波等操作,降低三维模型数据的存储空间和传输带宽需求,提高应用程 ...
- Auto-GPT免费尝鲜之初体验-使用攻略和总结
写在前面的废话 ChatGPT 的交互模式,是和一个 "人" 对话聊天. 如果你想了解更多ChatGPT和AI绘画的相关知识,请参考:ChatGPT注册和变现思路,AI绘画教程汇总 ...
- 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) $,问最少删除几个线段,使得剩下线段中,有至少一个线段与所有线段相交. 分析 对 ...
- SQL Server更改表字段顺序和表结构
1.首先打开SqlServer,SSMS可视化工具.点击工具,再点选项. 2.在弹出的选项窗口中,点击Desinners,点击表设计和数据库设计器,将阻止保护勾去掉.点"确定" 3 ...
- Selenium+dddocr轻松解决Web自动化验证码识别
大家好,我是狂师,今天给大家推荐一款验证码识别神器:dddocr. 1.介绍 dddocr是一个基于深度学习的OCR(Optical Character Recognition,光学字符识别)库,用于 ...
- crontab guru
https://crontab.guru/every-5-minutes Cron Job Monitoring crontab guru The quick and simple editor fo ...
- http 500 错误
214 [Thu Sep 09 16:03:54.919334 2021] [:error] [pid 32045] [client 124.238.184.230:23796] script '/v ...
- 是因为不同的浏览器内核吗--Could not register service workers到底是怎么回事
什么是浏览器内核 浏览器内核(Rendering Engine),是浏览器最核心的部分. 它负责处理网页的HTML.CSS.JavaScript等代码,并将其转化为可视化的网页内容.即我们常说的对网页 ...
- 聊聊基于Alink库的特征工程方法
示例代码及相关内容来源于<Alink权威指南(Java版)> 独热编码 OneHotEncoder 是用于将类别型特征转换为独热编码的类.独热编码是一种常用的特征编码方式,特别适用于处理类 ...
- [WPF]原生TabControl控件实现拖拽排序功能
在UI交互中,拖拽操作是一种非常简单友好的交互.尤其是在ListBox,TabControl,ListView这类列表控件中更为常见.通常要实现拖拽排序功能的做法是自定义控件.本文将分享一种在原生控件 ...