- CSS 教程
- CSS - 首页
- CSS - 路线图
- CSS - 简介
- CSS - 语法
- CSS - 选择器
- CSS - 包含
- CSS - 测量单位
- CSS - 颜色
- CSS - 背景
- CSS - 字体
- CSS - 文本
- CSS - 图片
- CSS - 链接
- CSS - 表格
- CSS - 边框
- CSS - 块级边框
- CSS - 行内边框
- CSS - 外边距
- CSS - 列表
- CSS - 内边距
- CSS - 光标
- CSS - 轮廓
- CSS - 尺寸
- CSS - 滚动条
- CSS - 行内块
- CSS - 下拉菜单
- CSS - 可见性
- CSS - 溢出
- CSS - Clearfix
- CSS - 浮动
- CSS - 箭头
- CSS - 调整大小
- CSS - 引号
- CSS - 顺序
- CSS - 位置
- CSS - 连字符
- CSS - 悬停
- CSS - 显示
- CSS - 聚焦
- CSS - 缩放
- CSS - 转换
- CSS - 高度
- CSS - 连字符字符
- CSS - 宽度
- CSS - 不透明度
- CSS - Z-Index
- CSS - 底部
- CSS - 导航栏
- CSS - 叠加层
- CSS - 表单
- CSS - 对齐
- CSS - 图标
- CSS - 图片库
- CSS - 注释
- CSS - 加载器
- CSS - 属性选择器
- CSS - 组合器
- CSS - 根元素
- CSS - 盒模型
- CSS - 计数器
- CSS - 剪裁
- CSS - 书写模式
- CSS - Unicode-bidi
- CSS - min-content
- CSS - 全部
- CSS - 内嵌
- CSS - 隔离
- CSS - 溢出滚动
- CSS - Justify Items
- CSS - Justify Self
- CSS - Tab Size
- CSS - 指针事件
- CSS - Place Content
- CSS - Place Items
- CSS - Place Self
- CSS - 最大块级尺寸
- CSS - 最小块级尺寸
- CSS - 混合模式
- CSS - 最大内联尺寸
- CSS - 最小内联尺寸
- CSS - 偏移
- CSS - 强调色
- CSS - 用户选择
- CSS 高级
- CSS - 网格
- CSS - 网格布局
- CSS - Flexbox
- CSS - 可见性
- CSS - 定位
- CSS - 层
- CSS - 伪类
- CSS - 伪元素
- CSS - @规则
- CSS - 文字效果
- CSS - 分页媒体
- CSS - 打印
- CSS - 布局
- CSS - 验证
- CSS - 图片精灵
- CSS - !important
- CSS - 数据类型
- CSS3 教程
- CSS3 - 教程
- CSS - 圆角
- CSS - 边框图片
- CSS - 多重背景
- CSS - 颜色
- CSS - 渐变
- CSS - 盒阴影
- CSS - 盒装饰中断
- CSS - 光标颜色
- CSS - 文本阴影
- CSS - 文本
- CSS - 二维转换
- CSS - 三维转换
- CSS - 过渡
- CSS - 动画
- CSS - 多列
- CSS - 盒尺寸
- CSS - 工具提示
- CSS - 按钮
- CSS - 分页
- CSS - 变量
- CSS - 媒体查询
- CSS - 函数
- CSS - 数学函数
- CSS - 遮罩
- CSS - 形状
- CSS - 样式图片
- CSS - 特效性
- CSS - 自定义属性
- CSS 响应式
- CSS RWD - 简介
- CSS RWD - 视口
- CSS RWD - 网格视图
- CSS RWD - 媒体查询
- CSS RWD - 图片
- CSS RWD - 视频
- CSS RWD - 框架
- CSS 工具
- CSS - PX 到 EM 转换器
- CSS - 颜色选择器和动画
- CSS 资源
- CSS - 有用资源
- CSS - 讨论
CSS - 媒体查询
CSS中的媒体查询用于根据屏幕尺寸、分辨率和其他用户设备特性应用不同的CSS样式。媒体查询使用@media规则,在满足特定条件时包含额外的CSS属性块。媒体查询也可用于单独设置页面的可打印版本样式。
语法
@media not|only mediatype and (media feature) and (media feature) { CSS-Code; }
这里,media-type可以是screen、print、speech等,而media-feature可以是宽度、高度、纵横比、方向等特性。
你可能已经注意到,同一个网站在移动设备和桌面设备上的显示效果不同。这种屏幕相关的样式是使用CSS媒体查询实现的。在本教程中,我们将学习媒体查询及其相关的属性。
目录
媒体类型
媒体类型用于CSS媒体查询,根据设备应用不同的样式。最常见的媒体类型是all、print和screen。如果未指定媒体类型,则匹配所有设备。
- all: 默认值。此值适用于所有媒体类型。
- print: 此值仅在打印文档时有效。
- screen: 此值仅对屏幕有效,例如计算机、平板电脑和智能手机。
JavaScript提供了一个名为CSSMediaRule的CSS对象模型接口,可用于访问使用@media CSS @规则创建的规则。
CSS媒体类型Print
有时为用户生成的打印版本不需要屏幕中显示的所有样式。打印版本通常以灰度样式或简单的浅色生成。建议这种设计,因为深色背景会消耗打印机更多的墨水。
示例
以下示例演示了使用媒体类型为print的CSS媒体查询。
<!DOCTYPE html> <html> <head> <style> body{ background-color: black; color: white; padding: 10px; } @media print { body { background-color: white; color: black; padding: 10px; } } button { background-color: aqua; padding: 5px; } </style> </head> <body> <h3> Tutorialspoint </h3> <p>CSS Media Type - Print</p> <p> Background is white for printable version of this page. Check out... </p> <button onclick="printPage()">Print Page</button> <script> function printPage() { window.print(); } </script> </body> </html>
CSS媒体类型All
这用于指定在所有屏幕尺寸、可打印版本和其他版本中使用的通用样式。
示例
以下示例演示了使用媒体类型为all的CSS媒体查询。
<!DOCTYPE html> <html> <head> <style> @media all { body{ background-color: black; color: white; padding: 10px; } } </style> </head> <body> <h3>Tutorialspoint </h3> <p> CSS Media Type - All </p> <p> In printable version or any screen size, the styles of this page is same. </p> <button onclick="printPage()"> Print Page </button> <script> function printPage() { window.print(); } </script> </body> </html>
CSS媒体类型Screen
此值仅对屏幕有效,例如计算机、平板电脑和智能手机。
示例
以下示例演示了如果屏幕尺寸大于500px,背景颜色将更改为粉红色,文本颜色将更改为蓝色。
<!DOCTYPE html> <html> <head> <style> .container { display: flex; flex-direction: row; padding: 10px; gap: 10px; } .child{ padding: 10px; background-color: #f0f0f0; border: 2px solid; } @media screen and (max-width: 500px) { .container { flex-direction: column; } } </style> </head> <body> <p> Orientation of child elements depend on screen size, for screen size less than 500px, children align in two different columns. </p> <div class="container"> <div class="child" > HTML </div> <div class="child"> CSS </div> </div> </body> </html>
媒体查询的宽度范围
在媒体查询中,也可以这样指定屏幕宽度范围。
@media (width > 700px) { /* Styles for screens that are at least 700px wide */ }
示例
以下示例演示了当屏幕宽度在600px到800px之间时,背景颜色更改为黄色,文本颜色更改为红色。
<!DOCTYPE html> <html> <head> <style> p { color: blue; } @media (600px < width < 800px) { p { background-color: yellow; color: red; } } </style> </head> <body> <h1>Tutorialspoint</h1> <p>CSS Media Type - Screen</p> <p>Resize the browser size to see the effect.</p> </body> </html>
逗号分隔的媒体类型
媒体查询中的逗号类似于逻辑“OR”运算符。
以下声明将应用于屏幕宽度小于500px或可打印版本。也可以使用OR运算符代替逗号。
@media (min-width: 500px), print { /* Styles */ }
示例
以下示例演示了使用逗号分隔的媒体类型。在打印模式下以及屏幕尺寸>500px时,背景颜色会发生变化。
<!DOCTYPE html> <html> <head> <style> body { background-color: white; color: black; } @media (min-width: 500px), print { body { background-color: black; color: white; } } button { background-color: violet; padding: 5px; } </style> </head> <body> <h1>CSS Media Type - Screen and Print</h1> <p> Resize the window to less than 500px to see the background and font color changes to default. </p> <p> Click on below button to see the effect when you print the page. ( Enable background graphics options if any at print section ) </p> <button onclick="printPage()">Print Page</button> <script> function printPage() { window.print(); } </script> </body> </html>
仅使用CSS媒体类型
仅使用媒体类型仅在整个媒体查询匹配时才应用样式。这有助于防止旧版浏览器应用样式。
示例
以下示例演示了当屏幕宽度在500px到700px之间时,背景颜色更改为粉红色,文本颜色更改为蓝色。
<!DOCTYPE html> <html> <head> <style> body { color: red; } @media only screen and (min-width: 500px) and (max-width: 700px) { body { color: blue; background-color: pink; } } </style> </head> <body> <h1>Tutorialspoint</h1> <p>CSS Media Type - Screen</p> <p> Resize the browser window to see the effect. </p> </body> </html>
CSS媒体查询AND运算符
AND运算符用于组合媒体查询中的多个条件。这两个条件都必须为真,样式才能应用。
示例
此示例演示了当屏幕宽度在500px到700px之间时,将添加样式。
<!DOCTYPE html> <!DOCTYPE html> <html lang="en"> <head> <style> body { background-color: lightgray; color: black; } @media (min-width: 500px) and (max-width: 700px) { body { background-color: lightgreen; color: blue; } } </style> </head> <body> <h1> Media Query with AND Operator</h1> <p> Resize the browser window between 500px and 700px to see the effect. </p> </body> </html>
媒体查询NOT运算符
NOT运算符否定媒体查询,仅当媒体查询不匹配时才应用样式。
NOT运算符在媒体查询中最后进行评估,因此上述媒体查询将按如下方式评估。
@media not (all and (monochrome)) { /* … */ } /* It's not evaluated like this:*/ @media (not all) and (monochrome) { /* … */ }
示例
在此示例中,NOT运算符否定条件width < 700。
<!DOCTYPE html> <!DOCTYPE html> <html lang="en"> <head> <style> body { background-color: lightgray; color: black; } @media not screen and (width < 700px) { body { background-color: orange; color: white; } } </style> </head> <body> <h1> Media Query with NOT Operator </h1> <p> Resize the browser window to less than 700px to see the effect. </p> </body> </html>
创建复杂的媒体查询
可以使用and、not和only运算符组合多个条件来创建复杂的媒体查询。还可以将多个媒体查询组合成逗号分隔的列表。
示例
在此示例中,我们组合了多个媒体查询,尝试更改浏览器宽度以查看多种效果。
<!DOCTYPE html> <html> <head> <style> body { background-color: lightgray; color: black; } @media only screen and (min-width: 500px) and (max-width: 700px) { body { background-color: pink; color: blue; } } @media not screen and (max-width: 700px) { body { background-color: orange; color: white; } } </style> </head> <body> <h1> Media Query with AND, NOT, and ONLY Operators </h1> <p> Resize the browser window to see the effects. </p> </body> </html>
CSS媒体查询屏幕方向
我们可以为用户设备的特定方向(横向或纵向)定义样式。此默认值为纵向。
@media (orientation: portrait) { /* Styles */ }
示例
以下示例演示了当屏幕宽度大于500px且设备处于横向方向时,文本颜色更改为蓝色。
<!DOCTYPE html> <html> <head> <style> body { color: red; } @media (min-width: 500px) and (orientation: landscape) { body { color: blue; } } </style> </head> <body> <h3>Resize the browser window to see the effect.</h3> <p> The text color changed to blue when the viewport width is at least 500px and the device is in landscape orientation. </p> </body> </html>
媒体查询功能列表
CSS媒体查询功能用于根据特定特性、输出设备或环境将不同的样式应用于网页。
以下是与媒体功能相关的CSS属性列表。
媒体功能 | 描述 | 示例 |
---|---|---|
any-hover | 检查用户的任何输入设备是否可以将鼠标悬停在页面上的元素上。 | |
any-pointer | 确定用户是否拥有指向设备(例如鼠标)以及该设备是否准确。 | |
aspect-ratio | 检查视口或渲染表面的纵横比。 | |
color | 指定输出设备所需的颜色分量的位数。 | |
color-gamut | 根据用户设备可以显示的颜色范围,将不同的样式应用于网页。 | |
color-index | 检查设备可以显示多少种颜色。 | |
device-aspect-ratio | 检查输出设备的宽度和高度之间的纵横比。此媒体功能已过时,很少使用。请改用aspect-ratio媒体功能。 | |
device-height | 检查输出设备显示区域的高度。此媒体功能已过时,很少使用。请改用height媒体功能。 | |
device-width | 检查输出设备显示区域的宽度。此媒体特性已过时,很少使用。建议使用 width 媒体特性。 | |
display-mode | 根据 web 应用程序的当前显示模式检测和设置 web 内容样式。(fullscreen | standalone | minimal-ui | browser | window-controls-overlay) | |
dynamic-range | 检查用户代理和输出设备是否支持高亮度、对比度和色深。 | |
forced-colors | 检查用户是否在其设备上启用了强制颜色模式。 | |
grid | 检查用户设备或屏幕是否支持网格布局。 | |
height | 确定视窗的高度。 | |
hover | 确定用户的设备是否能够悬停在元素上。 | |
monochrome | 确定输出设备的单色帧缓冲区中用于表示每个像素的位数。 | |
orientation | 检查设备的屏幕或页面是处于纵向还是横向。 | |
overflow-block | 确定用户设备如何处理垂直方向上超出初始容器边界的内容。 | |
overflow-inline | 确定用户设备如何处理水平方向上超出初始容器边界的内容。 | |
pointer | 检查用户是否拥有可以用来指向和点击的指向设备,例如鼠标或触摸屏。 | |
prefers-color-scheme | 确定用户是否更倾向于网站使用浅色模式或深色模式。 | |
prefers-contrast | 检查用户是否希望网站具有更高或更低的对比度。 | |
prefers-reduced-motion | 检查用户是否在其设备上启用了设置以减少不必要的移动动画。 | |
resolution | 检查屏幕上每英寸显示的像素数量。 | |
width | 确定视窗的宽度。 | |
update | 检查用户设备更改内容外观后,内容在屏幕上的显示效果。 |