media type与media query

media type(媒体类型)是css2的一个重要属性,通过它我们可以对不同的设备应用特定的样式;

media type有很多种:

类型 解释
all 所有设备
braille 盲文
embossed 盲文打印
handheld 手持设备
print 文档打印或打印预览模式
projection 项目演示,比如幻灯
screen 彩色电脑屏幕
speech 演讲
tty 固定字母间距的网格的媒体,比如电传打字机
tv 电视
media type常用的使用方法:

方法一:<link href="style.css" media="screen print"……

方法二:@media screen{selector{rules}}


media query是css3对media type的增强,实际上可以看成是media type+css属性判断。

例如:<link rel="stylesheet" media="screen and (animation)" href="……"   //如果设备支持css动画,那么就可以执行这个外部的文件;

@media screen and(max-width:240px){body{font-size:medium}} // 如果设备的浏览器的最大宽度是240px,则页面将使用medium字体;

媒体查询语句结构:media type+(一到多个)css属性判断(备注:多个属性判断可以用and连接)

例如:@media screen and(min-width:1024px) and(max-width:1280px){body{font-size:medium;}}

针对多个媒体类型的css规则,可以用逗号隔开;

例如:@media handheld and(min-width:360px),screen and(min-width:1024px){body{font-size:large;}}

   @media screen and(min-width:800px),print and(min-width:7in){body{font-size:small;}}

media query支持的属性

事实上,media query支持的属性和我们常用的CSS属性是不太一样的,它们是一些特别定义的条目:

属性 Min/Max 描述
color 整数 yes 每种色彩的字节数
color-index 整数 yes 色彩表中的色彩数
device-aspect-ratio 整数/整数 yes 宽高比例
device-height length yes 设备屏幕的输出高度
device-width length yes 设备屏幕的输出宽度
grid 整数 no 是否是基于格栅的设备
height length yes 渲染界面的高度
monochrome 整数 yes 单色帧缓冲器中每像素字节
resolution 分辨率(“dpi/dpcm”) yes 分辨率
scan Progressive interlaced no tv媒体类型的扫描方式
width length yes 渲染界面的宽度
orientation Portrait/landscape no 横屏或竖屏

从这些属性中我们可以看出,media query就是为了更好的适配各种设备而生的。

媒体类型还支持not 和only关键字,它们可以更方便的定位某个媒体设备:

not:排除某种特定的媒体类型

@media not print and (color){}

only:指定某种特定的媒体类型,可以用来排除不支持媒体查询的浏览器;

@media only screen and(color){}


media query的浏览器支持:

  • IE 9以下不支持
  • Firefox 3.5+(Gecko 1.9.1+)支持
  • Opera 9.5+完全支持
  • Opera mini 5支持
  • webkit 支持大部分属性(safari 3.0的内核版本是522,iPhone 1代的safari的内核版本是524,webkit大概从这个时候开始支持media query,但是对部分属性比如projection支持不好)
  • iPhone OS 3.2之前的版本不支持orientation属性,iPad和iPhone 4支持该属性。
  • iPhone Safari不支持orientation(iPhone 4支持)

实例:

现在让我们来看一些典型的例子:

检测iPhone safari:

<link media="only screen and (max-device-width: 480px)" href="style.css">

这是apple官方网站推荐的一种定位iPhone safari浏览器的方法,在iPhone一代和2代的时代,这条规则的确能够正确的判断出iPhone的浏览器,但是后来出现了Android的大屏幕手机,比如Nexus One和HTC desire,这条规则也能适配这些480px宽度的机器。

Google的iPhone横屏样式:

Google之前通过以下方式为iPhone手机提供横屏样式(因为最早的3代iPhone手机不支持orientation属性):

1
2
3
4
5
6
@media screen and (max-height:300px){
    #linksDiv{
        margin-top:10px;
    }
    ...
}

android手机的多分辨率问题:

android系统的开放性导致其终端的多样性,那么对于各种各样的android手机来说,屏幕分辨率的差异导致针对android手机的页面重构复杂性增加,那么我们可以用media query为每种分辨率提供特定样式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* for 240 px width screen */
@media only screen and (max-device-width:240px){
    selector{
    }
}
 
/* for 360px width screen */
@media only screen and (min-device-width:241px) and (max-device-width:360px){
    selector{
    }
}
 
/* for 480 px width screen */
@media only screen (min-device-width:361px)and (max-device-width:480px){
    selector{
    }
}

device-aspect-ratio

device-aspect-ratio可以用来适配特定屏幕长宽比的设备,这也是一个很有用的属性,比如,我们的页面想要对长宽比为4:3的普通屏幕定义一种样式,然后对于16:9和16:10的宽屏,定义另一种样式,比如自适应宽度和固定宽度:

1
2
3
4
5
6
7
8
9
10
11
/* for 4:3 screen */
@media only screen and (device-aspect-ratio:4/3){
    selector{
    }
}
 
/* for 16:9 and 16:10 screen */
@media only screen and (device-aspect-ratio:16/9) and (device-aspect-ratio:16/10){
    selector{
    }
}

当然,对于手机也可以使用这个属性,比如对于480px*800px的Nexus One和Desire等手机,可以用下面的样式来匹配:

1
2
3
4
5
/* for 480px*800px width screen */
@media only screen (device-aspect-ratio:5/3){
    selector{
    }
}

O’Reilly区分iPhone和iPad的方法

O’Reilly为其网站制作了针对iPad和iPhone设备的不同版本,从而提供最适合相关设备阅读的界面,他们的做法就是使用media query:

1
2
3
4
<link rel="stylesheet" media="all and (max-device-width: 480px)" href="iphone.css">
<link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:portrait)" href="ipad-portrait.css">
<link rel="stylesheet" media="all and (min-device-width: 481px) and (max-device-width: 1024px) and (orientation:landscape)" href="ipad-landscape.css">
<link rel="stylesheet" media="all and (min-device-width: 1025px)" href="ipad-landscape.css">
















  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@media查询是CSS3的新语法,用于根据不同的媒体类型和媒体特性来应用不同的样式规则。它的语法规范如下:@media mediatype and|not|only (media feature) { CSS-Code; } \[1\]\[2\] 其中,@media开头表示开始一个媒体查询规则,mediatype表示媒体类型,and、not、only是关键字用于连接媒体特性,而media feature则是指媒体特性,必须用小括号包含。在大括号内部,可以编写需要应用的CSS代码。\[1\]\[2\] 举个例子,可以根据页面宽度来改变背景颜色。比如,当页面宽度小于499像素时,背景颜色为红色;当页面宽度在500像素到799像素之间时,背景颜色为绿色;当页面宽度大于800像素时,背景颜色为蓝色。具体的代码如下: @media screen and (max-width: 499px) { body { background-color: red; } } @media screen and (min-width: 500px) { body { background-color: green; } } @media screen and (min-width: 800px) { body { background-color: blue; } } \[3\] 这样,根据不同的页面宽度,背景颜色会相应地改变。 #### 引用[.reference_title] - *1* [媒体查询(Media Query)](https://blog.csdn.net/HIRAETHZY/article/details/121387515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [媒体查询(Media Query)](https://blog.csdn.net/weixin_45650502/article/details/123903833)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值