当前位置:首页 > 工具 > 正文内容

CSS媒体查询完全指南

访客 工具 2026年8月2日 1

概述

在网页开发中,经常需要根据不同的设备或环境应用不同的样式。CSS媒体查询(Media Queries)就是为此而生的强大工具。本文将系统介绍媒体查询的使用方法。

CSS2中的媒体类型

在CSS2时代,可以通过media属性为特定媒体类型指定样式表。例如,打印时需要隐藏某些元素或调整字体大小,就可以使用媒体类型来实现。

方式一:直接在样式表中使用

@media print {
   body { font-size: 12pt }
}

方式二:通过link标签引入

<link href="css/print.css" rel="stylesheet" media="print" />

常用的媒体类型包括:

  • all:适用于所有设备
  • handheld:手持设备
  • print:打印输出和打印预览
  • projection:投影演示设备
  • screen:计算机显示器

可以在同一个样式表中组合多个媒体类型:

@media print {
   body { font-size: 10pt }
}
@media screen {
   body { font-size: 13px }
}
@media screen, print {
   body { line-height: 1.2 }
}

CSS3媒体查询增强功能

CSS3对媒体查询进行了大幅扩展,不仅可以指定媒体类型,还能添加条件表达式来检测媒体特征。这使得响应式设计成为可能,比如为桌面电脑和平板电脑提供不同的布局。

<link href="css/mobile.css" rel="stylesheet" media="(max-width: 768px)" />

<style>
@media (max-width: 768px) {
  .sidebar {
    display: none;
  }
}
</style>

逻辑操作符

and 操作符

and用于组合多个媒体特征,或将媒体类型与媒体特征连接。

最基本的媒体查询,只包含一个媒体特征:

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

添加媒体类型限制:

@media screen and (min-width: 800px) { ... }

同时限制屏幕宽度和方向:

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

进一步限制设备类型:

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

逗号分隔列表

多个媒体查询用逗号分隔时,每个查询相互独立。只要任意一个查询返回真值,对应的样式就会生效。

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

not 操作符

not用于对整个媒体查询取反。当使用逗号分隔列表时,not只作用于紧邻的查询。

@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用于防止不支持媒体查询的浏览器应用样式,主要针对旧版浏览器的兼容性处理。

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

媒体特征详解

媒体特征(Media Features)用于描述设备的具体属性:

  • 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)

媒体查询的引入方式

方式一:link标签引入

<link rel="stylesheet" href="tablet.css" media="screen and (min-width: 600px) and (max-width: 1024px)">

方式二:@media规则

@media screen and (min-width: 600px) and (max-width: 1024px) {
    .container {
        width: 90%;
        margin: 0 auto;
    }
}

方式三:@import导入

@import url("mobile.css") screen and (max-width: 480px);

实际应用案例

iPhone 4适配

<link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" href="retina.css" />

iPad横竖屏适配

<link rel="stylesheet" media="all and (orientation: portrait)" href="portrait.css"> 
<link rel="stylesheet" media="all and (orientation: landscape)" href="landscape.css">

Android设备适配

<link rel="stylesheet" media="only screen and (max-device-width: 320px)" href="android320.css" />
<link rel="stylesheet" media="only screen and (min-device-width: 321px) and (max-device-width: 480px)" href="android480.css" />
<link rel="stylesheet" media="only screen and (min-device-width: 481px)" href="android720.css" />

浏览器兼容性

现代浏览器对媒体查询的支持非常完善,包括IE9+、Chrome、Firefox、Safari、Edge等主流浏览器。唯一需要注意的是IE8及以下版本完全不支持媒体查询,如需兼容可以使用第三方库如respond.js。

总结

CSS媒体查询是实现响应式设计的基础技术。通过合理使用媒体类型、媒体特征和逻辑操作符,可以精确控制不同设备上的样式表现,打造良好的用户体验。

相关文章

Trojan服务器搭建与配置

一、整体架构(先对齐认知)Clash Meta (PC / iOS / Android)        ↓ TLS   Trojan Server (443)        ↓     InternetTrojan 的核心是: TLS + HTTPS 流量伪装 看起来像正常网站 非常适合...

Tailscale 的详细用法

Tailscale 是一种基于 WireGuard 协议 的 零配置 VPN(虚拟私有网络)服务,让设备之间能够 安全、加密地直接连接,就像它们在同一个本地网络一样。它的核心特点是 简单、安全、跨平台。Tailscale 非常适合 没有公网 IP、两台电脑不在同一局域网 的场景。 简单来说,Tailscale 是什么?Tailscale 是一款让你的各种设备(电脑、服务器、手机...

Clash Tun 模式 导致 爱快(iKuai SD-Wan)内网域名无法访问

一、Clash  DNS 配置dns:  enable: true  listen: 0.0.0.0:53  ipv6: true  enhanced-mode: redir-host  nameserver:    - 223.5.5.5    - 223.6.6.6iKuai 内网域名 ...

深入解析Node.js运行环境与异步I/O架构

深入解析Node.js运行环境与异步I/O架构

核心定义与价值Node.js本质上是一个JavaScript运行环境,而非编程语言或应用框架。它赋予了JavaScript脱离浏览器在服务端、命令行工具及网络应用中执行的能力。其核心意义在于:用单一语言打通前后端开发壁垒。基于事件驱动与非阻塞I/O的架构特性,Node.js在处理API网关、实时通信及微服务等I/O密集型场景时表现卓越,已成为现代后端工程的主流选择。浏览器沙箱限制1995年Java...

ADO.NET SQL参数化查询的最佳实践

在 ADO.NET 中执行 SQL 查询时,参数化查询是一种关键的安全措施和性能优化手段。它通过将 SQL 命令和用户提供的数据分开处理,有效防止了 SQL 注入攻击,并有助于数据库缓存执行计划。下面总结了几种常用的参数化查询方式。 1. 使用 SqlParameter 对象(推荐) 这是最推荐的参数化查询方式。通过显式创建 SqlParameter 对象,您可以精确控制参数的类...

基于ELK的日志集中化分析系统搭建

构建统一日志管理平台的必要性 在分布式架构中,各服务节点独立运行,日志分散存储于不同主机。传统通过命令行工具如grep、awk逐个检索日志的方式,在数据量庞大时效率极低,难以实现快速定位问题。为提升运维效率,需建立集中式日志处理体系,具备日志采集、传输、存储、分析与告警能力。 ELK技术栈核心组件解析 Elasticsearch:分布式搜索引擎,支持全文检索、实时数据分析和高可用集群部署,...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。