当前位置: 首页 > news >正文

媒体查询详解

引言

媒体查询是 CSS3 的一个新的技术,它使我们可以针对不同的设备(或者说,不同的屏幕尺寸和分辨率)来应用不同的样式

媒体查询包含一个媒体类型和至少一个使用宽度、高度、颜色等条件限制的表达式。CSS 用于桌面电脑的屏幕可能在平板电脑、手机、黑白打印机以及非视觉网络浏览器上并不适用。相反,设计师可能要用一种软件解决方案来满足既多样又具有挑战性的需求。

当您调整浏览器窗口的大小,媒体查询可以使网页布局动态地改变。这是制作响应式网页设计的关键工具。

示例:

@media screen and (max-width: 600px) {body {background-color: lightblue;}
}

以上 CSS 代码表示: 如果浏览器窗口的宽度(viewport)等于或小于 600px,那么 body 的背景颜色将变为浅蓝色。

一、媒体类型

CSS中的媒体查询主要有以下媒体类型:

  1. all: 适用于所有设备。
  2. print: 主要用于打印机和打印预览模式。
  3. screen: 主要用于电脑屏幕、平板、智能手机等。
  4. speech: 适用于基于语音识别的设备。

这几种媒体类型的主要作用是根据设备的类型来应用不同的样式规则,使得网站或网页能在不同设备上有良好的显示效果。

举例说明:

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

上述代码中,定义了三组 CSS 规则。
第一组是适用于打印机或打印预览模式的,其所定义的样式将在打印界面中生效。
第二组是适用于电脑屏幕和智能手机等设备的,其所定义的样式将在这些设备的显示界面中生效。
第三组同时适用于屏幕和打印界面,其所定义的样式在两种界面都会生效。

二、媒体特性

媒体查询中的媒体特性主要包括以下几种:

  1. width and height:这两个特性主要用于描述设备显示区域的宽度和高度,可以用来调整不同设备下的网页布局。例如:
@media screen and (max-width: 600px) {body {background-color: lightblue;}
}

以上CSS规则表示,当设备的屏幕宽度小于或等于600px时,网页背景颜色变为浅蓝色。

  1. orientation:描述设备的方向,值可以是portrait(竖屏)或landscape(横屏)。例如:
@media screen and (orientation: portrait) {body {font-size: 1.2em;}
}

以上CSS规则表示,当设备处于竖屏状态时,网页字体变为1.2em。

  1. device-width and device-height:这两个特性用于描述设备的物理尺寸。例如:
@media screen and (min-device-width: 1200px) {body {margin: 0 auto;width: 1200px;}
}

以上CSS规则表示,若设备的物理屏幕宽度大于或等于1200px,网页主体将居中显示,并且宽度恒定为1200px。

  1. resolution:描述设备的分辨率。例如:
@media print and (min-resolution: 300dpi) {body {font-size: 12pt;}
}

以上CSS规则表示,如果设备的打印分辨率至少为300 dot per inch,网页字体变为12pt。

  1. aspect-ratio and device-aspect-ratio:前者描述的是显示区域的宽高比,后者描述设备物理屏幕的宽高比。例如:
@media screen and (aspect-ratio: 16/9) {body {background: url('widescreen-bg.jpg');}
}

以上CSS规则表示,如果设备的显示区域的宽高比是16:9,那么网页背景图设为widescreen-bg.jpg

以上就是媒体查询中常用的媒体特性以及它们的用途。

三、逻辑操作符

在CSS中,媒体查询使用逻辑操作符来组合不同的媒体类型和条件。以下是常见的逻辑操作符:

  1. and:使用 and 操作符可以同时匹配多个条件。例如:
@media screen and (min-width: 768px) and (max-width: 1024px) {/* 这里是一些规则 */
}

上面的代码表示只有在屏幕宽度在 768px 和 1024px 之间时才会应用这些规则。

  1. or:使用 or 操作符可以匹配其中一个条件。例如:
@media (color) or (color-index) {/* 这里是一些规则 */
}

上面的代码表示只要设备支持颜色或颜色索引,就会应用这些规则。

  1. not:使用 not 操作符可以排除某个条件。例如:
@media not screen {/* 这里是一些规则 */
}

上面的代码表示只有在非屏幕设备上才会应用这些规则。

  1. only:使用only操作符,可以隐藏样式表不会被旧的浏览器应用。这是因为老的浏览器不支持媒体查询,它们会忽略only关键字和后面的所有表达,而新的浏览器会把它作为普通的媒体查询来处理。例如:
