70.JS---利用原生js做手机端网页自适应解决方案rem布局

利用原生js做手机端网页自适应解决方案rem布局

刚开始我用的是下面这段代码,然后js通过外部链接引入,最后每次用手机刷新网页的时候都会出现缩略图

function getRem(pwidth, prem) {    var html = document.getElementsByTagName("html")[0];    var oWidth = document.body.clientWidth || document.documentElement.clientWidth;    html.style.fontSize = oWidth / pwidth * prem + "px";}

$(document).ready(function () {    getRem(750, 100);});


然后我试着写在html页面,也会出现短暂的缩略图,作为一个处女座的我来说,是绝对不允许的。所以我在网上找了很多代码,发现他们有的只能在电脑上F12测试,并不能用手机上面的浏览器进行测试,还有其他一些也不能兼容。最后我找到了网易的rem自适应代码。

(function(doc, win) {
    var docEl = doc.documentElement,        isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),        dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1,        dpr = window.top === window.self ? dpr : 1, //被iframe引用时,禁止缩放        dpr = 1,        scale = 1 / dpr,        resizeEvt = ‘orientationchange‘ in window ? ‘orientationchange‘ : ‘resize‘;    docEl.dataset.dpr = dpr;    var metaEl = doc.createElement(‘meta‘);    metaEl.name = ‘viewport‘;    metaEl.content = ‘initial-scale=‘ + scale + ‘,maximum-scale=‘ + scale + ‘, minimum-scale=‘ + scale;    docEl.firstElementChild.appendChild(metaEl);    var recalc = function() {        var width = docEl.clientWidth;        if (width / dpr > 750) {            width = 750 * dpr;        }        // 乘以100,px : rem = 100 : 1        docEl.style.fontSize = 100 * (width / 750) + ‘px‘;    };    recalc()    if (!doc.addEventListener) return;    win.addEventListener(resizeEvt, recalc, false);})(document, window);

经过测试,在电脑上和手机上的测试,都兼容所有分辨率的手机,并且还能随着屏幕宽度进行实时变化。这样就不用考虑 $(window).resize(function () {})

唯一的不便就是不能通过外部链接的形式引入js,只能写在每个页面的head里面,用内联的方式写进html页面。

上面的比例是750:100,按照设计图上面,所有大小都要除以100.
例:

未引入前:

body {
    width: 750px;
    height: 640px;
}

引入后:除以100并将px换成rem

body {
    width: 7.5rem;
    height: 6.4rem;
}

原文地址:https://www.cnblogs.com/sqyambition/p/10805218.html

时间: 2024-10-22 14:43:30

70.JS---利用原生js做手机端网页自适应解决方案rem布局的相关文章

手机端页面自适应解决方案—rem布局

只需在页面引入这段原生js代码就可以了 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (function (doc, win) {        var docEl = doc.documentElement,            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',            recalc = function () {     

手机端页面自适应解决方案-rem布局

rem布局 布局前插入原生js即可 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return; if(clientWidth

手机端页面自适应:rem布局

rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return;

手机端页面自适应解决方案

rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return;

rem手机端页面自适应完美解决方案(最新)

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> ! function(e) { function t(a) { if(i[a]) return i[a].exports; var n = i[a] = { exports: {},

&lt;&lt;&lt; 网页中如何利用原生js和jquery储存cookie

javascript当中的cookie机制,使应用达到了真正的全局变量的要求,cookie是浏览器提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是JavaScript本身的性质,由于cookie机制是把信息储存到硬盘,所以他可以用来做全局变量 cookie有关安全性和作用域 1.cookie可能被禁用.当用户非常注重个人隐私保护时,他很可能禁用浏览器的cookie功能:  2.cookie是与浏览器相关的.这

手机端网页返回顶部js代码

<!DOCTYPE html>  <html>  <head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>手机端网页返回顶部js代码</title>  <script src="http://libs.baidu.com/jquery/1.11.3/jquery.m

再谈React.js实现原生js拖拽效果

前几天写的那个拖拽,自己留下的疑问...这次在热心博友的提示下又修正了一些小小的bug,也加了拖拽的边缘检测部分...就再聊聊拖拽吧 一.不要直接操作dom元素 react中使用了虚拟dom的概念,目地就是要尽量避免直接操作dom元素,所以我们在对dom元素进行操作的时候需要注意,我之前为了获取form的参数就直接用了var dragBox=document.getElementById('form')去找dom,但是其实记录from的初始位置,可以在其子组件更新父组件参数的时候调用.即在MyF

移动手机端网页布局 常用的3种方式 总结

手机端网页现在已经发展的非常迅猛,很多公司度需要网页能兼容各种不同尺寸屏幕的手机. 下面我给大家讲讲我常用的3放布局方式: 1:响应式布局. 可以用px作为像素,网页进行平铺.全屏的用100%.高度可以用px写死,宽度可以用百分比.不管网页怎么拉伸,高度不变,宽度会相应的扩大. 2:em/rem  方式布局. 可以设置好html,body的字体大小,然后用不同的尺寸手机访问的时候,我们可以去修改body的字体大小,网页(网页的内容用rem设置宽度.高度)的之内容会自动进行缩放. 代码如: bod