CSS3媒体查询:
语法:
<media_query_list>:<media_query>[,<media_query>]
<media_query>:only|not <mediaType> and <expression>[ and <expression>]
<expression>:<mediaFeature>:<value>
关键词“not”取补集,“only”不再推荐使用(not,only都是可选的),“,”用法同CSS选择器中的逗号用法,表示一种合写。

@media not|only mediaType and (mediaFeature) {
CSS Codes;
}
<link rel="stylesheet" media="not|only mediaType and (mediaFeature)" href="mystylesheet.css">
<style type="text/css" media="not|only mediaType and (mediaFeature)">
@import url("mystylesheet.css");
</style>

及:(这种可以在style标签里使用,也可以在一个css文件里使用)
@media not|only mediaType and (mediaFeature){
选择器{
属性:属性值;
}
}

媒体查询大部分都接受前缀min或max,表示大于等于或小于等于。(切记min和max对应的顺序,不要被表象所误导)
and前后必须留空格,例如:(浏览器不产生任何效果)
@media screen and(max-width:600px){
    h2{
        color:red
    }
}

媒体类型:(一些类型已从CSS3删除)
all     --用于所有设备
print   --用于打印机及打印预览
screen  --用于电脑、平板、手机屏幕(一般只用这个和all)
speech  --用于屏幕阅读器等发声设备

媒体特性:
width                --页面可见区域的宽(一般只用这个和device-width)
height               --页面可见区域的高
device-width         --设备的屏幕可见区域宽
device-height        --设备的屏幕可见区域高
aspect-ratio         --设备的width与height的比
device-aspect-ratio  --设备的device-width与device-height的比
resolution           --设备的分辨率,如96dpi, 300dpi,118dpcm
orientation          --定义height是否大于或等于width,值portrait代表是,landscape代表否
以上参数(除最后一个)均可以加max-或min-前缀。
前四个参数比较常用,单位都是CSS的绝对单位,包括px em mm cm等。
部分用法:
@media screen and (orientation:portrait){
    h2{
        color:red;
/*
页面的高>=宽,h2变红
一般用于检测设备处于横向还是纵向,portrait竖屏
*/
    }
}

@media screen and (max-aspect-ratio:4/3){
    h2{
        color:red;
/*
页面的宽比高<=4比3,h2变红
不加max或min前缀表示绝对等于,比如aspect-ratio:4/3表示只有宽比高是4/3时候才执行css代码,对于width这样之类的属性同理
*/
    }
}

@media screen and (min-resolution:96dpi){
    h2{
        color:red;
/*
设备屏幕分辨率>=96dpi,h2变红
你也可以用118dpcm这样的单位
*/
    }
}
全部参数详见:http://www.runoob.com/cssref/css3-pr-mediaquery.html

常用的几种屏幕宽度设定:
@media screen and (min-width:1200px) {
css-code;
}
@media screen and(min-width:960px) and (max-width:1199px) {
css-code;
}
@media screen and(min-width:768px) and (max-width:959px) {
css-code;
}
@media screen and(min-width:480px) and (max-width:767px) {
css-code;
}
@media screen and (max-width:479px) {
css-code;
}

使用JS动态查询媒体特征:
window.matchMedia()方法接受一个media_query语句的字符串作为参数,返回一个MediaQueryList对象,该对象有media和matches两个属性。
media:返回所查询的media_query语句字符串
matches:返回一个布尔值,表示当前环境是否匹配查询语句
注意:如果matchMedia无法解析media_query参数,matches属性返回的总是false,而不是报错
例如:
var result = window.matchMedia("screen (min-width: 600px)");
console.log(result.media); //"(min-width: 600px)"
console.log(result.matches); //true

matchMedia方法返回的MediaQueryList对象有两个方法,用来监听事件:addListener和removeListener
mql.addListener(mqCallback);
mql.removeListener(mqCallback);
注意,只有mediaQuery查询结果发生变化时,才调用指定的回调函数mqCallback,所以,如果想要mediaQuery查询未变化时,就显示相应效果,需要提前调用一次函数。

下面这个例子是当页面宽度小于1000px时,页面背景颜色为品红色;否则为淡蓝色:
var mql = window.matchMedia("(min-width: 1000px)");//mql = media query list
function mqCallback(mql){
if (mql.matches){
document.body.background = 'pink';
}else{
document.body.background = 'lightblue';
}
}
mqCallback(mql);
mql.addListener(mqCallback);
//注意,addListener触发条件是每次改变matches值时,只有true<->false才是叫做改变,true<->true或false<->false不算改变也不会触发addListener。

