简易版viewport
首先这里涉及到虚拟像素和物理像素,不管是移动设备还是pc都存在这个概念
1、在显示器精度还不是很高的年代,一个物理像素就等于一个虚拟像素,1000px的网页就占据了1000的物理像素(如果你玩过小霸王,对这个应该有很直观的影响,上面的人物都是一个格子一个格子组成的)
2、随着显示器精度的不断提高,同等面积上能容纳多个物理像素点,如果还按照一个物理像素显示一个虚拟像素的话,1000px的网页看上去就会缩成一团
3、这样的网页显然没法看,为了解决这个问题,显示器生厂商把一个虚拟像素等同于了多个物理像素(这就相当于创建了一个虚拟的中间层,这个中间层向上对接网站中的像素,向下对接显示器的像素),这样网页就不会缩成一团了
理解了上面几点才能理解为什么会有viewport(viewport也就相当于创建了一个虚拟的中间层)
1、移动设备出来之前,网站都是针对电脑设置的,宽度起码都在七八百像素以上
2、移动设备的显示屏幕要比电脑小很多,如果要在上面浏览网站肯定会出现横向竖向的滚动条
3、为了让之前做的网站能在手机上正常显示(指不出现横向竖向滚动条),就需要创建一个中间层,于是苹果首先在Safari上创建了一个viewport属性
4、这个viewport就是虚拟的中间层,称为Layout Viewport(苹果设置这个中间层的宽度为980px,也可以是其他值,这由设备自己决定,根据项目经验个人认为这个值不固定,实际多大要看网页尺寸,当设置100%时就是980px,如果某一行元素超过了980px,超出的部分依然会缩到屏幕里去,但是设置100%的那行就不会撑满整行,980px以外的地方会显示空白),手机浏览器让这个中间层填满手机屏幕,不出现滚动条,最后再把网页渲染在这个中间层上,这样pc站就以缩小的形式完整的呈现在手机上了,带来的副作用就是字看不清了,必须通过手工放大才能看清
5、后来出现了针对移动端制作的网站,问题随之出现,网页被渲染到这个中间层上了,而这个中间层是专门为pc站而生的,于是就出现了这样一种情况,1000px的网页以缩小的方式完整的显示在屏幕上了,300px的移动网站同样以缩小的方式显示在屏幕上,剩下的700px就是空白了,太丑了
6、为了解决这个问题viewport中加入了几个属性,专门用来处理为手机做的移动站,width=device-width, initial-scale=1.0, user-scalable=no,意思就是让这个中间层的宽度等同于设备的宽度,而不是那个中间层的宽度,这样移动站就能完美显示了
通过上述分析,可以得出以下结论:
当pc站不加viewport时,在电脑上能看到一个完整清晰的网站,在手机上会显示一个缩小的版本,字体图片等都会相应缩小,没有滚动条
当pc站加了viewport时,在电脑上依然能看到一个完整清晰的网站,但在手机上就会出现一个有滚动条的网站,字体图片也都很清楚,一般情况下是不要这样做的
做移动站时一定要加上viewport,否则显示会出现问题,因为手机默认是以那个980px的中间层作为渲染基础的
简易版viewport的更多相关文章
- Layui框架+PHP打造个人简易版网盘系统
网盘系统 大家应该都会注册过致命的一些网盘~如百度云.百科介绍:网盘,又称网络U盘.网络硬盘,是由互联网公司推出的在线存储服务,服务器机房为用户划分一定的磁盘空间,为用户免费或收费提供文件的存储. ...
- 前端学习 node 快速入门 系列 —— 简易版 Apache
其他章节请看: 前端学习 node 快速入门 系列 简易版 Apache 我们用 node 来实现一个简易版的 Apache:提供静态资源访问的能力. 实现 直接上代码. - demo - stati ...
- .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”
FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...
- MVC 验证码实现( 简易版)
现在网站上越来越多的验证码,使用场景也是越来越多,登陆.注册.上传.下载...等等地方,都有可能大量使用到验证码,那么制作验证码到底有多简单呢?我们一起来看下最简易版的验证码实现过程- 验证码的基本步 ...
- 简易版自定义BaseServlet
这几天在学Java Web,一直在思考Servlet重用的问题,就用java的反射机制实现自定义的简易版BaseServlet; 该方式有点像struts2 利用映射获取前端的参数.有兴趣的同学可以自 ...
- 简易版的TimSort排序算法
欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. 简易版本TimSort排序算法原理与实现 TimSort排序算法是Python和Ja ...
- html5 canvas简易版捕鱼达人游戏源码
插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...
- Python写地铁的到站的原理简易版
Python地铁的到站流程及原理(个人理解) 今天坐地铁看着站牌就莫名的想如果用Python写其工作原理 是不是很简单就小试牛刀了下大佬们勿喷纯属小弟个人理解 首先来看看地铁上显示的站牌如下: 就想这 ...
- MVC5+EF6 简易版CMS(非接口) 第四章:使用业务层方法,以及关联表解决方案
目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...
随机推荐
- 无穷滚动(Infinite scroll)的实现原理
1 无穷滚动(无限加载)与分页的比较 现在越来越多的网站或者博客的列表页开始抛弃传统的分页技术,大致的原因在于,分页明显地增加了用户的操作行为以及页面加载等待的时间,而网页浏览者往往没什么耐心. 而无 ...
- shell 面试题
1. 用sed修改test.txt的23行test为tset: sed –i ‘23s/test/tset/g’ test.txt 2. 查看/web.log第25行第三列的内容. ...
- eclipse 启动报错\workspace\.metadata\.log
eclipse启动报错,让查看.metadata\.log日志 eclipse启动不了,让查看.metadata\.log日志,上面为日志中的错误提示. 解决办法:删除 .metadata\.plug ...
- subversion 1.8.5好像不是很成熟
加:--enable-all-static1. 没找到libneon库支持,不得不用libserf。2. libserf编译要用到scons.py,所有要有python工具支持。3. 当遇到链接少ss ...
- Windows 2008 R2 Powershell 3.0
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=34595&WT.mc_id=rss_alldownloads_all
- FTP上传与下载
1.连接 先假设一个ftp地址 用户名 密码 FTP Server: 192.168.1.125 User: administrator Password: abc123 2. 打开win ...
- Medusa引擎开源了
首先贴出 Github地址 然后博客地址 相比于市面上其他的著名游戏引擎,例如Unity,cocos2dx,Unreal,Medusa游戏引擎目前还非常的简陋,目前实现的功能还集中在2D部分,3D的虽 ...
- PCA原理与实践
在对数据进行预处理时,我们经常会遇到数据的维数非常之大,如果不进行相应的特征处理,那么算法的资源开销会很大,这在很多场景下是我们不能接受的.而对于数据的若干维度之间往往会存在较大的相关性,如果能将数据 ...
- stanford coursera 机器学习编程作业 exercise4--使用BP算法训练神经网络以识别阿拉伯数字(0-9)
在这篇文章中,会实现一个BP(backpropagation)算法,并将之应用到手写的阿拉伯数字(0-9)的自动识别上. 训练数据集(training set)如下:一共有5000个训练实例(trai ...
- 基于tiny6410的madplay播放器的移植
在移植madplay之前需要先将所需要的库移植到开发板的文件系统中. 现在每个解压后的文件夹中创建一个文件夹 zlib-1.1.4.tar.gz 解压:tar xvzf zlib-1.1.4.tar ...