简易版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(非接口 ...
随机推荐
- Makefile内嵌函数
subst字符串替换函数 $(subst <from>, <to>, <text>),把<text>中的<from>字符串替换成<to ...
- mysql密码相关
Windows中修改密码在不同场景下,有以下几种方案: 方法1:用SET PASSWORD命令,具体更新密码步骤如下: c:>mysql -u root mysql>set passw ...
- iNeedle日志下载功能问题
问题: iNeedle系统本身包含日志下载功能,主要是将web服务器中的用户访问日志按照一定条件进行筛选并下载,提供管理者分析.但是这次的测试中发现iNeedle日志下载一直会卡住,web界面显示正在 ...
- 高性能MySQL笔记 第5章 创建高性能的索引
索引(index),在MySQL中也被叫做键(key),是存储引擎用于快速找到记录的一种数据结构.索引优化是对查询性能优化最有效的手段. 5.1 索引基础 索引的类型 索引是在存储引擎层而 ...
- python脚本实现自动保留ctime最近的几个文件
使用了给字典排序的sorted方法 #!/usr/bin/env python # coding:utf-8 import os def rm_backup(rm_path,days): files_ ...
- vc6.0快捷键大全
转载! 按下Alt 键不放,点击鼠标左键拖动,可以选择文本块.可选择列: ...
- https协议了解,以及相关协议的解析
HTTPS简介 HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ...
- Ubuntu14.04桌面版基本配置
最近公司需要用Ubuntu测试一些功能,安装好后绚丽的桌面环境很是吸引人,但切换到字符界面后,发现不少地方与RHEL不一样,连ssh.vim都没有,字符界面玩得不开心. 搜了不少文章,才将基本的功能配 ...
- 将报表移动端集成到自有移动端app方法【IOS、Android】
应用场景 用户有自己的app,希望把报表的移动端[本文中以FineReport移动端为例]功能集成到他们的app里面去,而不需要安装两个app.Android端和IOS端的集成接口是不一样的,下面我们 ...
- KVM 介绍(2):CPU 和内存虚拟化
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...