媒体查询使用方法@media

本文详细介绍了CSS3 MediaQuery的使用方法,包括如何定义不同条件下的样式,以实现响应式设计。内容涵盖基本语法、媒体类型、媒体特性(如max-width、min-width)及组合使用,并涉及关键词not和only的应用。

Media Queries能在不同的条件下使用不同的样式,使页面在不同在终端设备下达到不同的渲染效果。前面简单的介绍了Media Queries如何引用到项目中,但Media Queries有其自己的使用规则。具体来说,Media Queries的使用方法如下。

@media 媒体类型and (媒体特性){你的样式}

注意:使用Media Queries必须要使用“@media”开头,然后指定媒体类型(也可以称为设备类型),随后是指定媒体特性(也可以称之为设备特性)。媒体特性的书写方式和样式的书写方式非常相似,主要分为两个部分,第一个部分指的是媒体特性,第二部分为媒体特性所指定的值,而且这两个部分之间使用冒号分隔。例如:

(max-width: 480px)
从前面表中可以得知,主要有十种媒体类型和13种媒体特性,将其组合就类似于不同的CSS集合。
但与CSS属性不同的是,媒体特性是通过min/max来表示大于等于或小于做为逻辑判断,
而不是使用小于(<)和大于(>)这样的符号来判断。接下来一起来看看Media Queries在实际项目中常用的方式。

1. 最大宽度max-width

“max-width”是媒体特性中最常用的一个特性,其意思是指媒体类型小于或等于指定的宽度时,样式生效。如:

@media screen and (max-width:480px){
 .ads {
   display:none;
  }
}

上面表示的是:当屏幕小于或等于480px时,页面中的广告区块(.ads)都将被隐藏。

2.最小宽度min-width

“min-width”与“max-width”相反,指的是媒体类型大于或等于指定宽度时,样式生效

@media screen and (min-width:900px){
.wrapper{width: 980px;}
}

上面表示的是:当屏幕大于或等于900px时,容器“.wrapper”的宽度为980px。

3.多个媒体特性使用

Media Queries可以使用关键词"and"将多个媒体特性结合在一起。也就是说,一个Media Query中可以包含0到多个表达式,表达式又可以包含0到多个关键字,以及一种媒体类型。

当屏幕在600px~900px之间时,body的背景色渲染为“#f5f5f5”,如下所示。

