这里用rem不就可以解决那个 dpr的问题了吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

8回答
好帮手慕粉 2020-08-26 18:28:14

同学你好,同学的编辑器是设置的1rem=40px吗?如果是的话,那么同学这样的效果是正确的。先看浏览器的效果,同学的根元素大小是28.8px:

http://img1.sycdn.imooc.com//climg/5f4634c409dc959d16740437.jpg

那么在当前窗口下,0.3rem就是8.64px,是不等于12px的。同学的12px转换为0.3rem是在1rem=40px的条件下的。如果同学编辑器设置的1rem=40px,那么模拟器也要调成这个,在转换的时候才能保持一致:

http://img1.sycdn.imooc.com//climg/5f463660096ec3b815560290.jpg

在写代码的时候,要统一标准才可以。

提问者 陈立天 2020-08-26 17:03:20

测试了 还是跟老师的测试不一致。我的显示器是4k的有影响不?

http://img1.sycdn.imooc.com//climg/5f46253d09516a4707661103.jpg

http://img1.sycdn.imooc.com//climg/5f46252309c8bea023800876.jpg

http://img1.sycdn.imooc.com//climg/5f4625320970987124640946.jpg

好帮手慕粉 2020-08-26 16:57:16

同学你好,关于同学的问题回答如下:

1、老师这边测试是一样的。可以先将这部分代码去掉进行测试:

http://img1.sycdn.imooc.com//climg/5f4622f4094d5c9404900197.jpg

因为如果加上了它,就会覆盖掉我们之前设置的字体大小:

http://img1.sycdn.imooc.com//climg/5f46232b092d9de114190942.jpg

当去掉后,进行测试,效果是一样的:

http://img1.sycdn.imooc.com//climg/5f462363099db89216970841.jpg

http://img1.sycdn.imooc.com//climg/5f462381097bdf7a16250843.jpg

同学要确保是在同一个模拟器下测试的。

2、如果px to rem不能使用,那同学还是使用之前的插件吧。因为每个人的电脑配置和环境都是不一样的,如果实在不行,那只能卸载重启了。

提问者 陈立天 2020-08-26 16:26:22

下载了老师说的这个插件 不能显示rem换算

http://img1.sycdn.imooc.com//climg/5f461ca109d3404f09090166.jpg

提问者 陈立天 2020-08-26 16:22:37
<!DOCTYPE html>

<html>

<head>

<title>通用适配原理自由编程</title>

<meta charset='utf-8' />

<meta name="viewport" content="width=device-width,initial-scale=1,maximun-scale=1,minmum-scale=1,user-scalable=no" />

<style lang="css">

* {

margin: 0;

padding: 0;

box-sizing: border-box;

}

html,body {

width: 100%;

height: 100%;

}

img {

width: 100%;

height: 100%;

vertical-align: top;

}

/*设计稿750px header高度100px*/

/* 1rem = font-size = 750 / 18.75 = 40,则100px = 100/40 = 2.5rem */

/* 在375px的屏幕下,header高度是50px 50/20 = 2.5rem */

.header-container {

width: 100%;

height: 2.5rem;

background: #666;

display: flex;

align-items: center;

justify-content: space-between;

padding: 0 0.25rem ;

}

.header-logo {

width: 5rem;

height: 2rem;

}

.header-download {

width: 4rem;

height: 2rem;

border-radius: 1rem;

background: rgba(242,149,242,0.9);

color: #000;

text-align: center;

font-size: 12px;

display: flex;

align-items: center;

justify-content: center;

}



[data-dpr = "2"] .header-download {

font-size:24px;
font-size: 24px;
height: 10px;

}

[data-dpr = "3"] .header-download {

font-size:36px;

}

</style>

</head>

<body>

<header class="header-container">

<div class="header-logo">

<img src="./img/logo.png" alt="慕课网">

</div>

<div class="header-download">

下载APP

</div>

</header>

<script>

(function() {

'use strict';

var docEl = document.documentElement;

var maxWidth = 540;

var minWidth = 320;

//根据dpr动态设置meta缩放

var dpr = window.devicePixelRatio || 1;

var viewportEl = document.querySelector('meta[name="viewport"]');

dpr = dpr >=3 ? 3 : (dpr >= 2 ? 2 : 1);

docEl.setAttribute('data-dpr',dpr);
docEl.setAttribute('max-width',maxWidth);
docEl.setAttribute('min-widht',minWidth);

var scale = 1/dpr;
var content = 'width=device-width,initial-scale='+scale+',maximun-scale='+scale+',minmum-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);
}

//动态设置html的font-size

setRemUnit();

window.addEventListener('resize',setRemUnit);

function setRemUnit(){
    var ratio = 18.75;
    var viewWidth = docEl.getBoundingClientRect().width || window.innerWidth;

if(maxWidth && (viewWidth/dpr > maxWidth)) {
    viewWidth = maxWidth;
}else if(minWidth && (viewWidth/dpr < minWidth)) {
    viewWidth = minWidth;
}
    docEl.style.fontSize = viewWidth / ratio + 'px';
}


})();

</script>

</body>

</html>


  • 提问者 陈立天 #1
    老师这代码你测试一下 把header-download 的font-size修改成0.3rem 之后 和原来的font-size 显示大小不一样的 是什么原因
    2020-08-26 16:23:45
好帮手慕粉 2020-08-26 16:09:17

同学你好,关于同学的问题回答如下:

1、是的,后续使用rem实现就可以了。

2、同学可以尝试下这个插件:

http://img1.sycdn.imooc.com//climg/5f4615570979121e08380337.jpg

这两个的插件作用是一样的。

3、同学是怎么操作的呢,有没有引入这个文件:

http://img1.sycdn.imooc.com//climg/5f46188109b4335d04450079.jpg

可以再截一下完整的图片,将html的font-size显示出来:

http://img1.sycdn.imooc.com//climg/5f4618a2095e403312760336.jpg

提问者 陈立天 2020-08-26 15:35:32

但是我发现这个 font-size12px 其实就相当于0.3rem  可是我设置了0.3rem的字体发现和12px的字体大小不一样是为什么?

font-size:12px

http://img1.sycdn.imooc.com//climg/5f46108309caaf4f02380141.jpg

font-size:0.3rem

http://img1.sycdn.imooc.com//climg/5f4610a8095109ef02120142.jpg


http://img1.sycdn.imooc.com//climg/5f4610b209ff97ec07941183.jpg

http://img1.sycdn.imooc.com//climg/5f4610c1097e23ae07731187.jpg

提问者 陈立天 2020-08-26 15:31:19

还有个问题就是 我用vscode 下载的那个cssrem插件 好像有点问题就是  刚开始使用1~2 次 比如 设置height:100px  他还会有个扩展的选项http://img1.sycdn.imooc.com//climg/5f460f25097b1a4208680127.jpg

第二次再写一次就没有这个选项了 怎么回事

http://img1.sycdn.imooc.com//climg/5f460f5509b2072108990244.jpg

 要重新卸载插件然后重新安装重新启动才能用 但是用了一次之后 第二次他又不会自动转换了

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师