媒体查询
媒体查询入门
对于前端, 如果我们想实现响应式的设计, 那么媒体查询是必不可少的工具. 媒体查询可以帮助我们根据不同的设备和屏幕尺寸, 调整我们的网页的布局和样式.
媒体查询的范式:
1 | @media media-type and (media-feature) { |
- 媒体类型用于声明css文件被用作什么类型的媒体;
- 媒体表达式用于指定媒体特征, 只有满足媒体特征的条件下, 才会应用css规则;
- 通过测试且符合媒体类型的情况下应用内部的CSS样式.
media-type: all, print, screen, speech.
媒体特征
屏幕尺寸
使用min
,max
在一定的数值范围内启用当前的CSS样式.
如果去掉前缀, 将仅在恰好为当前数值中启用.
1 | /* 启用宽度大于或等于600px的屏幕 */ |
朝向
orientation
可以检测设备的方向, 如竖屏或横屏.
1 | @media screen and (orientation: portrait) { |
更复杂的媒体查询
and
实现与逻辑:
1 | @media screen and (min-width: 400px) and (orientation: landscape) { |
,
实现或逻辑:
1 | @media (min-width: 768px) and (orientation: landscape), (max-width: 480px) { |
与C中的
&
和|
类似, 与的优先级更高, 先将and
的条件进行判断, 然后视作整体.
not
实现非逻辑:
1 | @media not all and (orientation: landscape) { |
not
实现 反转查询:与最近的
and
组合所绑定, 注意优先级
1 | @media not screen and (color), print and (color) { ... } |
,
将媒体查询的表达式分为了前后两级, 因此上述的媒体查询等价于:
1 | @media (not (screen and (color))), print and (color) { ... } |
利用查询结果扩展设计
上述在CSS中利用@media
可以实现响应式的设计, 如果我们希望在js/ts中使用媒体查询的结果呢? 利用媒体查询列表进行设计可以帮助我们实现更加自由的设计.
- 使用
window.matchMedia()
方法存放媒体查询结果:
1 | // 检测设备的旋转方向是否为纵向 |
- 检查属性
matches
获取对应的查询结果:
1 | if (mediaQueryList.matches) { |
- 通过
addListener()
方法注册监听器, 持续监听查询列表的结果
1 | // 定义媒体查询字符串 |
- 标题: 媒体查询
- 作者: ffy
- 创建于 : 2025-01-08 19:16:49
- 更新于 : 2025-05-09 17:31:21
- 链接: https://ffy6511.github.io/2025/01/08/其他/媒体查询/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
推荐阅读
评论