@media screen and (min-width:600px) and (max-width:900px){
  body {background-color:#f5f5f5;}
}
4.设备屏幕的输出宽度Device Width

在智能设备上,例如iPhone、iPad等,还可以根据屏幕设备的尺寸来设置相应的样式(或者调用相应的样式文件)。同样的,对于屏幕设备同样可以使用“min/max”对应参数,如“min-device-width”或者“max-device-width”。

<link rel="stylesheet" media="screen and (max-device-width:480px)" href="iphone.css" />

上面的代码指的是“iphone.css”样式适用于最大设备宽度为480px,比如说iPhone上的显示,这里的“max-device-width”所指的是设备的实际分辨率,也就是指可视面积分辨率。

5. not关键词

使用关键词“not”是用来排除某种制定的媒体类型,也就是用来排除符合表达式的设备。换句话说,not关键词表示对后面的表达式执行取反操作,如:

@media not print and (max-width: 1200px){样式代码}

上面代码表示的是:样式代码将被使用在除打印设备和设备宽度小于1200px下所有设备中。

6.only关键词

only用来指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器。其实only很多时候是用来对那些不支持Media Query但却支持Media Type的设备隐藏样式表的。其主要有:支持媒体特性的设备,正常调用样式,此时就当only不存在;表示不支持媒体特性但又支持媒体类型的设备,这样就会不读样式,因为其先会读取only而不是screen;另外不支持Media Queries的浏览器,不论是否支持only,样式都不会被采用。如

<linkrel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" />

在Media Query中如果没有明确指定Media Type,那么其默认为all,如:

<linkrel="stylesheet" media="(min-width:701px) and (max-width:900px)" href="mediu.css" />

另外在样式中,还可以使用多条语句来将同一个样式应用于不同的媒体类型和媒体特性中,指定方式如下所示。

<linkrel="stylesheet" type="text/css" href="style.css" media="handheld and (max-width:480px), screen and (min-width:960px)" />

上面代码中style.css样式被用在宽度小于或等于480px的手持设备上,或者被用于屏幕宽度大于或等于960px的设备上。

到目前为止,CSS3 Media Queries得到了众多浏览器支持,除了IE6-8浏览器不支持之外,在所有现代浏览器中都可以完美支持。还有一个与众不同的是,Media Queries在其他浏览器中不要像其他CSS3属性一样在不同的浏览器中添加前缀

转载地址:https://www.cnblogs.com/zyl-Tara/p/5519144.html

<think>首先,用户的问题是关于CSS媒体查询中的 `@media`,具体是它的使用方法和相关知识。用户提供了几个引用,这些是关于 `@media` 的用法、区别和相关知识的总结。 引用内容总结: - 引用[1]:提到CSS媒体查询 `@media` 的用法,参考了多个来源如简书、优快云博客、知乎和菜鸟教程。 - 引用[2]:区分了 `@media` 和 `@media screen`,解释了它们在自适应设计中的作用和区别。 - 引用[3]:总结了CSS2中的media type和CSS3中的media query。 - 引用[4]:详细描述了 `@media` 在响应式布局中的应用,特别是打印设备上的有效性。 用户的问题:用户想了解CSS媒体查询中 `@media` 的使用方法和相关知识。 系统级指令: - 所有行内数学表达式必须使用 `$...$` 格式。但CSS中没有数学表达式,所以可能不适用。 - 独立公式必须使用 `$$...$$` 格式并单独成段。同样,CSS中可能没有公式。 - LaTeX语法正确,但由于主题是CSS,可能较少使用。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1] 用户可见层指令: - 回答结构清晰,帮助用户逐步解决问题,尽量保证回答真实可靠。 我的回答需要结构化: 1. **介绍**:简要解释什么是CSS媒体查询和 `@media`。 2. **使用方法**:详细解释如何写 `@media` 查询。 3. **相关知识**:包括区别、语法、媒体类型和特性等。 4. **示例**:提供代码示例。 5. **相关问题**:生成相关的问题。 参考引用: - 在回答中自然地引用提供的引用。例如,当提到 `@media` 和 `@media screen` 的区别时,可以引用[2]和[4]。 - 引用标识要自然地添加,如:[^2] 回答结构大纲: 1. **引言**:什么是CSS媒体查询。 2. **基本语法**:如何书写 `@media`。 3. **媒体类型**:如screen、print等(参考引用[3])。 4. **媒体特性**:如width、height等。 5. **区别**: `@media` 和 `@media screen` 的区别(参考引用[2]和[4])。 6. **使用场景**:响应式布局、自适应设计、打印样式等。 7. **代码示例**:给出一个或多个示例。 8. **注意事项**:如打印设备的应用(参考引用[4])。 9. **总结**。 10. **生成相关问题**。 确保回答真实可靠:基于标准CSS知识,参考提供的引用。 最终输出: - 用中文。 - 结构清晰。 - 结尾添加相关问题。 </think>### CSS媒体查询中 `@media` 的使用方法和相关知识 在现代Web开发中,CSS媒体查询是实现响应式设计的关键工具。它允许开发者根据设备的特性(如屏幕尺寸、分辨率或媒体类型)应用不同的CSS样式。核心是 `@media` 规则,它能帮助网站自适应不同设备(如手机、平板、桌面或打印机),提升用户体验。以下我将从基本概念、使用方法、相关知识等方面一步步解释,确保内容清晰易懂。回答基于标准CSS规范,并结合您提供的引用内容 [^1][^2][^3][^4]。 #### 1. **基本概念** - **什么是媒体查询?** 媒体查询是CSS3引入的功能,允许开发者基于特定条件(如设备宽度、高度、方向或媒体类型)动态应用CSS样式。例如,为小屏幕设备调整布局或为大屏幕优化显示。在CSS2中,仅有简单的媒体类型(如 `screen` 或 `print`),而CSS3扩展了媒体查询,支持更精细的逻辑表达式 [^3]。 - **`@media` 的作用** `@media` 是媒体查询的核心语法规则。它通过在CSS中定义条件块(也称为“查询”),有条件地加载样式。例如: ```css /* 当屏幕宽度小于600px时,应用此样式 */ @media (max-width: 599px) { body { background-color: lightblue; } } ``` 这确保了样式只在满足条件时生效,无需修改HTML结构。 #### 2. **使用方法** `@media` 的基本语法包括指定媒体类型(可选)和媒体特性(如尺寸、分辨率),格式为: ```css @media [媒体类型] and (媒体特性: 值) { /* CSS样式规则 */ } ``` - **媒体类型(可选)** 指定查询适用的设备类型。常见类型包括: - `screen`:用于屏幕设备(如电脑、手机)。 - `print`:用于打印设备(如打印机)。 - `all`:适用于所有设备(默认值)。 如果省略媒体类型,查询默认为 `all`。例如,`@media screen and (min-width: 768px)` 仅在屏幕设备且宽度≥768px时生效 [^3][^4]。 - **媒体特性** 定义了具体的查询条件,支持多种逻辑运算符(如 `and`、`not`、`only`)。常用特性包括: - `width` / `max-width` / `min-width`:基于视口宽度(例如,`(max-width: 1200px)`)。 - `height` / `max-height` / `min-height`:基于视口高度。 - `orientation`:设备方向(`landscape` 或 `portrait`)。 - `resolution`:设备分辨率(如 `(min-resolution: 300dpi)`)。 - 示例语法组合: ```css /* 针对打印设备应用样式 */ @media print { body { font-size: 12pt; color: black; } } /* 针对小屏幕设备且竖屏方向 */ @media screen and (max-width: 480px) and (orientation: portrait) { .container { width: 100%; } } ``` - **实际应用步骤** 1. **确定需求**:思考哪些设备或场景需要样式调整(如响应式布局)。 2. **编写查询语句**:在CSS文件中添加 `@media` 块,定义条件和样式。 3. **测试**:使用浏览器开发者工具(如Chrome的Device Toolbar)模拟不同设备验证效果。 4. **优化**:结合多个查询处理复杂场景,例如使用断点(breakpoints)划分屏幕尺寸区间。 #### 3. **相关知识** - **`@media` 和 `@media screen` 的区别** - `@media`:通用规则,适用于所有媒体类型(包括打印设备)。例如,`@media print {...}` 只在打印时生效。 - `@media screen`:指定仅适用于屏幕设备(如电脑或手机),不适用于打印。这在自适应设计中常用,以避免打印样式干扰 [^2][^4]。 区别核心:`@media screen` 是 `@media` 的子集,更精准控制屏幕设备样式。例如: ```css /* 只在屏幕设备生效(打印时不生效) */ @media screen { body { background-color: white; } } /* 在所有设备生效,包括打印 */ @media { /* 通用样式 */ } ``` - **媒体类型 vs. 媒体查询** - **CSS2 媒体类型**:早期简单分类,如 `screen` 或 `print`,只能整体应用样式。 - **CSS3 媒体查询**:扩展了条件逻辑,支持基于特性(如宽度)的精细控制,是现代响应式设计的基石 [^3]。开发者应优先使用CSS3的媒体查询,除非需要兼容旧浏览器。 - **常见使用场景** - **响应式布局**:适配不同屏幕尺寸(如移动优先设计)。例如,设置断点: ```css /* 小屏幕 */ @media (max-width: 767px) { ... } /* 平板 */ @media (min-width: 768px) and (max-width: 1023px) { ... } /* 桌面 */ @media (min-width: 1024px) { ... } ``` - **打印优化**:为打印设备定制样式(如隐藏导航栏、调整字体)。 - **高分辨率设备**:针对Retina显示屏使用 `(min-resolution: 2dppx)` [^1][^4]。 - **注意事项** - **兼容性**:现代浏览器(Chrome、Firefox、Safari)良好支持,但旧浏览器(如IE9以下)需要回退方案。 - **性能**:避免过多复杂查询,以免加载延迟;建议使用 `min-width` 而非 `max-width` 优化移动优先。 - **打印设备**: `@media print` 只在打印时有效,不影响屏幕显示;确保测试打印预览 [^4]。 #### 4. **代码示例** 以下是一个完整的响应式布局示例,展示 `@media` 的应用: ```css /* 基础样式(移动优先) */ .header { font-size: 1.5rem; padding: 20px; } /* 平板及以上屏幕 */ @media screen and (min-width: 768px) { .header { font-size: 2rem; padding: 30px; } } /* 桌面屏幕 */ @media screen and (min-width: 1024px) { .header { display: flex; justify-content: space-between; } } /* 打印优化 */ @media print { .header, .footer { display: none; /* 打印时隐藏页眉页脚 */ } body { font-size: 12pt; /* 调整字体大小 */ } } ``` #### 5. **总结** CSS媒体查询 `@media` 是构建自适应网站的核心工具,通过定义媒体类型和特性,可以优雅地处理不同设备的需求。关键点包括:理解 `@media` 和 `@media screen` 的区别、掌握媒体特性(如宽度查询)、优先使用CSS3语法。在实际开发中,结合响应式框架(如Bootstrap)能提升效率。更多细节可参考菜鸟教程或W3C标准文档 [^1][^3]。如果您有具体项目需求(如实现特定响应式效果),我可以提供更针对性的代码建议。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值