CSS2.1
中加入了Media Type
,可以根据设备类型选择加载不同的CSS
文件。
总共有下面这些Media Type
:
设备类型 | 说明 |
---|---|
all | 任意设备 |
braille | 盲人用点字法触觉回馈设备 |
embossed | 盲文打印机 |
handheld | 便携式设备 |
screen | 电脑显示器设备 |
print | 打印设备 |
projection | 投影设备 |
speech | 语音或者音频合成器 |
tv | 电视设备 |
tty | 使用固定密度的字母栅格的设备,比如电传打字机、终端机等。 |
Media Type
的使用方法:
CSS2.1
专门为link
标签增加了一个media
属性,其值就是上面这10个类型之一。
示例:
<link rel="stylesheet" type="text/css" href="style.css" media="screen">
CSS2.1
专门增加了@import
指令,后面跟一个URL。
示例:
@import url(reset.css) screen;
@import url(print.css) print;
这个既可以放在CSS
文件里,也可以放在html
文件的style
标签里,如下:
<style type="text/css">
@import url(reset.css) screen;
@import url(print.css) print;
</style>
放在html
文件的style
标签里这种方法IE6/IE7
不支持。
CSS3
在Media Type
的基础上,扩展出了Media Query
,使得CSS3
具有了一些语言特性。
CSS3
专门增加了@media
指令,@media
指令的格式如下:
@media [not] [mediaType] [and (condition)] {selector}
示例:
div {
border-width : 0.5px
}
@media screen {
div {
border-width : 1px
}
}
@media
指令也可以放在html
文件的style
标签里,如下:
<style type="text/css">
@media screen {
div {
border-width : 1px
}
}
</style>
表示反选,从那10
个类型中排除指定的类型。
示例:
@media not print {
div {
border-width : 1px
}
}
mediaType
就是CSS2.1
中提供的那10
个类型。如果省略,默认是all
。
Media Query
比Media Type
更近一步的就是可以有一些条件判断了, 不过,这些逻辑判断,不是使用小于(<)、大于(>)这样的符号来判断,而是使用max-xx: value
、min-xx: value
这样格式进行判断的。
窗口小于或等于指定宽度时,样式才生效。
示例:
/*当窗口宽度小于或等于480px时,.ads将隐藏 */
@media screen and (max-width:480px) {
.ads {
display:none;
}
}
窗口大于或等于指定宽度时,样式才生效。
示例:
/*当窗口宽度大于或等于1000px时,.ads的边框宽度为1像素 */
@media screen and (min-width:1000px) {
.ads {
border-width:1px;
}
}
/*当窗口宽度大于或者等于320px,且窗口宽度小于或等于480px时,.ads边框宽度为0.5像素 */
@media screen and (min-width:320px) and (max-width:480px) {
.ads {
border-width:0.5px;
}
}
使用max-width
和min-width
,通常用来做响应式布局,一般的浏览器的窗口都是可以调整大小的, 随着不断调整浏览器窗口的大小,就会触发这些条件,从而选择让页面看起来正常和美观!Bootstrap的响应式就是通过此实现的!
设备的屏幕宽度小于或等于指定宽度时,样式才生效。
智能设备,比如手机、平板等,浏览器窗口一般是不能调整大小的,一般是屏幕宽度多大,浏览器窗口的宽度就是多大,我们可以使用这个属性来匹配。
示例:
/*当屏幕宽度大于或等于1000px时,.ads的边框宽度为1像素 */
@media screen and (min-device-width:1000px) {
.ads {
border-width:1px;
}
}
/*当屏幕宽度大于或者等于320px,且屏幕宽度小于或等于480px时,.ads边框宽度为0.5像素 */
@media screen and (min-device-width:320px) and (max-device-width:480px) {
.ads {
border-width:0.5px;
}
}
设备的屏幕宽度窗口大于或等于指定宽度时,样式才生效。
智能设备,比如手机、平板等,浏览器窗口一般是不能调整大小的,一般是屏幕宽度多大,浏览器窗口的宽度就是多大,我们可以使用这个属性来匹配。
示例:
/*当屏幕宽度大于或等于1000px时,.ads的边框宽度为1像素 */
@media screen and (min-device-width:1000px) {
.ads {
border-width:1px;
}
}
/*当屏幕宽度大于或者等于320px,且屏幕宽度小于或等于480px时,.ads边框宽度为0.5像素 */
@media screen and (min-device-width:320px) and (max-device-width:480px) {
.ads {
border-width:0.5px;
}
}
max-device-width
和min-device-width
是根据navigator.width
进行判断的,navigator.width
就是设备的屏幕宽度。
CSS3
扩展了link
标签的media
属性值的格式,其值与@media
指令的格式几乎一样。 只是增加了only
修饰符。 其实,only
很多时候是用来对那些不支持Media Query
但却支持Media Type
的设备隐藏样式表的。 对支持Media Query
的浏览器,only就相当于废话,就当他不存在; 对不支持Media Query
但又支持Media Type
的浏览器,因为它不符合Media Type
的规则,所以不会加载CSS, 因为其先读only
而不是后面的类型。
示例:
<link rel="stylesheet" type="text/css" href="android240.css" media="only screen and (max-device-width:240px)">
其他示例:
<link rel="stylesheet" type="text/css" href="style.css" media="handheld and (max-width:480px), screen and (min-width:960px)">