CSS媒体查询

根据设备的大致类型(如打印设备与带屏幕的设备)或者特定的特征和设备参数(例如屏幕分辨率和浏览器视窗宽度)来修改网站或应用程序的一种方式。

目的

  • 有条件的通过 @media 和 @import at-rules 用CSS 装饰样式。

  • media= 属性为stylelinksource和其他HTML元素指定特定的媒体类型。

    <link rel="stylesheet" src="styles.css" media="screen" />
    
  • 使用Window.matchMedia()MediaQueryList.addListener()方法来测试和监控媒体状态。

逻辑操作符

运用逻辑操作符可以联合构造复杂的媒体查询。

  • and:用于将多个媒体查询规则组合成单条媒体查询,当每个查询规则都为真时则该条媒体查询为真。它还用于将媒体功能与媒体类型结合在一起。

  • not:用于否定媒体查询,如果不满足这个条件则返回 true,否则返回 false。如果出现在以逗号分隔的查询列表中,它将仅否定应用了该查询的特定查询。如果使用 not 运算符,则还必须指定媒体类型

    只能用于否定整个媒体查询。以下两个相等:

    @media not all and (monochrome) { ... }
    @media not (all and (monochrome)) { ... } 
    

    也可以使用not否定一个特性:

    @media (not(hover)) { ... }
    

    也可以配合使用or测试多个特性:

    @media (not (color)) or (hover) { ... }
    
  • only:仅在整个查询匹配时才用于应用样式。可以防止较早的浏览器应用所选样式。如果使用only运算符,则还必须指定媒体类型

    @media only screen and (color) { ... }
    

    当不使用only时,旧版本的浏览器会将screen and (max-width: 500px)简单地解释为screen,忽略查询的其余部分,并将其样式应用于所有屏幕。

  • ,(逗号):用于将多个媒体查询合并为一个规则。由逗号分隔的语句都会分开处理,类似于逻辑

定位媒体类型

@media screen, print { ... }

媒体类型:

  • all:适用于所有设备。

  • print:适用于在打印预览模式下在屏幕上查看的分页材料和文档。

  • screen:主要用于屏幕。

  • speech:主要用于语音合成器。

定位媒体特性

@media (max-width: 12450px) { ... }

媒体特性:

名称简介
any-hover是否有任何可用的输入机制允许用户(将鼠标等)悬停在元素上?
any-pointer可用的输入机制中是否有任何指针设备,如果有,它的精度如何?
aspect-radio视窗(viewport)的宽高比
color输出设备每个像素的比特值,常见的有 8、16、32 位。如果设备不支持输出彩色,则该值为 0
color-gamut用户代理和输出设备大致程度上支持的色域
color-index输出设备的颜色查询表(color lookup table)中的条目数量,如果设备不使用颜色查询表,则该值为 0
display-mode应用程序的显示模式,如 web app 的 manifest 中的display 成员所指定
forced-colors检测是 user agent 否限制调色板
grid输出设备使用网格屏幕还是点阵屏幕?
height视窗(viewport)的高度
hover主要输入模式是否允许用户在元素上悬停
inverted-colorsuser agent 或者底层操作系统是否反转了颜色
light-level环境光亮度
monochrome输出设备单色帧缓冲区中每个像素的位深度。如果设备并非黑白屏幕,则该值为 0
orientation视窗(viewport)的旋转方向
overflow-block输出设备如何处理沿块轴溢出视窗 (viewport) 的内容
overflow-inline沿内联轴溢出视窗 (viewport) 的内容是否可以滚动?
pointer主要输入机制是一个指针设备吗?如果是,它的精度如何?
prefers-color-scheme探测用户倾向于选择亮色还是暗色的配色方案
prefers-contrast探测用户是否有向系统要求提高或降低相近颜色之间的对比度
prefers-reduced-motion用户是否希望页面上出现更少的动态效果
prefers-reduced-transparency用户是否倾向于选择更低的透明度
resolution输出设备的像素密度(分辨率)
scan输出设备的扫描过程(适用于电视等)
scripting探测脚本(例如 JavaScript)是否可用
update输出设备更新内容的渲染结果的频率
width视窗(viewport)的宽度,包括纵向滚动条的宽度

width:之前是(30em <= width <= 50em ),现在支持 (width <= 30em)(max-width: 30em)(min-width: 30em) and (max-width: 50em)

实例

@media (min-width: 1485px) {
    .shelf {
        height: 20px;
        width: 100px,
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值