@media only screen and (min-width: 600px) {.sidebar {display: block;}
}

在这个例子中,只有设备类型为屏幕并且视口的最小宽度为600px时,侧边栏才显示,并且这个样式只会被支持媒体查询的浏览器应用。

应用这些操作符,可以让开发者根据不同的媒体条件来设计多种布局和样式,实现响应式设计和优化用户体验。例如:

  1. 在移动端和桌面端显示不同的导航菜单:
@media screen and (max-width: 768px) {/* 移动端 */.menu {display: none;}.mobile-menu {display: block;}
}@media screen and (min-width: 769px) {/* 桌面端 */.menu {display: block;}.mobile-menu {display: none;}
}
  1. 在打印时隐藏某些元素:
@media print {.print-hidden {display: none;}
}
  1. 根据屏幕大小和朝向应用不同的背景图像:
@media screen and (orientation: portrait) {.bg-image {background-image: url(portrait.jpg);}
}@media screen and (orientation: landscape) {.bg-image {background-image: url(landscape.jpg);}
}

四、link方式引入

媒体查询可以使用link标签方便地引入:

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

上述代码的作用是在浏览器视口宽度小于或等于768px时,应用example.css样式表。

注意事项

  1. 媒体查询的条件必须包含在media属性中。基于设备特征的媒体查询,如空格、冒号和括号等,必须使用引号。

  2. link标签的href属性中放置的是具有相关媒体查询样式的css样式表路径,这个路径可以是相对路径或绝对路径。

  3. 浏览器无法理解或支持媒体查询的情况下,会无视media特性并加载样式表。

  4. 在使用的过程中如果有多个css文件,文件多了会影响性能,尽量将多个css文件合并为一个来引入。各个不同的CSS规则会按照不同的设备特性来应用。

  5. 使用媒体查询时一定要确保网站或应用可以在没有外部CSS文件的情况下正常工作。这样做将增强功能的稳健性,并优化根据设备特性应用样式的变化。

  6. 注意link标签的放置位置,一般是放置在head标签内部。

五、编写位置及顺序

媒体查询通常放在 CSS 文件的底部,或在每个 CSS 规则集后面,具体取决于逻辑和项目结构。重要的是,它们应该放在相关规则集的附近,使其易于寻找并理解上下文。

媒体查询的顺序也很重要。通常,你应该先进行一般的样式设置,然后再按照屏幕或设备的大小从小到大进行媒体查询的设置。这是由于 CSS 的层叠规则,后写的样式会覆盖先写的样式。所以当你在屏幕尺寸变大时,需要更改的样式应该在后面。

例如:

/* 通用样式 */
body {background-color: white;color: black;
}/* 小设备(小于600px) */
@media only screen and (max-width: 600px) {body {background-color: blue;}
}/* 中等设备(601px至768px) */
@media only screen and (min-width: 601px) and (max-width: 768px) {body {background-color: green;}
}/* 大设备(769px及以上) */
@media only screen and (min-width: 769px) {body {background-color: red;}
}

在上面的例子中,随着设备宽度的增大,背景色会从蓝色变为绿色,然后变为红色。这是因为后写的媒体查询会覆盖先写的媒体查询。

六、响应阈值设定

媒体查询的响应断点的阈值设定通常是基于常见设备的屏幕尺寸进行设定的,但无固定标准,主要看项目需求和目标用户的设备种类。

以下是一些常见的设备断点:

  • 小于 768px: 适用于手机及小屏设备。
  • 768px 至 1024px: 适用于平板电脑和小屏电脑设备。
  • 大于 1024px: 适用于大屏电脑和电视等设备。

例如:

/* Extra small devices (phones, 600px and down) */
@media only screen and (max-width: 600px) {...}/* Small devices (portrait tablets and large phones, 600px and up) */
@media only screen and (min-width: 600px) {...}/* Medium devices (landscape tablets, 768px and up) */
@media only screen and (min-width: 768px) {...}/* Large devices (laptops/desktops, 992px and up) */
@media only screen and (min-width: 992px) {...}/* Extra large devices (large laptops and desktops, 1200px and up) */
@media only screen and (min-width: 1200px) {...}

在这些阈值下,网页的布局、字体大小等都可能需要相应地进行调整,以提供最佳的用户体验。

然而,仅仅考虑设备尺寸是不够的,也需要考虑视口尺寸、屏幕解析度、设备方向等多个因素。切忌直接拘泥于某些设备的尺寸,应该考虑的是如何构建能够灵活适应各种情况的布局。因此有时候,根据设计的具体内容和项目需求来设定断点可能会更好些。

