媒体查询

媒体查询放到后面,普通样式放在前面
终于等来了CSS3的Media Queries,可以让我们针对不同的设备场景使用不同的CSS
页面有些部分需要在打印的时候隐藏或者变大,这时候可以使用media使某些style只在打印的时候生效

@media print {
   /* 适用于印刷的样式 */
}

@media是一种指令,告诉浏览器这是媒体查询。
常用的媒体类型有

  1. all(所有),适用于所有设备。
  2. handheld(手持),用于手持设备。
  3. print(印刷),用于分页材料以及打印预览模式下在屏幕上的文档视图。
  4. projection(投影),用于投影演示文稿,例如投影仪。
  5. screen(屏幕) ,主要用于计算机屏幕。

CSS 3

@media screen and (max-width: 990px){
    .container{
        background: orange;
    }
}

当媒体类型匹配且表达式为真的时候,对应style就会其作用,除非使用not或者only操作符,否则媒体类型不是必需的,默认代表所有媒体类型。

操作符

and
and操作符用于将多个media feature组合成一个查询,同时用于组合media type 和media feature,一个基本的media query类似这样,一个meidia feature作用于所有media type

@media (min-width: 700px) { ... }

但是如果只想在横向显示时应用就可以使用and操作符把media type和media feature结合起来

@media (min-width: 700px) and (orientation: landscape) { ... }

这样上面的media query只有在可视窗口(viewport)最小是700px并且是横向显示的时候才返回true,如果还想进一步限制设备为tv可以这样

@media tv and (min-width: 700px) and (orientation: landscape) { ... }

逗号分隔的列表
在使用逗号分隔的查询列表中每个查询都被视为一个独立的查询,任何本查询中的作用符不影响其他查询,只要有一个查询返回true,style就会被作用。

举例来说,如果希望特定style在viewport最小宽度为700px或手持式设备上生效,可以这么写:

@media (min-width: 700px), handheld and (orientation: landscape) { ... }

not
not操作符作用域整个查询,所以只有在整个查询返回false的情况下使用not后才会返回true。当使用逗号分隔的列表的时候not作用于邻近的查询,而不会作用于每个查询

@media not all and (monochrome) { ... }

查询其实会这样起作用

@media not (all and (monochrome)) { ... }

而不是这样

@media (not all) and (monochrome) { ... }

对于逗号分隔的列表

@media not screen and (color), print and (color)

查询是这样子的

@media (not (screen and (color))), print and (color)

only
only操作符用于阻止不支持带有media feature的media queries的浏览器应用特定style

<link rel="stylesheet" media="only screen and (color)" href="example.css" />

media features
有以下常用的media feature

  • width:浏览器宽度

  • height:浏览器高度

  • device-width:设备屏幕分辨率的宽度值

  • device-height:设备屏幕分辨率的高度值

  • orientation:浏览器窗口的方向纵向还是横向,当窗口的高度值大于等于宽度时该特性值为portrait,否则为landscape

  • aspect-ratio:比例值,浏览器的纵横比

  • device-aspect-ratio:比例值,屏幕的纵横比

  • color:设备使用多少位的颜色值,如果不是彩色设备,值为0

  • color-index:色彩表的色彩数

  • monochrome:单色帧缓冲器每个像素的字节

  • resolution:分辨率值,设备分辨率值

  • scan:电视机类型设备扫描方式,progressive或interlace

  • grid:只能指定两个值0或1,是否基于栅格的设备

如何引入media

有两种常用的引入方式
link方法引入

<link rel="stylesheet" type="text/css" href="styleB.css"  media="screen and (min-width: 600px) and (max-width: 800px)">

@media引入

@media screen and (min-width: 600px) and (max-width: 800px){

    选择器{

        属性:属性值;

    }

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Media Queries 自适应阶段 自从有了不同屏幕的尺寸,我们就开始尝试自适应了 居中 虽然不能让所有屏幕都...
    DeeJay_Y阅读 4,216评论 0 0
  • 大家好,我是IT修真院郑州分院第四期的学员汪开放,一枚正直纯洁善良的web程序员 今天给大家分享一下,媒体查询如何...
    小白的前端修真梦阅读 10,707评论 0 2
  • 大家好,我是IT修真院郑州分院第四期的学员汪开放,一枚正直纯洁善良的web程序员 今天给大家分享一下,媒体查询如何...
    小白的前端修真梦阅读 3,841评论 0 1
  • CSS3 媒体查询与响应式布局 第一章 序论 现今每天都有更多的手机和平板电脑问市。消费者能够拥有可想象到的各种规...
    whitsats阅读 10,328评论 0 10
  • 一 当圆通手写面单 省-市-县 都完整时: 可以输入:省县、市县、县 进行查询记号笔。 二 当圆通手写面单只有 省...
    啊哈记号笔阅读 7,625评论 2 0

友情链接更多精彩内容