扫码关注官方订阅号
如图,本人在写移动端页面时用js控制rem大小。现在出现的问题是,app页面打开的一瞬间会有一秒钟的闪动,就是页面刚加载出来时候页面的内容会很大,一秒之后又恢复正常,尝试了很多办法还是没有解决。希望有大神能帮我指导
光阴似箭催人老,日月如移越少年。
两步:
代码放进 <head> 里
<head>
不要等待 DOMContentLoaded 事件, 直接执行
DOMContentLoaded
如下代码:
!function() { var html = document.documentElement; var setFontSize = function() { var width = html.offsetWidth; if(width <= 640) { html.style.fontSize = width / 6.4+ 'px'; } else { html.style.fontSize = 100 + 'px'; } }; var timer; var setDelay = function() { return clearTimeout(timer), (timer = setTimeout(setFontSize, 150)); } window.addEventListener('pageshow', function(evt) { return evt.persisted && setDelay(); }); window.addEventListener('resize', setDelay); setFontSize(); }();
除了在head中执行JS脚本:$("html").css("font-size", 0.04 * $(window).width());
$("html").css("font-size", 0.04 * $(window).width());
还可以直接用vw(viewport width)这个单位:
vw(viewport width)
html { font-size: 4vw; }
假设宽为360px,则4vw等于4%*360=14.4px,也就是html根字体大小为14.4px,其他长度单位是这个大小的倍数,1rem就是1倍,2rem就是2倍.
可以参考 这个库
还不如用css媒体查询解决,还有不要放在domready事件里,直接执行。话说二楼刚开年就熬夜加班真可怜
(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (clientWidth > 640){ docEl.style.fontSize = 100 + 'px'; }else { docEl.style.fontSize = 100 * (clientWidth / 640) + 'px'; } }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); })(document, window);
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
两步:
代码放进
<head>里不要等待
DOMContentLoaded事件, 直接执行如下代码:
除了在head中执行JS脚本:
$("html").css("font-size", 0.04 * $(window).width());还可以直接用
vw(viewport width)这个单位:假设宽为360px,则4vw等于4%*360=14.4px,也就是html根字体大小为14.4px,其他长度单位是这个大小的倍数,1rem就是1倍,2rem就是2倍.
可以参考 这个库
还不如用css媒体查询解决,还有不要放在domready事件里,直接执行。话说二楼刚开年就熬夜加班真可怜