像素与viewport浅谈

像素:

对于像素有两个概念,一个是物理像素,一个是逻辑像素。

物理像素是由屏幕自身决定的,一旦屏幕生产出来后其物理像素就固定了,我们知道屏幕之所以能够显示图像,是因为屏幕上排布着密密麻麻的小光点,通过这些光点呈现各种的色彩而显示出不同的图像,其中一个物理像素的大小就等于屏幕上光点分布的间距。

逻辑像素是抽象的,是存在于设计稿中的,也就是 CSS 中的 1px 的概念。它与设备像素是独立的,两者并不会相互影响。

但是我们编码用的是逻辑像素,而呈现在屏幕上需要涉及物理像素,所以我们需要知道每个设备中逻辑像素与设备像素之间的转换关系,所以就引出了 DPR 的概念,DPR 也是自设备屏幕出厂就已经确定了的。每个设备都有各自的 DPRDPR 可以表示设备像素与逻辑像素的关系,其公式定义为:DPR = 逻辑像素宽度/物理像素宽度. 比如拥有 Retina 屏幕的 iPhone6,它的 DPR = 2, 所以在 iPhone6 中,1个CSS像素宽度等于2个设备像素宽度。

viewport

viewport 概念最早是由苹果公司提出来的,以便于移动端的响应式开发。在移动端开发中主要有两个宽度的概念:viewport 宽度和设备宽度。

viewport宽度, 主要应用于移动端,在 iPhone 手机中,viewport 的宽度一般为980px,在安卓手机中 viewport 的宽度一般为800px;网页中的宽度是以 viewport 的宽度为基准的。

设备宽度,在设备出厂时就确定了。

理想视口:在移动端开发中,我想让网页尽可能的呈现在设备屏幕中,而又不想页面宽度过大,致使水平滚动条,所以理想的视口一般就是 viewport 宽度等于设备宽度的 viewport 。

一般的操作就是在 <head> 中加入 <meta name="viewport" content="width=device-width, initial-scale=1.0,maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">

解释:

  • width:指的是 viewport 的宽度
  • initial-scale:初始缩放因子,viewport宽度 = 设备宽度/缩放因子
  • maximum-scale:缩放因子上界
  • minimum-scale :缩放因子下界
  • user-scalable:是否可以缩放页面。

tips: widthinitial-scale 都可以设置 viewport 宽度,写其中一个也是可以的,一起写是考虑到浏览器兼容性问题,因为有些浏览器不支持 widthinitial-scale 。但是如果一起写的话,需要注意的是,当两者计算出来的 viewport 宽度不相等时,取最大的值作为 viewport 的宽度。

文献

  • https://blog.csdn.net/Marmara01/article/details/88619464
  • https://juejin.im/post/5a910349f265da4e9449cffd#heading-7
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章