1.媒体类型

HTML 4和CSS 2目前支持为不同的媒体类型设定专有的样式表, 比如, 一个页面在屏幕上显示时使用无衬线字体, 而在打印时则使用衬线字体, screen 和 print 是两种已定义的媒体类型, 媒体查询让样式表有更强的针对性, 扩展了媒体类型的功能;

2.媒体特性检测
媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成, 媒体查询中可用于检测的媒体特性有width、height和color(等), 使用媒体查询, 可以在不改变页面内容的情况下, 为特定的一些输出设备定制显示效果; 主要常用的是width, device-width;

width:视口宽度
height:视口高度
device-width:渲染表面的宽度(对我们来说,就是设备屏幕的宽度)
device-height:渲染表面的高度(对我们来说,就是设备屏幕的高度)
orientation:检查设备处于横向还是纵向
aspect-ratio:基于视口宽度和高度的宽高比, 一个16∶9比例的显示屏可以这样定义aspect-ratio: 16/9
device-aspect-ratio:和aspect-ratio类似, 基于设备渲染平面宽度和高度的宽高比
color:每种颜色的位数, 例如min-color: 16会检测设备是否拥有16位颜色
color-index:设备的颜色索引表中的颜色数, 值必须是非负整数
monochrome:检测单色帧缓冲区中每像素所使用的位数, 值必须是非负整数,如monochrome: 2
resolution:用来检测屏幕或打印机的分辨率,如min-resolution: 300dpi, 还可以接受每厘米像素点数的度量值, 如min-resolution: 118dpcm
scan:电视机的扫描方式,值可设为progressive(逐行扫描)或interlace(隔行扫描), 如720p HD电视(720p的p即表明是逐行扫描)匹配scan: progressive,而1080i HD电视(1080i中的i表明是隔行扫描)匹配scan: interlace
grid:用来检测输出设备是网格设备还是位图设备

在上述所有特性中, 除scan和grid之外, 都可使用min和max前缀来创建一个查询范围

3.使用媒体查询的三种方式

  1).在CSS文件引用时使用

  你是一块纵向(orientation: portrait)放置的显示屏(screen)吗?如果是则加载指定CSS文件

<link rel="stylesheet" media="screen and (orientation: portrait)" href="portrait-screen.css" />

  限制只有视口宽度大于800像素(min-width: 800px)的显示屏设备(screen)才能加载该CSS文件

<link rel="stylesheet" media="screen and (orientation: portrait) and (min-width: 800px)" href="800wide-portrait-screen.css" /> 

  限制只有{视口宽度大于800像素(min-width: 800px)的显示屏设备(screen)}或者投影仪(projection)才能加载该CSS文件

<link rel="stylesheet" media="screen and (orientation: portrait) and (min-width: 800px), projection" href="800wide-portrait-screen.css" /> 

  2).在CSS样式表中使用

  如果是显示屏(screen)并且屏幕分辨率小于等于400px(max-device-width: 400px)时h1的颜色为绿色, 注意device-width为设备显示屏宽度, width为视口宽度

@media screen and (max-device-width: 400px) {
h1 {color: green;}
}

  3).在样式表中引入其他样式表时

  如果是显示屏(screen)并且屏幕分辨率小于等于400px(max-width: 360px)时倒入phone.css文件

@import url("phone.css") screen and (max-width:360px);

  PS: 此方法会增加HTTP请求, 慎用

   Respond.js(https://github.com/scottjehl/Respond)是为Internet Explorer 8及更低版本增加媒体查询支持的最快的JavaScript工具, 但它目前无法解析CSS的@import命令

4.重置样式

  重置样式就是一组CSS声明, 用来覆盖不同浏览器渲染HTML元素时的各种默认样式, 重置样式一般会被加入到主样式文件的开头, 用来将各个浏览器的自有默认样式重置成统一表现, 确保样式表中后续追加的样式在不同浏览器中有相同的显示效果;

  例如以下:

/* http://meyerweb.com/eric/tools/css/reset/
v2.0 | 20110126
License: none (public domain)
*/ html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin:;
padding:;
border:;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
display: block;
}
body {
line-height:;
}
ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing:;
}

5.浏览器自动调整页面大小

  比如 IOS 上的 Safari 浏览器默认是在980像素宽的画布上渲染页面, 然后将画布缩小到与视口大小匹配, 所以展示大页面时内容没有被切掉

6.阻止移动浏览器自动调整页面大小

  基于WebKit核心的浏览器(比如IOS和Android的浏览器)和很多其他浏览器都支持用viewport meta元素覆盖默认的画布缩放设置, 下例为将页面放大到设备实际尺寸两倍显示的meta标签

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

  name="viewport"属性不言而喻, content="initial-scale=2.0的意思是将页面放大两倍(同理,0.5表示缩小一半,3.0表示放大3倍), 同时width=device-width告诉浏览器页面的宽度应该等于设备宽度

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

  将缩放比例设置为1.0, 这表示浏览器将按照其视口的实际大小来渲染页面, 将宽度设置为设备宽度, 意味着支持该特性的浏览器都将会按照设备宽度的实际大小来渲染页面, 设置完后任何浏览器都不再缩放页面了

