41酱的小草莓

导航

动态调整rem基准值

假设在css样式中定义的基准值为50px;

html {font-size:50px;}

 

 
remEvent.js代码如下:
 1 /*
 2     根据屏幕大小动态调整rem基准值
 3 */ 
 4 
 5 (function (doc, win) {
 6     var html = doc.getElementsByTagName("html")[0],
 7         // orientationchange->手机屏幕转屏事件
 8         // resize->页面大小改变事件
 9         reEvt = "orientationchange" in win ? "orientationchange" : "resize",
10         reFontSize = function () {
11             var clientW = doc.documentElement.clientWidth || doc.body.clientWidth;
12             if (!clientW) {
13                 return;
14             }
15             html.style.fontSize = 50 * (clientW / 375) + "px";
16         }
17     win.addEventListener(reEvt, reFontSize);
18     // DOMContentLoaded->dom加载完就执行,onload要dom/css/js都加载完才执行
19     doc.addEventListener("DOMContentLoaded", reFontSize);
20 })(document, window);

不过存在的问题是,在pad尺寸的屏幕下,通过这个代码转换后的比率会使元素高度过大,超出屏幕,要用媒体查询来重新设置pad屏幕下的各元素height:

1 @media screen and (min-width:768px){}

 


 

这里还遇到了一个问题!在引入这个js文件的时候一开始写成这样:

1   <!-- 根据屏幕大小动态设置rem基准值 -->
2     <script type="text/javascript" src="/js/remEvent.js" charset="utf-8"></script>

导致不在本机电脑的Live Server环境下打开,屏幕就不适配。原因是文件的路径引用出错,去掉第一个‘/’,改成如下:

1     <!-- 根据屏幕大小动态设置rem基准值 -->
2     <script type="text/javascript" src="js/remEvent.js" charset="utf-8"></script>

posted on 2019-09-26 16:53  41酱的小草莓  阅读(1028)  评论(0)    收藏  举报