以下所有内容均是我自己理解的,可能有误,懂得大佬希望指点一下我。。

首先,写一个简单的页面。里面只有1个200*200的div

<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
div {
background-color: red;
width: 200px;
height: 200px;
}
</style>
</head> <body>
<div>
123
</div> </body>
</html>

  把他们在电脑上和在iphone8上看,会发现,同样是200px的css像素单位,竟然不一样大???原来css像素单位其实是个抽象的概念,真的显示靠的是终端设备的物理像素。

这里先引入一个概念叫dpr,dpr=物理像素/设备无关像素,设备无关像素对于web而言就是css像素。

如果说本来屏幕够大的电脑,1px的css像素就对应了1px的物理像素。但是对于移动端设备就不行啊,屏幕太小了,你稍微设一个div大点,一般的手机估计就要启动移动条了。

那怎么办?为了让我们的移动端手机把这么大的电面页面放进去,这里就要用到上面说的dpr了。比如说dpr为2的iphone 6,1px的css 就等于 2px的物理像素。

记住,物理像素可以被认为是物理元件,就当它是很小很小的显示屏。手机上的1px物理像素肯定做的比电脑上要小点。我们在为页面写上css以后,把他们放在电脑上和手机上看,差别就

出来了。电脑上一比一的显示,手机上,如果是dpr等于2的话,1px的css长度,就等于0.5倍的css长度。所以看上去就小了!!!

那问题就来了!!!这么小,我看不清楚啊!!!ok,那既然1px的css长度看上去好像缩小了一半,那想变大点的话,你就设置2px的css,这样看上去就像电脑上的1px一样了。字体也是一样的道理。

另外还有一种解决办法,用meta的viewport,我们经常会看到head里加这么一段代码:

<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0"/>

这样写完之后,大小竟然和电脑上显示的完全一致????什么鬼呢???我感觉了一下,就像我们按住ctr和+的组合键,放大着看了一样。

其实这个scale = 1/dpr。 物理像素是物理元件,是不可能变化了,那只能是css像素缩放了,反正他只是个抽象的概念嘛!!!

好!其实内容已经介绍完了,我们拿ip6为例,本来dpr=2的,scale = 1/dpr = 1/2 = 0.5的,但是你强行写成了1,这样就相当于你把原本200px的css像素,放大成了400px的css像素。这样不就电脑和

手机上显示一样了吗!!!

如果你在别的地方,看乱七八糟一大堆介绍viewport的概念的,什么理想的viewport,布局的viewport,视觉的viewport这种觉得很烦的话,你就记住物理像素是物理元件,改变不了的!!想缩放,就只能

去改变css大小!!!,我们在meta里设置viewport就是缩放css大小!!!

viewport大白话的更多相关文章

  1. CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口

    CSharpGL(35)用ViewPort实现类似3DMax那样的把一个场景渲染到4个视口 开始 像下面这样的四个视口的功能是很常用的,所以我花了几天时间在CSharpGL中集成了这个功能. 在CSh ...

  2. 移动WEB开发之viewport

    问题: 在codepen上写了一个响应式页面,调试的时候没有问题.结果放到网站上,在手机上打开之后竟然和在电脑中的布局是一样的.         查阅资料之后知道响应式布局应该有这样一句话:<m ...

  3. viewport理解

    viewport预备知识 dpr === dppx dpr:device pixel ratio 设备像素比 dppx:Number of dots per px unit 每像素有多少点 . 1dp ...

  4. 移动WEB viewport 相关知识

    了解移动web viewport的知识,主要是为了切图时心中有数.本文主要围绕一个问题:切图时怎样设置<meta name="viewport">相关参数?围绕这个问题 ...

  5. 理解SVG的viewport,viewBox,preserveAspectRatio

    万丈高楼平地起,基础很重要. viewport 表示SVG可见区域的大小,或者可以想象成舞台大小,画布大小. <svg width="500" height="30 ...

  6. 移动端开发viewport深入理解(转)

    一.viewport的概念   移动设备上的viewport就是设备的屏幕上能用来显示我们的网页的那一块区域,就是浏览器上用来显示网页的那部分区域,但viewport不局限于浏览器可视区域 的大小,它 ...

  7. 移动前端开发之viewport的深入理解

    在移动设备上进行网页的重构或开发,首先得搞明白的就是移动设备上的viewport了,只有明白了viewport的概念以及弄清楚了跟viewport有关的meta标签的使用,才能更好地让我们的网页适配或 ...

  8. HTML5开发手机应用--viewport的作用

    在用HTML5开发手机应用或手机网页时,<head>部分总会有如下一段代码,这段代码到底什么意思呢.在网上,大家会得到很多答案.我从网上搜集了部分介绍,整理一下,以留备用. <met ...

  9. 从viewport发现小米手机参数不一致

    想要在移动web领域有所深造的小伙伴,第一关要过的就是逻辑像素与设备像素之间的关系. 初入移动web,一定要搞懂的几个单位(DPI.PPI.DP.PX 的详细计算方法及算法来源是什么?): dip(d ...

随机推荐

  1. js和jquery获取父级元素、子级元素、兄弟元素的方法{转}

    先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当成DOM元素   原生的 ...

  2. 使用phpnow本地搭建Discuz!如何实现伪静态

    用phpnow本地搭建Discuz!如何实现伪静态 因为phpnow本身就支持伪静态,那只要看下相关的设置是否正确,写个.htaccess的文件就可以了. 一.确认httpd.conf的设置 在xxx ...

  3. eclipse ${user}和${date}

    在Eclipse中使用类的自动注释时,@author ${user}, 这个值不会随着你更改系统用户名而改变.有的人会将这个 ${user} 变量直接替换为某个固定名称. 以下方法可以修改它的值. 在 ...

  4. 下载安装配置与使用MySQL-5.7.12-winx64.zip

    第一步:下载安装包 下载 地址:http://www.mysql.com/ 第二步:解压下载包 下载好后解压文件,把内容解压到想要的位置,本例解压到“D:\Program Files\mysql-5. ...

  5. 如何转义CSV文件中的逗号

    CSV全称是:Comma Separated Values 或者 Character Separated Values. 尽管第一种说法更常见,但我觉得还是第二种说法更确切一些,因为你可以使用其它字符 ...

  6. 联想打字必须按FN+数字-fn打字

    对于联想G40.14英寸系列的本本,好多时候无意间可能把数字键锁定了. 这时候要做的是:打开运行--输入OSK--打开虚拟屏幕键盘.这时候可以找到 选项---打开数字键盘. 有时候某些电脑上没有NUM ...

  7. redis 字符串和集合操作

    字符串 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'zhangsan' ...

  8. Django的模型层(1)- 单表操作(上)

    一.ORM简介       MTV或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的 ...

  9. django重写用户模型

    重写一个UserProfile继承自带的AbstractUser # -*- coding: utf-8 -*- from __future__ import unicode_literals fro ...

  10. git命令与协同开发

    一 git命令 1.简单命令 git init # 初始化 (建立git 版本相关文件关系都放这里) git config --global user.email "you@example. ...