总结

总的来说,媒体查询是CSS3中强大的一个功能,它能够让我们根据不同的设备特性来应用不同的样式,从而实现了响应式网页设计的基础。通过本文的详细解读,我们应该明白了如何利用媒体查询来对移动设备、桌面设备、不同分辨率的设备进行样式的调整。希望本文能对你理解和使用媒体查询提供帮助,也希望你能在实际项目中灵活运用,打造适配各种设备的优秀网页设计。在未来的网页设计道路上,他会是你的重要伙伴。

相关文章:

媒体查询详解

引言 媒体查询是 CSS3 的一个新的技术&#xff0c;它使我们可以针对不同的设备&#xff08;或者说&#xff0c;不同的屏幕尺寸和分辨率&#xff09;来应用不同的样式。 媒体查询包含一个媒体类型和至少一个使用宽度、高度、颜色等条件限制的表达式。CSS 用于桌面电脑的屏幕可…...

华为数通HCIP-IGMP(网络组管理协议)

IGMP&#xff08;网络组管理协议&#xff09; 作用&#xff1a;维护、管理最后一跳路由器以及组播接收者之间的关系&#xff1b; 应用&#xff1a;最后一跳路由器以及组播接收者之间&#xff1b; 原理&#xff1a;当组播接收者需要接收某个组别的流量时&#xff0c;会向最后…...

价格管控有哪些有效的方法

品牌在面对线上店铺的低价、窜货时&#xff0c;需要及时进行干预治理&#xff0c;否则低价效应会蔓延&#xff0c;会有越来越多的店铺跟价&#xff0c;导致渠道更加混乱&#xff0c;但是管控价格也非一时之事&#xff0c;需要品牌按流程治理。 力维网络有多年价格管控经验&…...

【Docker】Docker相关基础命令

目录 一、Docker服务相关命令 1、启动docker服务 2、停止docker服务 3、重启docker服务 4、查看docker服务状态 5、开机自启动docker服务 二、Images镜像相关命令 1、查看镜像 2、拉取镜像 3、搜索镜像 4、删除镜像 三、Container容器相关命令 1、创建容器 2、查…...

掌握Python的X篇_16_list的切片、len和in操作

接上篇掌握Python的X篇_15_list容器的基本使用&#xff0c;本篇进行进一步的介绍。 文章目录 1. list的索引下标可以是负数2. 切片&#xff08;slice&#xff09;2.1 切片基础知识2.2 如何“取到尽头”2.3 按照步长取元素2.4 逆序取值 3. len函数获取lis的元素个数4. in操作符…...

给定长度值length,把列表切分成每段长度为length的N段列表,Kotlin

给定长度值length&#xff0c;把列表切分成每段长度为length的N段列表&#xff0c;Kotlin import kotlin.random.Randomfun main(args: Array<String>) {var source mutableListOf<String>()val end Random.nextInt(30) 1for (i in 0 until end) {source.add(i.…...

leetcode每日一题Day2——344. 反转字符串

✨博主&#xff1a;命运之光 &#x1f984;专栏&#xff1a;算法修炼之练气篇&#xff08;C\C版&#xff09; &#x1f353;专栏&#xff1a;算法修炼之筑基篇&#xff08;C\C版&#xff09; &#x1f433;专栏&#xff1a;算法修炼之练气篇&#xff08;Python版&#xff09; …...

ISP记1

噪声分类 空间区域 分布模型分类&#xff1a;Gaussian噪声、瑞利噪声、泊松噪声、乘性噪声、脉冲噪声、均匀分布噪声 频域谱波形分类&#xff1a;均匀分布噪声、白噪声&#xff08;噪声的功率谱为参数&#xff0c;且与图像线性无关&#xff09;1/f噪声、a f 2 f^{2} f2噪声&a…...

无线蓝牙耳机有什么值得耳机买的?几款值得买的口碑品牌盘点

蓝牙耳机是一种无线耳机&#xff0c;其通过蓝牙技术与其他设备进行连接&#xff0c;例如手机、电脑、平板电脑等。蓝牙耳机使得用户可以在不受线缆限制的情况下享受音频体验&#xff0c;而且还可以方便地进行通话&#xff0c;目前市场上有许多不同种类和品牌的蓝牙耳机&#xf…...

异步检索在 Elasticsearch 中的理论与实践