CSS3及JS媒体查询教程的更多相关文章

  1. 控制页面打印的2种方法(css3的media媒体查询和window.print())

    在实际开发中,有时可能会有打印的需求.下面我总结了2种打印的方法,希望对各位小伙伴有所帮助. ①:直接用window.print()方法就可以打印整个页面,下面是一个小demo <!DOCTYP ...

  2. JS媒体查询

    样式的改变使用C3的媒体查询 行为和功能的改变使用JS的媒体查询 matchMedia()方法参数可写任何一个CSS@media规则,返回的是新的MediaQueryList对象,该对象有两个属性 m ...

  3. 总结CSS3新特性(媒体查询篇)

    CSS3的媒体查询是对CSS2媒体类型的扩展,完善; CSS2的媒体类型仅仅定义了一些设备的关键字,CSS3的媒体查询进一步扩展了如width,height,color等具有取值范围的属性; medi ...

  4. Web移动前端开发-——rem+less+媒体查询,rem+flexble.js+媒体查询

    实际开发搞搞起来!!!! rem适配方案 媒体查询+rem+less 基础知识铺垫 第一步,我们需要拿到设计稿,安装设计稿的要求来设置一个合适的html字体大小. 第二步,计算元素大小的取值 页面re ...

  5. css3的@media媒体查询

    css3新功能,根据屏幕大小进行识别. 参考: http://www.runoob.com/cssref/css3-pr-mediaquery.html

  6. js媒体查询设置根字号

    !function(n){var e=n.document,t=e.documentElement,i=750,d=i/50,o="orientationchange"in n?& ...

  7. CSS3屏幕密集媒体查询

    html { font-size: 50px; } body { font-size: 24px; } @media screen and (max-width: 359px) { html { fo ...

  8. 媒体查询的应用以及在css3中的变革

    CSS一直都支持设置与媒体相关联的样式表.它们可以适应不同媒体类型的显示.例如,文档在屏幕显示时使用sans-serif字体,在打印时则使用serif字体.screen和print是两种预定义的媒体类 ...

  9. CSS Media媒体查询使用大全,完整媒体查询总结

    前面的话 一说到响应式设计,肯定离不开媒体查询media.一般认为媒体查询是CSS3的新增内容,实际上CSS2已经存在了,CSS3新增了媒体属性和使用场景(IE8-浏览器不支持).本文将详细介绍媒体查 ...

随机推荐

  1. 【蓝桥杯单片机02】LED的基本控制

    [蓝桥杯单片机02]LED的基本控制 广东职业技术学院  欧浩源 在CT107D单片机综合训练平台实现LED的基本控制和其他单片机开发平台不一样,不单单是控制几个LED实现跑马灯这么简单.因为在这个平 ...

  2. 修改DeDe标签Pagelist分页样式,自定义分页样式

    我们在用dede仿站的时候,调用文章列表页的分页时,我们会用到: {dede:pagelist listitem="info,index,end,pre,next,pageno" ...

  3. dedecms后台怎么添加发布软件?织梦后台软件内容管理

    使用织梦cms有很多的功能,其中有一个是在dedecms后台添加发布软件,然后在前台大家可以直接下载软件,在织梦cms后台怎么添加发布软件呢?下面是织梦软件内容管理的主要操作步骤. 使用织梦cms有很 ...

  4. 邓_Excal

    --------------------------------------------------------------------- 快速输入固定文字 有一些固定的词组,输入 1 个.2 个,貌 ...

  5. As a Start - 毫厘之间,宇宙之外

    序 突然想聊聊多重宇宙——多重宇宙,这听上去像是一个科幻概念,但是严肃思考这一个问题时,将会带我们进入一个全新的格局和世界. 对宇宙学家而言,研究多重宇宙并不仅仅是为了猜测平行世界里某一历史事件是否有 ...

  6. mysql alter总结

    mysql alter总结(转载) 1:删除列 ALTER TABLE [表名字] DROP [列名称] 2:增加列 ALTER TABLE [表名字] ADD [列名称] INT NOT NULL  ...

  7. python简单词频统计

    任务 简单统计一个小说中哪些个汉字出现的频率最高 知识点 文件操作 字典 排序 lambda 代码 import codecs import matplotlib.pyplot as plt from ...

  8. 2017-06-24(chgrp umask alias unalias)

    chgrp chgrp  组名  文件名 chgrp root newfile   将newfile的所属组修改为root umask umask 查看默认权限 0 022 文件的特殊权限 文件的默认 ...

  9. scrapy_Response and Request

    scrapy中重要的两个类是什么? Requests.Response 什么是Requests? 网页下载 有哪些参数? url callback headers     # 头部信息 cookie ...

  10. js_11_dom其他

    有哪些其他js? window.location.href = "跳转页面"      //   不写获得本页面url,写跳转到指定页面 confirm('内容')     // ...