CSS Media 媒体类型

前言

  • 媒体类型允许你指定文件将如何在不同媒体呈现。该文件可以以不同的方式显示在屏幕上,在纸张上,或听觉浏览器等等。

  • 一些 CSS 属性只设计了某些媒体。

    • 例如 voice-family 属性是专为听觉用户代理。其他一些属性可用于不同的媒体类型。
    • 例如 font-size 属性可用于屏幕和印刷媒体,但有不同的值。屏幕和纸上的文件不同,通常需要一个更大的字体,sans-serif 字体比较适合在屏幕上阅读,而 serif 字体更容易在纸上阅读。
属性 描述 CSS 备注 🔗
all 用于所有的媒体设备
aural 用于语音和音频合成器
braille 用于盲人用点字法触觉回馈设备
embossed 用于分页的盲人用点字法打印机
handheld 用于小的手持的设备
print 用于打印机
projection 用于方案展示,比如幻灯片
screen 用于电脑屏幕,平板,智能手机等
speech 用于屏幕阅读器
tty 用于使用固定密度字母栅格的媒体,比如电传打字机和终端
tv 用于电视机类型的设备
display 指定 HTML 元素盒子类型
  • 注意:媒体类型名称不区分大小写。

1、@media 规则

  • @media 规则允许针对不同媒体类型可以定制不同的样式规则。例如可以针对不同的媒体类型 (包括显示器、便携设备、电视机,等等) 设置不同的样式规则。

  • 但是这些多媒体类型在很多设备上支持还不够友好。

  • 在下面的例子告诉我们浏览器屏幕上显示一个 14 像素的 Verdana 字体样式。但是如果页面打印,将是 10 个像素的 Times 字体。请注意,font-weight 在屏幕上和纸上设置为粗体。

  • 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <style>
    @media screen {
    p.test {
    font-family: verdana, sans-serif;
    font-size: 14px;
    }
    }

    @media print {
    p.test {
    font-family: times, serif;
    font-size: 10px;
    }
    }

    @media screen, print {
    p.test {
    font-weight: bold;
    }
    }
    </style>
    1
    <p class="test">Qian Chia 工作室</p>
  • 效果

    Qian Chia 工作室

2、多媒体查询

  • CSS3 的多媒体查询继承了 CSS2 多媒体类型的所有思想:取代了查找设备的类型,CSS3 根据设置自适应显示。

  • 媒体查询可用于检测很多事情,例如:

    • viewport (视窗) 的宽度与高度
    • 设备的宽度与高度
    • 朝向 (智能手机横屏,竖屏)
    • 分辨率
  • 目前很多针对苹果手机,Android 手机,平板等设备都会使用到多媒体查询。

2.1 语法

  • 多媒体查询由多种媒体组成,可以包含一个或多个表达式,表达式根据条件是否成立返回 true 或 false。

    1
    2
    3
    @media not|only mediatype and (expressions) {
    CSS 代码...;
    }
  • 如果指定的多媒体类型匹配设备类型则查询结果返回 true,文档会在匹配的设备上显示指定样式效果。

  • 除非你使用了 not 或 only 操作符,否则所有的样式会适应在所有设备上显示效果。

操作符 描述
not not 是用来排除掉某些特定的设备的,比如 @media not print(非打印设备)
only 用来定某种特别的媒体类型。对于支持 Media Queries 的移动设备来说,如果存在 only 关键字,移动设备的 Web 浏览器会
忽略 only 关键字并直接根据后面的表达式应用样式文件。对于不支持 Media Queries 的设备但能够读取 Media Type 类型的
Web 浏览器,遇到 only 关键字时会忽略这个样式文件
all 所有设备,这个应该经常看到
  • 可以在不同的媒体上使用不同的样式文件:

    1
    <link rel="stylesheet" media="mediatype and|not|only (expressions)" href="print.css">

2.2 实例

  • 使用多媒体查询可以在指定的设备上使用对应的样式替代原有的样式。

2.2.1

  • 以下实例中在屏幕可视窗口尺寸小于 600 像素的设备上修改背景颜色。

  • 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <style>
    body {
    background-color: pink;
    }

    @media screen and (max-width: 600px) {
    body {
    background-color: lightgreen;
    }
    }
    </style>
    1
    2
    <h1>重置浏览器窗口查看效果!</h1>
    <p>如果媒体类型屏幕的可视窗口宽度小于 600px ,背景颜色将改变。</p>
  • 效果


    重置浏览器窗口查看效果!


    如果媒体类型屏幕的可视窗口宽度小于 600px ,背景颜色将改变。


