media query和media type總結

serv 7年前發布 | 10K 次閱讀 CSS 前端技術

media type -- 媒體類型

media type是 css2 中的一個非常有用的屬性,通過 media type 我們可以對不同的設備指定特定的樣式,從而實現更豐富的界面。下面要說到 css3 中的 media query 是對 media type 的一種增強。

media type的種類:

  • all-- 適用于所有設備

  • print-- 用于打印機

  • screen-- 適用于彩色電腦顯示器(也包括手機、iPad等手持設備)

  • speech-- 用于語音類型

注意: CSS2.1 和 CSS3 media query 定義了 tty , tv , projection , handheld , braille , embossed , aural 這些 media type ,但是它們在 media query 4 中都廢棄了,所以不推薦使用了

media type的使用方法:

第一種: <link> 標簽的 media 屬性

<link href="style.css" media="screen print" ...

第二種: <style> 標簽的 media 屬性

<style media="all" type="text/css">
    p{
        color: #ff0000
    }
</style>

第三種: @import 方式

<style>
    @import url("xxx.css") "screen,print";
</style>

第四種:在 style 里為某些樣式指定 media

@media speech {
    p{
        color: #ff0000
    }
}

注:若沒有指定media,默認為 all

media query -- 媒體查詢

媒體查詢是通過不同的媒體類型和條件定義不同的樣式表,媒體查詢讓 CSS 可以更精確作用于不同的媒體類型和同一媒體的不同條件。也是 media type 的增強。

語法

媒體查詢包含一個 媒體類型(media type) 以及一個到多個測試 媒體特性(media feature) 的表達式,表達式和媒體類型將根據實際情況計算得到 true 或者 false 。如果指定的媒體類型符合當前設備并且媒體特性表達式都為真,那當前媒體查詢為。

@media screen and (min-width: 700px) and (orientation: landscape) {}
/*其中screen就是媒體類型,min-width: 700px是媒體特性表達式*/

邏輯運算符

  • and 運算符 -- 用于結合多個媒體特性( media feature )到一個 media query

    @media screen and (min-width: 700px) and (orientation: landscape) {
        .name {
            color:red;
        }
    }

    當設備類型為 screen ,且 viewport 的寬度大于 700px ,并且設備可見區域寬度大于高度(橫屏),三個條件都滿足時,大括號內的樣式才會生效。

  • 逗號( , )運算符 -- 用于結合多個 media query

    @media (min-width: 700px), screen and (orientation: landscape) {
        .name {
            color:red;
        }
    }

    上面代表兩種不同設備,一種 all ,一種 screen ,用逗號分隔。

  • not 運算符 -- 用于對整個 media query 取反,必須位于一個 media query 的開頭

    @media not all and (monochrome) {}

    等價于:

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

    注意: not 是對整個 media query 進行否定,不能對單個 media feature 否定

  • only 運算符 --用來定某種特別的媒體類型

    對于支持 Media Query 的設備來說,如果存在 only 關鍵字,Web瀏覽器會忽略 only 關鍵字,并直接根據后面的表達式應用樣式文件。對于不支持 Media Query 的設備,但能夠讀取 Media Type 類型的Web瀏覽器,遇到 only 關鍵字時會忽略這個樣式文件。

    @media only screen and (min-width: 400px) and (max-width: 600px) {}

    不支持 media query 但是支持 media type 的web瀏覽器,會省略后面的樣式文件,上面的實例解釋為:

    @media only {}

    支持 media query 的web瀏覽器會省略 only 關鍵字,上面實例解釋為:

    @media screen and (min-width: 400px) and (max-width: 600px) {}

media feature -- 媒體特性

下面是一些媒體特性,不是全部

  • width-- 定義輸出設備中的 頁面可見區域 寬度

  • height-- 定義輸出設備中的 頁面可見區域 高度

  • device-width-- 定義輸出設備的 屏幕可見 寬度

  • device-height-- 定義輸出設備的 屏幕可見 高度

  • orientation-- 定義'height'是否大于或等于'width'。 portrait 代表是(豎屏), landscape 代表否(橫屏)

  • aspect-ratio-- 定義 width 與 height 的比率,可以設置 min/max

  • device-aspect-ratio-- 定義 device-width 與 device-height 的比率。可以設置 min/max 。如常見的顯示器比率:4/3, 16/9, 16/10

  • resolution-- 定義設備的分辨率。可以設置 min/max 。如:96dpi, 300dpi, 118dpcm

  • color-- 定義每一組輸出設備的彩色原件個數。如果不是彩色設備,則值等于0。可以設置 min/max

media query 常用方法

  • 排他 (exclusive)為確保在某一個條件下只有一個樣式表生效,將查詢條件嚴格劃分,如下面:

    @media (max-width: 400px) {
        html {
            background: red;
        }
    }

    @media (min-width: 401px) and (max-width: 800px) { html { background: green; } }

    @media (min-width: 801px) { html { background: blue; } }</code></pre> </li>

  • 覆蓋(overriding)可以對元素設置相同優先級,使用樣式順序,通過覆蓋,避免排他

    @media (min-width: 400px) {
        html {
            background: red;
        }
    }

    @media (min-width: 600px) { html { background: green; } }

    @media (min-width: 800px) { html { background: blue; } }</code></pre> </li>

  • 無線端優先(Mobile first)默認樣式假設為移動設備寬度,然后通過 min-width 控制擴展樣式

    html {
        background: red;
    }

    @media (min-width: 600px) { html { background: green; } }</code></pre> </li>

  • PC優先(desktop first)默認以寬屏進行樣式設置,通過 max-width 控制樣式覆蓋

    html {
        background: red;
    }

    @media (max-width: 600px) { html { background: green; } }</code></pre> </li> </ul>

    參考資料:

     

    來自:https://segmentfault.com/a/1190000008701062

     

 本文由用戶 serv 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!