什么是viewport

viewport,等同于浏览器窗口。

功能:约束你网站中最顶级包含块(containing block)元素html标签。

什么是包含块(containing block)?下篇再说。

默认下,块级元素(display:block)使用父元素宽度的100%。

所以body元素和html元素一样宽,而html元素宽度就是浏览器窗口宽度。

所以你常常会遇到如下场景:

移动浏览器的viewport

viewport分为visual viewport,layout viewport,ideal viewport。

普通pc屏幕的visual viewport等于layout viewport等于ideal viewport。

移动浏览器如下,

visual viewport的样子:



layout viewport的样子:



ideal viewport的样子:





厂商自己定义了设备独立像素dips,也自定义了ideal viewport。

就把dips看做ideal viewport吧。

都是为了不同分辨率但尺寸一样的屏幕,显示同一张图片的大小要一致。

获取viewport

1.获取ideal viewpot

window.innerWidth/window.innerHeight

--移动端:

给页面设置一个如下显示的meta标签

<meta name="viewport" content="width=device-width,initial-scale=1" />

然后使用document.documentElement.clientWidth来获取。

--桌面端:

document.documentElement.clientWidth用来获取浏览器窗口宽高,不包含滚动条。

2.获取layout viewport

--移动端:

<meta name="viewport" content="width=400" />

layout viewport已经被设置成400px啦。

--桌面端:

window.innerWidhth可以拿到浏览器窗口宽高,包含滚动条。

3.获取html元素宽高

document.documentElement.offsetWidth/document.documentElement.offsetHeight

(以上单位都是css像素)

常见案例

1.设置min-width适应整个屏幕

2.基于rem的自适应布局

参考引用:

http://www.cnblogs.com/2050/p/3877280.html

http://blog.jobbole.com/44319/

http://blog.jobbole.com/44903/

https://segmentfault.com/a/1190000004403527

CSS布局基础之二认识Viewport的更多相关文章

  1. CSS布局基础

    (初级)css布局 一.单列布局1.基础知识块级元素 div p ul li dl dt 行级元素 img span input strong同一行显示.无换行2.盒子模型盒子模型 (边框border ...

  2. css布局基础总结

    前端css布局知识繁杂,实现方式多种多样.想写出高效.合理的布局,必须以深厚的css基础为前提.为了方便记忆和复习,将css布局要点记录如下.内容较多,应用方面说的不太详细,但都是很实用的点. 所谓布 ...

  3. CSS布局基础——BFC

    what's BFC? 第一次看到这个名词,我是拒绝的,css什么时候还有这个东西?于是迫不及待的google了一下,才发现原来它无时无刻不在我们的css当中,只不过它并不是一个属性,不需要我们平常使 ...

  4. [CSS布局基础]居中布局的实现方式总结

    [原创]码路工人 Coder-Power 大家好,这里是码路工人有力量,我是码路工人,你们是力量. github-pages 博客园cnblogs 做Web开发少不了做页面布局.码路工人给大家总结一下 ...

  5. CSS入门基础学习二

    我们下午继续学习CSS的入门基础,搬上你的小板凳赶快进入吧! 一.背景(background) Background-color:背景颜色 background-image (背景图片) backgr ...

  6. 精通CSS+DIV基础总结(二)

    上一篇我们已经总结了部分CSS+DIV相关知识,这篇我们接着总结,从下边几个方面学习一下: 一,我们看如何设置网页的背景,顾名思义背景可以通过颜色和图片来设置,下边我们看一下如何设置: 颜色的设置非常 ...

  7. CSS布局学习(二) - flex属性

    flex属性 定义 flex布局包括最外层的容器和内部的元素,flex属性是内部元素属性.flex属性是flex-grow, flex-shrink, flex-basis三个属性的简写 flex-g ...

  8. 移动web开发基础(二)——viewport

    本文主要研究为什么移动web开发需要设置viewport,且一般设置为<meta name="viewport" content="width=device-wid ...

  9. CSS布局总结(二)

    前言:今天实训课依旧很水,继续总结,今天主要补了一下布局的知识.响应式的作业还没做完... 一.两列布局 html部分 <div class="parent"> < ...

随机推荐

  1. 将/home目录从单独的分区迁移回/目录下

    安装系统的时候, 将/, swap, /home这三个目录放在了三个不同的分区, 现在希望将/home目录移回/目录下. 1. umount /home, 然后在/目录下创建/home_new, 通过 ...

  2. spring-session整合

    如果项目之前没有整合过spring-data-redis的话,这一步需要先做,在maven中添加这两个依赖: <dependency>     <groupId>org.spr ...

  3. asp.net identity 2.2.0 中角色启用和基本使用(五)

    建立控制器UsersAdminController 第一步:在controllers文件夹上点右键>添加>控制器, 我这里选的是“MVC5 控制器-空”,名称设置为:UsersAdminC ...

  4. Yii源码阅读笔记(二十二)

    Module类,属性的注释和构造函数的注释: <?php /** * @link http://www.yiiframework.com/ * @copyright Copyright (c) ...

  5. C++头文件,预处理详解

    C++遵循先定义,后使用的原则.就拿函数的使用来举例吧. 我看过有些人喜欢这样写函数. #include<iostream> using namespace std; int add(in ...

  6. js中eval() 方法的使用以及一些特殊的使用方式

    1.eval方法只能在非严格模式中进行使用,在use strict中是不允许使用这个方法的. 2.eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值 ...

  7. 【爬虫】python之BeautifulSoup用法

    1.爬虫 网络爬虫是捜索引擎抓取系统的重要组成部分.爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份.通过分析和过滤HTML 代码,实现对图片.文字等资源的获取. 2.pytho ...

  8. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

  9. 如何查看JDK以及JAVA框架的源码

    如何查看JDK以及JAVA框架的源码 设置步骤如下: 1.点 “window”-> "Preferences" -> "Java" -> &q ...

  10. ionic获取焦点

    功能需求:点击按钮后获取input输入框的焦点 获取焦点用jq focus()不成功,因为angular也不推荐,所以网上找了一个在focus封装成指令的方法 指令写法: .directive('my ...