老师,问个问题

老师,问个问题

这里的通用适配其实就是为了让css像素:物理像素 = 1:1 ,是这样吧?原本css像素:物理像素 = 1 : 2,那么为了增加css像素,自然就用到缩放。

有一点不明白,你在其他的问答中写到: 

"不同设备的dpr可能是不一样的, 如果我们不做适配,那么就会导致我们写的页面,在不同设备下打开,布局发生改变" 

为什么说布局改变,布局所用的是css像素,css像素数目不变,布局也不会变啊。不明白让比值为1:1的意义是什么?防止图片模糊?

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

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

6回答
ChangeH 2020-03-10 10:37:30

如果只是为了与设计稿一致,在750px的设计稿上的1px的边框,在350px的设计稿上我们需要用0.5px。又因为样式无法赋值小数,所以需要将页面缩小为原来的一半。

但缩小的比例与dpr没有关系啊!只和设计稿的尺寸和手机的尺寸有关系。


ChangeH 2020-03-10 10:32:41

不同意好帮手慕灰灰的说法。

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所占空间反而小)。

目前看起来能够解释的理论是:

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

一开始1px在retina屏中是占2个物理像素高,按理解是中间图片这样,可是它跨了中间的分界线,retina屏会自动补充上下物理像素。

ChangeH 2020-03-09 19:50:49

为什么在dpr为2的手机上看起来会粗?

在dpr为2的手机上1px要用2设备像素表示,但是        dpr为2的手机的设备像素的边长=0.5*dpr为1的手机的设备像素的边长。所以视觉上应该是一样粗。

好帮手慕言 2020-03-01 14:10:13

同学你好,是的,border是1px。整体上是可以这样理解的,很棒。

如果我的回答帮到了你,欢迎采纳,祝学习愉快~

提问者 安在南风 2020-02-29 17:56:40

老师,就第一点,border还是1px吧,缩放影响的是css像素与物理像素的关系。

好帮手慕夭夭 2020-02-29 14:27:57

同学你好,问题解答如下:

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这些概念工作中不会涉及的。

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

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 安在南风 #1
    老师,就第一点,border还是1px吧,缩放影响的是css像素与物理像素的关系。
    2020-02-29 17:57:14
  • 提问者 安在南风 #2
    自适应布局可以使页面随着视口变化而变化,所展示的效果不发生变化。但是border写的是固定的1px值,原先对应2个物理像素。我们通过缩放来改变css像素与物理像素的关系。这样就做到border只占1px物理像素,而页面其他物体是自适应布局,不受影响。是这样吗?
    2020-02-29 19:01:08
  • 提问者 安在南风 #3
    缩放影响到的是css像素数目,缩放后的1px 等于缩放前1px的一半,dpr不变,那么所占的物理像素也就是之前的一半。
    2020-02-29 19:11:36
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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