老师,问个问题
这里的通用适配其实就是为了让css像素:物理像素 = 1:1 ,是这样吧?原本css像素:物理像素 = 1 : 2,那么为了增加css像素,自然就用到缩放。
有一点不明白,你在其他的问答中写到:
"不同设备的dpr可能是不一样的, 如果我们不做适配,那么就会导致我们写的页面,在不同设备下打开,布局发生改变"
为什么说布局改变,布局所用的是css像素,css像素数目不变,布局也不会变啊。不明白让比值为1:1的意义是什么?防止图片模糊?
正在回答 回答被采纳积分+1
不同意好帮手慕灰灰的说法。
414的屏幕 dpr是3,1px = 3设备像素,设备像素是414*3 = 1242
375的屏幕 dpr是2,1px = 2设备像素,设备像素是375*2 = 750
360的屏幕 dpr是1,1px = 1设备像素,设备像素是360*1 = 360
假设手机宽度都是 80mm:
414屏 1设备像素 = 0.064412238325282mm; 1px = 0.19323671497585mm;
375屏 1设备像素 = 0.10666666666667mm; 1px = 0.21333333333333mm;
360屏 1设备像素 = 0.22222222222222mm; 1px = 0.22222222222222mm;
所以在css中设置的1css像素,实际在屏幕上所占的空间应该是相同的(高dpr所占空间反而小)。
目前看起来能够解释的理论是:
一开始1px在retina屏中是占2个物理像素高,按理解是中间图片这样,可是它跨了中间的分界线,retina屏会自动补充上下物理像素。
同学你好,问题解答如下:
1.第一点理解的不对,一个设备的dpr是不会变的。通用适配说白了就是解决视觉上的美观,设计师给你的设计稿中边框是1px 。由于设备的dpr不同,边框显示的会有差异。虽然我们代码中编码的边框实际大小就是1px,但是在dpr为2的手机上,视觉上显示成2px,看起来很粗 。设计师就会拿手机喊到“我要手机上显示的是1px的边框!!!”。这个时候就用到通用适配,在dpr为2时,让页面缩放比变成0.5 ,即视觉上缩小了一半。那么1px边框本来占据2个物理像素,缩放一半就是0.5px , 0.5px就是占据1个物理像素。这样在dpr为2的手机上,边框显示的也是1px,这次设计师就满意了。
老师为什么要强调是视觉上的缩放,因为边框实际大小就是1px ,这是我们在代码中设置的border:1px solid #000 ,除非你手动把边框变成border:0.5px solid #000。
另外,此时物理像素与逻辑像素的比为1:0.5 , 依旧是2:1 ,这里一定要记住设备的dpr是不会改变的。
2."不同设备的dpr可能是不一样的, 如果我们不做适配,那么就会导致我们写的页面,在不同设备下打开,布局发生改变" 这个可能之前老师表达的不太好,布局是不会变的。老师意思可能就是说在设备上显示的效果会与设计稿有差距,就像上面例子中的1px边框问题。
3. 并不是防止图片模糊,具体原因在第一条已经说过了。另外,手机显示一个页面清晰或者不清晰,就看分辨率高不高,即物理像素。而物理像素是出厂自带的,无法更改。
举一个例子,一个2px*2px的元素在dpr为1的手机上显示,就会占4个物理像素。而在dpr为2的手机上显示,就会占8个像素。所以dpr越高的, 也就表示一个手机分辨率高,显示的图像越清晰。所以老师再强调一下,给页面设置缩小,只是说从视觉上变小了,清晰度是不会改变的哦。
老师说了这么多 ,可能不太好理解。建议同学先了解一下就行。因为在实际开发中,只需要把封装的代码拿过来用就行,像物理像素,dpr这些概念工作中不会涉及的。
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星