2.2.2

  • 以下实例在屏幕可视窗口尺寸大于 600 像素时将菜单浮动到页面左侧。

  • 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <style>
    .wrapper {
    overflow: auto;
    }
    #main {
    margin-left: 4px;
    }
    #leftsidebar {
    float: none;
    width: auto;
    }
    #menulist {
    margin: 0;
    padding: 0;
    }
    .menuitem {
    background: #CDF0F6;
    border: 1px solid #d4d4d4;
    border-radius: 4px;
    list-style-type: none;
    margin: 4px;
    padding: 2px;
    }

    @media screen and (min-width: 600px) {
    #leftsidebar {
    width: 200px;
    float: left;
    }
    #main {
    margin-left: 216px;
    }
    }
    </style>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <div class="wrapper">
    <div id="leftsidebar">
    <ul id="menulist">
    <li class="menuitem">Menu-item 1</li>
    <li class="menuitem">Menu-item 2</li>
    <li class="menuitem">Menu-item 3</li>
    <li class="menuitem">Menu-item 4</li>
    <li class="menuitem">Menu-item 5</li>
    </ul>
    </div>
    <div id="main">
    <h1>重置浏览器窗口查看效果!</h1>
    <p>在屏幕可视窗口尺寸大于 600 像素时将菜单浮动到页面左侧。</p>
    </div>
    </div>
  • 效果


    重置浏览器窗口查看效果!


    在屏幕可视窗口尺寸大于 600 像素时将菜单浮动到页面左侧。


2.2.3

  • 以下实例在屏幕可视窗口尺寸小于 600 像素时将 div 元素隐藏。

  • 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <style>
    div.example {
    background-color: yellow;
    padding: 20px;
    }
    @media screen and (max-width: 600px) {
    div.example {
    display: none;
    }
    }
    </style>
    1
    2
    3
    4
    5
    <h2>屏幕可视尺寸小于 600px 时,隐藏以下元素。</h2>

    <div class="example">我是会隐藏的元素。</div>

    <p>重置浏览器大小,查看效果。</p>
  • 效果


    屏幕可视尺寸小于 600px 时,隐藏以下元素。

    我是会隐藏的元素。

    重置浏览器大小,查看效果。


2.3 响应式媒体查询

  • 实例

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <style>
    div.img {
    border: 1px solid #ccc;
    }

    div.img:hover {
    border: 1px solid #777;
    }

    div.img img {
    width: 100%;
    height: auto;
    }

    div.desc {
    padding: 15px;
    text-align: center;
    }

    * {
    box-sizing: border-box;
    }

    .responsive {
    padding: 0 6px;
    float: left;
    width: 24.99999%;
    }

    /* @media 规则 */

    @media only screen and (max-width: 700px) {
    .responsive {
    width: 49.99999%;
    margin: 6px 0;
    }
    }

    @media only screen and (max-width: 500px) {
    .responsive {
    width: 100%;
    }
    }

    .clearfix:after {
    content: "";
    display: table;
    clear: both;
    }
    </style>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <div class="responsive">
    <div class="img">
    <a target="_blank" href="https://demo.qianchia.com/media/image/demo/demo10.png">
    <img src="https://demo.qianchia.com/media/image/demo/demo10.png" alt="图片文本描述" width="300" height="200" />
    </a>
    <div class="desc">这里添加图片文本描述</div>
    </div>
    </div>

    <div class="responsive">
    <div class="img">
    <a target="_blank" href="https://demo.qianchia.com/media/image/demo/demo11.png">
    <img src="https://demo.qianchia.com/media/image/demo/demo11.png" alt="图片文本描述" width="600" height="400" />
    </a>
    <div class="desc">这里添加图片文本描述</div>
    </div>
    </div>

    <div class="responsive">
    <div class="img">
    <a target="_blank" href="https://demo.qianchia.com/media/image/demo/demo12.png">
    <img src="https://demo.qianchia.com/media/image/demo/demo12.png" alt="图片文本描述" width="600" height="400" />
    </a>
    <div class="desc">这里添加图片文本描述</div>
    </div>
    </div>

    <div class="responsive">
    <div class="img">
    <a target="_blank" href="https://demo.qianchia.com/media/image/demo/demo13.png">
    <img src="https://demo.qianchia.com/media/image/demo/demo13.png" alt="图片文本描述" width="600" height="400" />
    </a>
    <div class="desc">这里添加图片文本描述</div>
    </div>
    </div>

    <div class="clearfix"></div>
  • 效果





    图片文本描述

    这里添加图片文本描述





    图片文本描述

    这里添加图片文本描述





    图片文本描述

    这里添加图片文本描述





    图片文本描述

    这里添加图片文本描述



  • 重置浏览器大小查看效果。

3、浏览器支持

属性
@media 21.0 9.0 3.5 4.0 9.0
  • 表格中的数字表示支持该属性的第一个浏览器版本号。
  • 紧跟在 -webkit-, -ms-, -o- 或 -moz- 前的数字为支持该前缀属性的第一个浏览器版本号。
文章目录
  1. 1. 前言
  2. 2. 1、@media 规则
  3. 3. 2、多媒体查询
    1. 3.1. 2.1 语法
    2. 3.2. 2.2 实例
      1. 3.2.1. 2.2.1
      2. 3.2.2. 2.2.2
      3. 3.2.3. 2.2.3
    3. 3.3. 2.3 响应式媒体查询
  4. 4. 3、浏览器支持
隐藏目录