CSS media queries
最近在做一些頁面打印時的特殊處理接觸到了media queries,想系統(tǒng)學(xué)習(xí)一下,在MOZILLA DEVELOPER NETWORK看到一篇文章講的很不錯,結(jié)合自己的使用總結(jié)一下。
CSS2/media
在CSS2中可以使用media屬性可以使特定style只在指定媒體類型下其作用,比如頁面有些部分需要在打印的時候隱藏或者變大,這時候可以使用media使某些style只在打印的時候生效
@media print {
/* 適用于印刷的樣式 */
}
<link href="css/print.css" rel="stylesheet" type="text/css" media="print" />
常用的媒體類型有
1.all(所有),適用于所有設(shè)備。
2.handheld(手持),用于手持設(shè)備。
3.print(印刷),用于分頁材料以及打印預(yù)覽模式下在屏幕上的文檔視圖。
4.projection(投影),用于投影演示文稿,例如投影儀。
5.screen(屏幕) ,主要用于計算機屏幕。
在使用的時候可以在樣式表直接書寫 @media指令+空格+媒體類型(多個都好隔開)
@media print {
body { font-size: 10pt }
}
@media screen {
body { font-size: 13px }parsing-errors
}
@media screen, print {
body { line-height: 1.2 }
}
CSS3/meidia queries
在CSS3中對其進行了增強,添加了更多的媒體查詢,CSS3中的Media Queries增加了更多的媒體查詢,同時可以添加不同的媒體類型的表達式用來檢查媒體是否符合某些條件,比如如果網(wǎng)頁用PC訪問和Pad訪問使用不同的style,在CSS2中只能把媒體類型設(shè)為screen是不能做到的,而在CSS3中可以對screen類型媒體設(shè)置表達式進一步判斷屏幕大小來實現(xiàn)這一功能。可以寫出這樣的代碼
<!-- CSS media query on a link element -->
<link rel="stylesheet" media="(max-width: 800px)" href="example.css" /></p> <p><!-- CSS media query within a style sheet -->
<style>
@media (max-width: 600px) {
.facet_sidebar {
display: none;
}
}
</style>
當媒體類型匹配且表達式為真的時候,對應(yīng)style就會其作用,除非使用not或者only操作符,否則媒體類型不是必需的,默認代表所有媒體類型。
操作符
and
and操作符用于將多個media feature組合成一個查詢,同時用于組合media type 和media feature,一個基本的media query類似這樣,一個meidia feature作用于所有media type
@media (min-width: 700px) { ... }
但是如果只想在橫向顯示時應(yīng)用就可以使用and操作符把media type和media feature結(jié)合起來
@media (min-width: 700px) and (orientation: landscape) { ... }
這樣上面的media query只有在可視窗口(viewport)最小是700px并且是橫向顯示的時候才返回true,如果還想進一步限制設(shè)備為tv可以這樣
@media tv and (min-width: 700px) and (orientation: landscape) { ... }
逗號分隔的列表
在使用逗號分隔的查詢列表中每個查詢都被視為一個獨立的查詢,任何本查詢中的作用符不影響其他查詢,只要有一個查詢返回true,style就會被作用。
舉例來說,如果希望特定style在viewport最小寬度為700px或手持式設(shè)備上生效,可以這么寫:
@media (min-width: 700px), handheld and (orientation: landscape) { ... }not
not操作符作用域整個查詢,所以只有在整個查詢返回false的情況下使用not后才會返回true。當使用逗號分隔的列表的時候not作用于鄰近的查詢,而不會作用于每個查詢
@media not all and (monochrome) { ... }
查詢其實會這樣起作用
@media not (all and (monochrome)) { ... }
而不是這樣
@media (not all) and (monochrome) { ... }
對于逗號分隔的列表
@media not screen and (color), print and (color)
查詢是這樣子的
@media (not (screen and (color))), print and (color)only
only操作符用于阻止不支持帶有media feature的media queries的瀏覽器應(yīng)用特定style
<link rel="stylesheet" media="only screen and (color)" href="example.css" />
media features
說了好多次media feature了,到底有多少個media feature呢
•width:瀏覽器寬度
•height:瀏覽器高度
•device-width:設(shè)備屏幕分辨率的寬度值
•device-height:設(shè)備屏幕分辨率的高度值
•orientation:瀏覽器窗口的方向縱向還是橫向,當窗口的高度值大于等于寬度時該特性值為portrait,否則為landscape。
•aspect-ratio:比例值,瀏覽器的縱橫比.
•device-aspect-ratio:比例值,屏幕的縱橫比.
•color:設(shè)備使用多少位的顏色值,如果不是彩色設(shè)備,值為0
•color-index:色彩表的色彩數(shù)
•monochrome:單色幀緩沖器每個像素的字節(jié)
•resolution:分辨率值,設(shè)備分辨率值
•scan:電視機類型設(shè)備掃描方式,progressive或interlace
•grid:只能指定兩個值0或1
如何引入media
有兩種常用的引入方式
1、link方法引入
<link rel="stylesheet" type="text/css" href="styleB.css" media="screen and (min-width: 600px) and (max-width: 800px)">
2、@media引入
@media screen and (min-width: 600px) and (max-width: 800px){
選擇器{
屬性:屬性值;
}
}
瀏覽器兼容性
應(yīng)用
For iPhone 4
<link rel="stylesheet" media="only screen and (-webkit-min-device-pixel-ratio: 2)" type="text/css" href="iphone4.css" />
For iPad
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">移動設(shè)備iPad上的Safari和在iPhone上的是相同的,只是他們不同之處是iPad聲明了不同的方向,比如說上面的例子,在縱向(portrait)時采用portrait.css來,在橫向(landscape)時采用landscape.css。
For Android
/*240px的寬度*/
<link rel="stylesheet" media="only screen and (max-device-width:240px)" href="android240.css" type="text/css" />
/*360px的寬度*/
<link rel="stylesheet" media="only screen and (min-device-width:241px) and (max-device-width:360px)" href="android360.css" type="text/css" />
/*480px的寬度*/
<link rel="stylesheet" media="only screen and (min-device-width:361px) and (max-device-width:480px)" href="android480.css" type="text/css" />
參考
http://www.w3cplus.com/content/css3-media-queries
http://www.w3cplus.com/css3/css3-media-queries-for-iPhone-and-iPads
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Media_queries
相關(guān)文章
- 這篇文章主要介紹了設(shè)計適用于打印的CSS樣式,特別適用于生成文件類型的頁面直接打印使用,需要的朋友可以參考下2015-07-09
- 網(wǎng)頁打印效果的實現(xiàn)并不難,下面為大家介紹下如何通過css控制漂亮的網(wǎng)頁打印效果,感興趣的朋友不要錯過2013-10-12
- 在以前,為Web頁面創(chuàng)建一個打印機友好的版本意味著要設(shè)計一個布局和格式都經(jīng)過修改的單獨頁面,這樣才能夠在打印的時候獲得令人滿意的效果。現(xiàn)在,通過使用結(jié)構(gòu)化的XHTML和2009-04-02
- 網(wǎng)頁制作Webjx文章簡介:CSS相對比較弱,例如: 自動分頁, 就基本沒啥實際用途。我們通常需要自己在需要的時候,強制瀏覽器分頁. 雖然webjx.com向大家2009-04-02
- 在以前,為Web頁面創(chuàng)建一個打印機友好的版本意味著要設(shè)計一個布局和格式都經(jīng)過修改的單獨頁面,這樣才能夠在打印的時候獲得令人滿意的效果?,F(xiàn)在,通過使用結(jié)構(gòu)化的XHT2008-10-17
- 這篇文章主要介紹了詳解CSS3中@media的實際使用,是CSS3入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-08-04
- 這篇文章主要介紹了CSS3的media query學(xué)習(xí)攻略,media query的媒體查詢經(jīng)常被用于設(shè)計響應(yīng)式網(wǎng)頁,需要的朋友可以參考下2015-07-21
詳解CSS3中Media Queries的相關(guān)使用
這篇文章主要介紹了詳解CSS3中Media Queries的相關(guān)使用,是CSS3入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-07-17CSS3 Media Queries(響應(yīng)式布局可以讓你定制不同的分辨率和設(shè)備)
Media Queries這功能是非常強大的,他可以讓你定制不同的分辨率和設(shè)備,并在不改變內(nèi)容的情況下,讓你制作的web頁面在不同的分辨率和設(shè)備下都能顯示正常,并且不會因此而丟2013-06-06徹底弄明白CSS3的Media Queries(跨平臺設(shè)計)
CSS3的Media Queries 完美解決網(wǎng)站與手機跨平臺設(shè)計.2010-07-27