7.详解viewport

  "viewport", 翻译为中文可以叫做"视区", 大家都知道移动设备的屏幕一般都比PC小很多, webkit浏览器会将一个较大的“虚拟”窗口映射到移动设备的屏幕上, 默认的虚拟窗口为980像素宽(修改viewport宽度即修改此值)(目前大部分网站的标准宽度), 然后按一定的比例(3:1或2:1)进行缩放, 也就是说当我们加载一个普通网页的时候, webkit会先以980像素(修改viewport宽度即修改此值)的浏览器标准加载网页, 然后再把整个页面全部缩小为490像素的宽度, 注意这个缩小是一个全局缩小, 也就是页面上的所有元素都会缩小, 如下图所示, 一个普通的文章页面在移动设备的效果:

  页面以980像素加载, 没有变形, 但是按比例缩放后, 很多东西用肉眼基本看不清了

  那么我们能不能人为改变webkit的视区呢?当然能, 在<head>与</head>之间加上如下视区代码:

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

  我们来看看页面加上强制视区大小命令后效果怎么样? 如下图所示:

  那么有没有更好的方法呢?比如说我们自动检测移动设备屏幕大小, 然后让内容自适应, 看下面的代码, device-width将自动检测移动设备的屏幕宽度

<meta name="viewport" content="width=device-width" />

  viewport实战:

  http://www.cnblogs.com/softlover/archive/2012/11/20/2779900.html

  http://www.3lian.com/edu/2012/04-25/26248_2.html

8.

HTML-HTML5+CSS3权威指南阅读(四、媒体查询)的更多相关文章

  1. html5+css3 权威指南阅读笔记(三)---表单及其它新增和改良元素

    一.新增元素及属性 1.表单内元素的form属性. html5: <form id="testForm"> <input type=text> </f ...

  2. HTML-HTML5+CSS3权威指南阅读(二、让IE支持HTML5标签及对CSS3 Media Query的兼容)

    兼容解决 HTML5是在低版本的浏览器(IE8-)的兼容是有限的,类似很多结构性的标 签<header>.<section>.<footer>等在IE8以下不会被识 ...

  3. HTML-HTML5+CSS3权威指南阅读(五、设备像素和CSS像素的概念)

    在这个迷你系列的文章里边我将会解释viewport,以及许多重要元素的宽度是如何工作的,比如<html>元素,也包括窗口和屏幕 这篇文章是关于桌面浏览器的,其唯一目的就是为移动浏览器中相似 ...

  4. HTML-HTML5+CSS3权威指南阅读(一、HTML5与HTML4之间的区别)

    一.HTML5与HTML4之间的区别 1. DOCTYPE 声明 1). HTML4 中为 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...

  5. HTML-HTML5+CSS3权威指南阅读(三、CSS选择器)

    1.伪元素选择器 first-line, first-letter, before, after 2.属性选择器 [attr*=val]: 如果元素的 attr 属性中包含用 val 指定的字符的话, ...

  6. HTML-HTML5+CSS3权威指南阅读(五、深入理解viewport)

    1.手机浏览器与桌面浏览器的不同 现在手机浏览器的显示分辨率与桌面浏览器差不多,但是手机的尺寸比电脑要小很多.一个没做过响应式处理的网站,在手机和电脑上显示完全一样的内容, 不可避免的会出现字体被缩小 ...

  7. HTML-HTML5+CSS3权威指南阅读(三、CSS3)

    不同的浏览器(包括-moz-代表的Mozilla Firefox, -ms-代表的Microsoft Internet Explorer等)厂商在发布正式版本之前之前, 试验各自对CSS3新特性的实现 ...

  8. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  9. Html5与CSS3权威指南 百度云下载

    Html5与CSS3权威指南 百度云下载 链接:http://pan.baidu.com/s/1hq6Dlvm 密码:php3

随机推荐

  1. 【数论】【Polya定理】poj1286 Necklace of Beads

    Polya定理:设G={π1,π2,π3........πn}是X={a1,a2,a3.......an}上一个置换群,用m中颜色对X中的元素进行涂色,那么不同的涂色方案数为:1/|G|*(mC(π1 ...

  2. 大于非负整数N的第一个回文数 Symmetric Number

    1.题目 如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式. 2.样例 1  --> 2 9  -->11 12345 -->12421 123456 --> ...

  3. pycharm直接连接mysql数据库

    1.找到view---Tool windows -- Database 2.连接 3.输入地址,账号,密码 4.如果不能使用证明少安装了插件 点击直接安装插件 5.这样就直接能在pycharm中点击刷 ...

  4. 网站服务管理系统wdcp系列教程之九

    在我们安装了网站服务管理系统wdcp之后,在使用过程中可能会出现这样或那样的疑问,下面给大家整理几点出来,方便大家学习.还有不懂得话,可以去wdlinux论坛找找相关教程. 1.wdcp如何拒绝或阻止 ...

  5. <摘录>简述configure、pkg-config、pkg_config_path三者的关系

    一.什么是configure 源码安装过程中大多会用到configure这个程序,一般的configure都是一个script,执行时可以传入必要参数告知配置项目. configure程序它会根据传入 ...

  6. Linux下Apache、PHP、MySQL默认安装路径

    Apache: 如果采用RPM包安装,安装路径应在 /etc/httpd 目录下 Apache配置文件:/etc/httpd/conf/httpd.conf Apache模块路径:/usr/sbin/ ...

  7. Promise小结

    Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resol ...

  8. java多线程加锁是对谁加锁?

    1.java多线程加锁是对谁加锁? 答:当然是对共享资源加锁啊,对谁进行访问修改,就对象进行加锁.以便使多线程按序访问此共享对象 比如: 在具体的Java代码中需要完成一下两个操作:把竞争访问的资源类 ...

  9. 关于Django迁移出现问题

    关于Django迁移出现问题 源码: #coding:utf- from django.db import models # Create your models here. class BookIn ...

  10. c++ opencv3.4 保存和读取PCA模型

    cv::PCA pca(samples, cv::Mat(), cv::PCA::DATA_AS_ROW,); FileStorage fs("pca.xml",FileStora ...