Media 媒体查询

大家知道多媒体和媒体查询吗?这俩哥们真的没什么联系;就像雷锋和雷峰塔,没有半毛钱关系。今天看一看媒体查询:
媒体查询可以让我们根据设备显示器的特性(如视口宽度、屏幕比例、设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。媒体查询中可用于检测的媒体特性有 width 、 height 和 color (等)。使用媒体查询,可以在不改变页面内容的情况下,为特定的一些输出设备定制显示效果。

1、媒体查询操作方式

实际操作为:对设备提出询问(称作表达式)开始,如果表达式结果为真,媒体查询中的CSS被应用,如果表达式结果为假,媒体查询内的CSS将被忽略。


2、媒体查询结构

@media only screen and (min-width:40em) {
         body { background-color:blue;}
}

2.1 @media

以@media开头来表示这是一条媒体查询语句。

2.2 设备类型(默认为all)

设备类型.png

2.2.1 screen

紧跟在@media后面的是一个或者多个表达式,可以判别为真或假。在创建媒体查询时,必须以媒体类型(此处为screen)作为第一个表达式:@media only screen。与媒体类型相对应的有:print(打印机)、braille(盲文)或者all(全部)等其他类型。

2.3 and

and是一个关键字,表示有多个表达式,screen是第一个表达式,and后为另一个表达式。需前后表达式都为真时,整条查询结果才为真(也就是“且”的意思)。与and相对应的关键字有:or、not等。

2.4 (min-width:40em)

and之后的(min-width:40em)为第二个表达式(表达式在小括号内),所有的表达式都应包含在括号内,除非它是只有一个单词的媒体类型表达式(如:screen、print等)。
前缀min-表示“至少”,即“大于等于”的意思。
前缀max-表示“至多”,即“小于等于”的意思。

2.5 {}

花括号里面的内容表示整条媒体查询结果为真时的CSS 样式。
在使用媒体查询时,不要把所有样式都放入媒体查询中。正确做法是先声明适用于所有视口宽度的非媒体查询样式,然后只是用媒体查询去覆盖掉在特定宽度中用到的样式。

body {
        background-color:green;
}
@media only screen and (min-width:40em) {
        body {background-color:blue;}
}

3、在样式表链接中使用媒体查询

<link rel="stylesheet" href="styles/mainstyles.css">
<link rel="stylesheet" href="styles/widerscreen.css"
media="only and (min-width:40em)">

<link rel="stylesheet" href="styles/mainstyles.css">此样式表表示应用于所有设备,<link rel="stylesheet" href="styles/widerscreen.css" media="only and (min-width:40em)">表示仅在查询结果为真(视口宽度大于等于40em)时应用的设备。

4、媒体特性

媒体查询可以查询许多媒体特性,如:视口宽度和高度、屏幕宽度和高度、方向、宽高比和分辨率(屏幕上每个维度上的像素个数)等。

其中大多数都可以加上min-或max-前缀。

4.1 视口宽度和高度(媒体查询中最常用到的设备属性)

  • 视口宽度:width
  • 视口高度:height
    视口指的是浏览器窗口中实际包含网页的那部分区域。浏览器窗口减去页面边上的滚动条,以及顶部或底部的工具栏和菜单,剩下的区域就是视口。

4.2 屏幕宽度与高度

  • 屏幕宽度:device-width

  • 屏幕高度:device-height

    @media only screen and (max-device-width:40em) {...}

4.3 方向

  • 方向:orientation
    值为:横排方向( landscape)竖排方向(portrait)

    @media only screen and (orientation:landscape) {...}

4.4 宽高比

  • 视口宽高比:aspect-ratio
  • 设备屏幕宽高比:device-aspect-ratio

常见的显示器宽高比时16:9(如19201080或1366768像素)或者是16:10(1280800)。iphone 3和iphone 4s是3:2(480320和960640),而iPhone 5则是16:9(1136640)。安卓手机通常是4:3、3:2、16:10或16:9。

@media only screen and (min-device-aspect-ratio:16/9) {...}

4.5 分辨率

  • 设备屏幕的分辨率:resolution

    @media only screen and (resolution:3oodpi) {...}

4.6其他媒体特性

  • color
  • color-index
  • monochrome
  • scan
  • grid

5、浏览器支持

需要担心的浏览器是IE8及其更早版本。是不是还记得can i use这个网站很方便;

当需要在IE8及其更早版本中使用媒体查询时,我们可以使用条件注释使代码仅针对Internet Explorer。

条件注释也是一种查询,出现在HTML 中,而不是CSS中。

为了让网站能在老版的IE中正确显示,需要使用polyfill或利刃shive脚本。我们所要做的就是下载这个文件,然后在<head>元素中链接他,如:

<!--[if it IE 9]>
<script src="files/html5shiv.js"></script>
<![endif]>-->

js如何使用媒体查询

在利用媒体查询进行响应式布局开发时,用 js 写了一个动画,但不想让它在小屏幕上显示,这就要对屏幕尺寸进行筛选,那么在 js 中是如何使用媒体查询的呢?

    var result1 = window.matchMedia('(min-width:1200px)');
    var result2 = window.matchMedia('(min-width:992px)');
    var result3 = window.matchMedia('(min-width:768px)');
      if(result1.matches) {
            console.log("大屏幕(>=1200)");
        }else if(result2.matches){
            console.log("中等屏幕(>=992&<=1200)");
        }else if(result3.matches){
            console.log("小屏幕(>=768&<=992)");
        }else{
            console.log("超小屏幕(<=768)");
        }

又写了不少东西;其实用熟了,就好了;童鞋们读完以后是不是思路清晰了?明白了各个关键字的意思;想熟练i应用还是需要练习的;多写几个页面。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容