zoukankan      html  css  js  c++  java
  • 关于移动端像素的一点探索,PX和ViewPort

    不做处理的情况下,一个375px宽 667px高的矩形(iphone5大小)在不同设备的显示。

    1、PC端,很大,就像一个真正的iphone5

    这时候CSS中的px,还挺正常的嘛

    2、在iphone5中显示

    小了很多很多,明明都是320x568啊?

    iphone5的320x568是它自己的视口大小,和分辨率,屏幕尺寸,对应的CSS的px一点数值上的关系都没有!

    1136x640px  这是手机的物理像素,就是手机上有多少个像素点

    4英寸  手机屏幕大小

    326ppi  像素密度,就是每英寸有多少像素点

    怎么也弄不出一个320x568出来吧

    所以说手机的物理像素是640x1136,而逻辑像素是320x568

    设备像素比 DPR 就是  物理/逻辑 = 2

    可以看到,的确是2

     但是这个2有啥用么?没有。

    是不是把当前元素宽高x2,就是640x1136了,就是手机大小了?

    还不是啊

    那这个dpr有啥用啊,也没什么卵用

    那要和手机一样大,要怎么办?

    这就有了视口这个概念

    layout-viewport

    设备浏览器默认的一个视口,其实直接看满屏幕情况下html的宽高即可

    或者用

    document.documentElement.clientWidth

    获取

     可以看到,整个手机满屏幕是980px x 1739.2px啊。

    那些个320px,640px,有啥用啊?

    根本没有用,把元素的宽设为980px就占满了

     

    在正常页面下,这有多大呢?

     这也就是为什么,设备上截图,在电脑上显示很大的原因。

    这个layout-viewport,是手机浏览器页面的大小。

    页面先按980px x 1739px来渲染,然后再等比缩放到设备的320px x 538px。不会出现滑动条

    所以元素就会显得很小很小了。

    这个320px x 538px 就是设备的visual-viewport

    这个页面还没有缩放,显示了真实大小,容易理解。

     ideal viewport

    将页面viewport设置为visual viewport,就是了

    <meta name="viewport" content="width=device-width">

    这样,我们就可以根据设备的逻辑像素 320px x 568px 来写了

     这样,PC页面和iphone5就能很好的适配了。

    但是还有一个问题呢,不同设备的viewport是不同的,不同设备之间怎么适配啊?

    所以这些情况,就不要写px这种单位了。

    可以选择100%和rem这些单位,这样元素可以适配得比较好。

    但是文字呢?

    现在一般手机,ideal viewpot差别只有10-20px,文字区别不大

    ipad pro这种超高分辨率的,设置了viewport之后,一个css像素也几乎可以像PC上面1:1显示了,所以字也不会小

    当然,实际的效果是,多个物理像素去显示一个css像素

    结论

     一、设置了

    <meta name="viewport" content="width=device-width">

    之后,1一个CSS中的px才是设备屏幕上的1px(320x568)

    其实这俩都是逻辑像素而已。

    真正的情况还是用多个物理像素去表示一个css像素了

    二、

    DPR是物理像素和逻辑像素(visual视口大小)的比值而已。与元素大小无关

    元素显示得小时因为先按照layout-viewport显示,再等比缩放到visual-viewport。

    只有设置了

    <meta name="viewport" content="width=device-width">

    之后,CSS像素和逻辑像素比例相等了。

    DPR才表示正确。

    当dpr为2时

    css中一个10x10的元素,其实是通过20x20的物理像素表示的。因为是面积比,所以就是1:4了。所以说dpr越高,越清晰。

    三、

    分辨率,就是物理像素,就是屏幕有多少个像素点,就是1080x1920这些东西

    PPI。就是每英寸有多少像素点。计算公式是

    DPR是怎么计算的呢? 分辨率/逻辑像素 就是了

    比如640/320

    四、这些东西,分开理解,不要强加关联。

  • 相关阅读:
    自己常用网站记录
    css弹性布局指定显示行数多余文字去掉用省略号代替以及弹性布局中css 卡片阴影效果
    微信小程序页面传参被截取问题
    阴影效果 css3 为什么要加 -moz-box-shadow -webkit-box-shadow -o-box-shadow,直接用box-shadow不是都能识别吗?
    css常用清除浮动方式
    什么是微信小程序云开发 它的作用是什么
    JMeter压测“java.net.SocketException: Socket closed”解决方法
    Jmeter压力测试工具安装及使用教程
    OnActionExecuting和OnActionExecuted执行顺序
    C#循环下载多个文件(把多个文件压缩成一个文件可以一次性下载)
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9696311.html
Copyright © 2011-2022 走看看