异步检索在 Elasticsearch 中的理论与实践 https://www.elastic.co/guide/en/elasticsearch/reference/8.1/async-search.html#submit-async-search 引言 Elasticsearch 是一种强大的分布式搜索和分析引擎&#xff0c;它能够快速地存储、搜索和分析大量数据。在处理大规模数据时…...

了解Unity编辑器之组件篇Physics 2D(十二)

一、Area Effector 2D区域施加力&#xff09;&#xff1a;用于控制区域施加力的行为 Use Collider Mask&#xff08;使用碰撞器遮罩&#xff09;&#xff1a;启用后&#xff0c;区域施加力仅会作用于特定的碰撞器。可以使用Collider Mask属性选择要作用的碰撞器。 Collider Ma…...

[Pytorch]手写数字识别——真·手写!

Github网址&#xff1a;https://github.com/diaoquesang/pytorchTutorials/tree/main 本教程创建于2023/7/31&#xff0c;几乎所有代码都有对应的注释&#xff0c;帮助初学者理解dataset、dataloader、transform的封装&#xff0c;初步体验调参的过程&#xff0c;初步掌握openc…...

android studio 找不到符号类 Canvas 或者 错误: 程序包java.awt不存在

android studio开发提示 解决办法是&#xff1a; import android.graphics.Canvas; import android.graphics.Color; 而不是 //import java.awt.Canvas; //import java.awt.Color;...

AWS——02篇(AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储)

AWS——02篇&#xff08;AWS之服务存储EFS在Amazon EC2上的挂载——针对EC2进行托管文件存储&#xff09; 1. 前言2. 关于Amazon EFS2.1 Amazon EFS全称2.2 什么是Amazon EFS2.3 优点和功能2.4 参考官网 3. 创建文件系统3.1 创建 EC2 实例3.2 创建文件系统 4. 在Linux实例上挂载…...

FFmpeg 打包mediacodec 编码帧 MPEGTS

在Android平台上合成视频一般使用MediaCodec进行硬编码&#xff0c;使用MediaMuxer进行封装&#xff0c;但是因为MediaMuxer支持格式有限&#xff0c;一般会采用ffmpeg封装&#xff0c;比如监控一般使用mpeg2ts格式而非MP4,这是因为两者对帧时pts等信息封装差异导致应用场景不同…...

软件测试如何推进项目进度?

在软件研发中&#xff0c;有一种思想叫TDD&#xff0c;即测试驱动开发&#xff0c;TDD是敏捷方法中的一项核心实践&#xff0c;其原理是在开发功能代码之前&#xff0c;先编写单元测试用例代码&#xff0c;对要编写的函数或类明确测试方法后&#xff0c;再进行设计与编码。 本…...

首次尝试鸿蒙开发!

今天是我第一次尝试鸿蒙开发&#xff0c;是因为身边的学长有搞这个的&#xff0c;而我也觉得我也该拓宽一下技术栈&#xff01; 首先配置环境&#xff0c;唉~真的是非常心累&#xff0c;下载一个DevEco Studio 3.0.0.993&#xff0c;然后配置环境变量这些操作不用多说&#xff…...

前端面试题-react

1 React 中 keys 的作⽤是什么&#xff1f; Keys 是 React ⽤于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识在开发过程中&#xff0c;我们需要保证某个元素的 key 在其同级元素中具有唯⼀性。在 React Diff 算法中 React 会借助元素的 Key 值来判断该元素是新近创建…...

EIP-2535 Diamond standard 实用工具分享

前段时间工作对接到了这标准的协议&#xff0c;于是简单介绍下这个标准分享下方便前端er使用的调用工具 一、标准的诞生 在写复杂逻辑的solidity智能合约时&#xff0c;经常会碰到两个问题&#xff0c;升级和合约大小限制。 升级目前有几种proxy模式&#xff0c;通过delegateca…...

【LangChain】向量存储(Vector stores)

LangChain学习文档 【LangChain】向量存储(Vector stores)【LangChain】向量存储之FAISS 概要 存储和搜索非结构化数据的最常见方法之一是嵌入它并存储生成的嵌入向量&#xff0c;然后在查询时嵌入非结构化查询并检索与嵌入查询“最相似”的嵌入向量。向量存储负责存储嵌入数…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

让AI看见世界:MCP协议与服务器的工作原理

让AI看见世界&#xff1a;MCP协议与服务器的工作原理 MCP&#xff08;Model Context Protocol&#xff09;是一种创新的通信协议&#xff0c;旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天&#xff0c;MCP正成为连接AI与现实世界的重要桥梁。…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...