边框像素问题为什么解决不了
代码哪里有问题吗?
(function($) { 'use strict' var docEl = document.documentElement; // 解决dpr一边框像素问题 var dpr = window.devicePixelRatio || 1, viewPortEl = document.querySelector('meta[name="viewport"]'), maxWidth = 540, minWidth = 320; dpr = dpr >= 3 ? 3:(dpr >= 2 ? 2 :1); docEl.setAttribute('data-dpr',dpr); docEl.setAttribute('max-width', maxWidth); docEl.setAttribute('min-width', minWidth); var scale = 1/ dpr, content = 'width=device-width, initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' +scale+',user-scalable=no'; if(viewPortEl){ viewPortEl.setAttribute('content',content); }else{ viewPortEl = createElement('meta'); viewPortEl.setAttribute('name','viewport'); viewPortEl.setAttribute('content',content); document.head.appendChild(viewPortEl); } // 设置Rem的单位 function setRemUnit(){ // 获取rem基准值 var viewWidth = docEl.clientWidth; if(viewWidth && (viewWidth / dpr > maxWidth)) { viewWidth = maxWidth * dpr; }else if(viewWidth && (viewWidth / dpr < minWidth)){ viewWidth = minWidth * dpr; } var rem =viewWidth / 10; docEl.style.fontSize= rem + 'px'; } setRemUnit(); // 页面发生变化执行setRemUnit方法计算html根元素的font-size window.addEventListener('resize',setRemUnit); window.addEventListener('pageshow',setRemUnit); })(jQuery);
13
收起
正在回答 回答被采纳积分+1
4回答
好帮手慕久久
2020-09-11 11:57:20
同学你好,问题解答如下:
1. 同学的适配代码是没有问题的,所以改变dpr之后,html的fontsize就会改变,而fontsize的改变,也能从侧面说明我们的代码是对的。
2. 同学理解是对的。但是描述要优化一下,即“DPR从1改为2的时候,水平方向或垂直方向(或者说成高度方向),由原来的一个物理像素渲染一个css像素,改为用2个物理像素渲染一个CSS像素”,因此就造成了1px看起来变粗了。 解决该问题的办法就是,利用dpr将页面进行缩放,即dpr为1时,页面是375px的,而dpr=2时,我们将页面宽度变成750px,这样的转变,就解决了1px的问题。对此,目前同学里了解这么多即可,等以后实际开发了,理解的会深些。
祝学习愉快!
3.WebAPP开发与小程序
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星