编程技术文章分享与教程

网站首页 > 技术文章 正文

Web开发学习笔记(41)——CSS3(14)媒体查询

hmc789 2024-11-11 12:51:54 技术文章 2 ℃

CSS3 加入的 @media 媒体查询使得无需修改内容,便可使样式应用于某些特定的设备范围。媒体查询像是样式表的 if 语句,通过判断表达式的真假来执行特定的分支 (加载特定的样式)。

@media 直接写在 CSS 样式中,或者针对不同的媒体设备从外部链入不同的 stylesheets(外部样式表)。两种使用语法:

1. 直接写在 CSS 样式中

定义语法如下:

@media mediatype and|not|only (media feature) {
    CSS-Code;
}

一个完整的媒体查询由以下五部分组成:

  • 必须是以 @media 开头 。
  • 使用 mediatype 指定媒体(设备)类型 。
  • 使用 and | not | only 逻辑操作符构建复杂的媒体查询 。
  • 使用 media feature 指定媒体特性 。
  • CSS-Code 位置是要设置的 CSS 样式。

mediatype (媒体类型)取值范围如下:

描述

all

适用于所有设备

print

用于打印机和打印预览

screen

用于电脑屏幕,平板电脑,智能手机等

speech

用于屏幕阅读器等发声设备

被废弃的媒体类型: CSS2.1 和 Media Queries 3 定义了一些额外的媒体类型( tty, tv, projection, handheld, braille, embossed, 以及 aural ),但是它们在 Media Queries 4 中已经被废弃,并且不应该被使用。aural 类型被替换为具有相似效果的 speech 。

逻辑操作符取值范围如下:

描述

and

用于将多个媒体查询规则组合成单条媒体查询,当每个查询规则都为真时则该条媒体查询为真

not

用来排除某种设备

only

用以指定某特定媒体设备

media feature (媒体特性)常用取值如下:

描述

max-width

定义输出设备中的页面最大可见区域宽度

max-height

定义输出设备中的页面最大可见区域高度

min-width

定义输出设备中的页面最小可见区域宽度

min-height

定义输出设备中的页面最小可见区域高度

orientation

视口(viewport)的旋转方向。portrait :表示 viewport 处于纵向,即高度大于等于宽度 ; landscape :表示 viewport 处于横向,即宽度大于高度

如果你还想了解更多完整 media feature 取值,请访问:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Media_Queries/Using_media_queries

2. 针对不同的媒体设备,从外部链入不同的 stylesheets(外部样式表)

media 属性为 <link> 指定特定的媒体类型。定义语法如下:

<link rel="stylesheet" media="mediatype and|not|only (media feature)" href="mystyle.css">

其中,mediatype、逻辑操作符、media feature 的取值与第一种直接写在 CSS 样式中的取值相同,这里不再进行赘述。

二者区别在于,第一种写在 CSS 样式中是当条件成立后,执行 CSS Code , 第二种则是条件成立后,加载对应的外部样式表。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        @media screen and (max-width: 800px){
            body{
                background-color: red;
            }
        }
        @media screen and (min-width:800px){
            body{
                background-color:green;
            }
        }
        @media screen and (min-width:1024px){
            body{
                background-color:blue;
            }
        }
    </style>
</head>
<body>
    
</body>
</html>

上述代码做了如下操作:

  • 定义媒体查询规则,当设备类型为 screen 并且设备中的页面最大可见区域宽度为 800px 的时候,页面背景颜色为红色。
  • 定义媒体查询规则,当设备类型为 screen 并且设备中的页面最小可见区域宽度为 800px 的时候,页面背景颜色为绿色。
  • 定义媒体查询规则,当设备类型为 screen 并且设备中的页面最小可见区域宽度为 1024px 的时候,页面背景颜色为蓝色。

启动 8080 端口,打开 Web 服务,在浏览器中访问即可看到如下效果。

手动缩小浏览器宽度,当宽度大于 800px 且小于 1024px 时,页面显示绿色。

继续缩小浏览器宽度,当宽度小于 800px 时,页面显示红色。

Tags:

标签列表
最新留言