CSS3: Media Queries

来源:http://www.cnblogs.com/majiangl/archive/2016/03/28/css3-media-queries.html
-Advertisement-
Play Games

Media Queries是CSS3最具革命性的功能之一,它使得我們的網站能夠適配各種不同的設備。具體來說,開發人員可以使用Media Queries來識別設備環境,然後根據不同的設備環境應用不同的CSS規則,從而可以實現在不同的設備下,使用不同的佈局和皮膚。 語法 應用Media Queries有 ...


Media Queries是CSS3最具革命性的功能之一,它使得我們的網站能夠適配各種不同的設備。具體來說,開發人員可以使用Media Queries來識別設備環境,然後根據不同的設備環境應用不同的CSS規則,從而可以實現在不同的設備下,使用不同的佈局和皮膚。

語法

應用Media Queries有下麵三種方式:

1. 在引入css文件時使用 media 屬性

<link href="file.css" rel="stylesheet" media="logic media and (expression)">

2. 在css文件中使用 @import 指令

@import url('file.css') logic media and (expression);

3. 在css文件中使用 @media 指令

@media logic media and (expression) { rules }

 

當設備環境符合 logic media and (expression) 描述時,相應的css會生效或者被應用。第一種情況,整個file.css會生效;第二種情況,整個file.css會生效;第三種情況,大括弧內的所有css生效。

logic取值可以為not, only。

media代表媒體類型,最常使用的是screen, print,分別代表屏幕環境和列印環境,預設為all。

expression為設備特征的判斷,比如height, width等,下文會細說。

/* 在列印環境下,print.css生效 */
<link href="print.css" rel="stylesheet" media="print">

/* notprint.css作用於非列印環境下 */
@import url('notprint.css') not print;

/* 僅當在屏幕環境下並且視窗大小至少為1000px時,相應的css生效 */
@media only screen and (min-width: 1000px) {
    #example {
        background-color: red;
    }
}

/* 多條媒體查詢用,分隔 */
@media screen, print {
    #example {
        background-color: red;
    }
}

Media Features

上文中的expression即為Media Features表達式,用來描述設備的特征,語法為 @media (feature: value) { rules } 。feature代表特征名,value為其值,例子見上文。

下麵是Media Queries提供的所有Features,筆者已按實用性將其排序。

Width and Height

代表網頁渲染視窗的寬度和高度,即瀏覽器顯示區域的大小。

@media (width: 600px) { rules }

特征值同時支持max-和min-首碼,例如:

@media (max-width: 480px) { rules }
@media (min-width: 640px) { rules }

Pixel Ratio

像素比或解析度,這裡Pixel Ratio其實為Device Piexel Ratio(DPR),意為設備物理像素點與邏輯像素點的比值。

比如iPhone 5S,物理解析度為640*1136,但其CSS解析度為320*568。也就是說,它的邏輯解析度為320*568,DPR為2,即兩個水平物理像素點和兩個垂直物理像素點,構成一個邏輯像素點。

 

圖1:DPR 1(左),DPR 2(中),DPR 3(右)

 

在大多數情況下,開發人員都不需要關心設備的物理解析度,文字和矢量圖都會表現良好,但是非矢量圖在高分屏下會出現嚴重的失真。一張普通的圖片,在DPR為2的設備上,就相當於圖片放大了2倍,用戶能明顯感覺模糊。

這時候,Media Queries就派上了用場,可以用此語法來判斷設備的DPR @media media and (resolution: value) { rules } 。

value的單位有:dots per inch(DPI), dots per centimeter(DPCM),或者對我們更直觀的,dots per pixel(DPPX)。

@media (resolution: 1.5dppx) { rules }

@media (max-resolution: number) { rules }
@media (min-resolution: number) { rules }

 所以,在DPR=2的情況下,我們可以使用2倍解析度的圖片:

1 div { background-image: url('image.png'); }
2 @media (resolution: 2dppx) {
3     div { background-image: url('image-2x.png'); }
4 }

相容性

Chrome, Firefox, IE 10+支持 resolution Media Feature, 但IE不支持DPPX單位。為了相容IE,可以使用DPI作為單位(標準屏幕DPI為96),例如:

@media (resolution: 1.5dppx), (resolution: 144dpi) { rules }

另外,Safari不支持 resolution ,使用 -webkit-device-pixel-ratio 代替:

@media (resolution: 1.5dppx), (resolution: 144dpi), (-webkit-device-pixel-ratio: 2) { rules }

Device Width and Height

這兩個屬性檢測的是設備屏幕的寬度和高度,實用價值不高。這裡的寬度和高度指的是設備的物理像素。

@media (device-width: number) { rules }
@media (device-height: number) { rules }

@media (max-device-width: number) { rules }
@media (max-device-height: number) { rules }

@media (min-device-width: number) { rules }
@media (min-device-height: number) { rules }

Orientation

設備朝向:landscape或portrait。當寬>高時,設備為landscape模式;反之,則為portrait模式。這個功能對手持設備比較有用。

@media (orientation: landscape) { rules }
@media (orientation: portrait) { rules }

Aspect Ratio

寬高比,例如16/9,16/10等。 aspect-ratio 表示瀏覽器的寬高比;而 device-aspect-ratio 表示設備的寬高比。

@media (aspect-ratio: horizontal/vertical) { rules }
@media (device-aspect-ratio: horizontal/vertical) { rules }

@media (min-aspect-ratio: horizontal/vertical) { rules }
@media (min-device-aspect-ratio: horizontal/vertical) { rules }

@media (max-aspect-ratio: horizontal/vertical) { rules }
@media (max-device-aspect-ratio: horizontal/vertical) { rules }
@media (min-device-aspect-ratio: 16/9) {...}

註意,iPhone在landscape和portrait模式中,會反饋相同的寬高比;而另外一些設備,會在不同Orientation下返回不同的寬高比。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 類的介面分為兩部分 一、良好的抽象 類的介面應該展現一致的抽象層次。每一個類應該實現一個ADT,並且僅僅實現這個ADT。 一定要理解類所實現的抽象是什麼。理解對應的ADT。 提供成對的服務,比如Add、Delete。On、Off等。不要盲目創建相反的操作,但是得考慮是否有需要 把不相關的信息轉移到其 ...
  • 獲取【下載地址】 QQ: 313596790 【免費支持更新】三大資料庫 mysql oracle sqlsever 更專業、更強悍、適合不同用戶群體【新錄針對本系統的視頻教程,手把手教開發一個模塊,快速掌握本系統】A 集成代碼生成器(開發利器); 技術:313596790 增刪改查的處理類,ser ...
  • × 目錄 [1]text-align [2]writing-mode [3]dir[4]direction[5]unicode-bidi 前面的話 一般地,正常網頁文本方向都是從上到下,從左到右。實際上,有多種設置文本方向的屬性,前面已經詳細介紹過text-align,HTML全局屬性中有一個"di ...
  • Sass Maps 的函數-map-remove($map,$key),keywords($args) map-remove($map,$key) map-remove($map,$key)函數是用來刪除當前$map中的某一個$key,從而得到一個新的 map,其返回的值是一個map.他並不能直接從 ...
  • 作為一名Vue.js的忠實用戶,我想有必要寫點文章來歌頌這一門美好的語言了,我給它的總體評價是“簡單卻不失優雅,小巧而不乏大匠”,下麵將圍繞這句話給大家介紹Vue.js,希望能夠激發你對Vue.js的興趣。 Vue.js簡介 Vue.js的作者為Evan You(尤雨溪),任職於Google Cre ...
  • 1. bootstrap 是什麼? 簡潔、直觀、強悍的前端開發框架,讓web開發更迅速、簡單。 2. bootstrap 原理介紹。 Bootstrap建立了一個響應式的12列格網佈局系統,它引入了(固定式)fixed和(流式)fluid-with兩種佈局方式。Bootstrap 是移動設備優先的。 ...
  • <script> function 事件名字(){var 代稱=document.getElementById("標簽id“) 代稱.style.css 代稱.style.css ...... } </script> 滑鼠點擊 滑鼠放上去 滑鼠離開等效果執行事件名字 alert:彈出提示框 aler ...
  • javascript!是一門非常強大的腳本語言,應用的範圍非常廣泛,每一個web開發者學好javascript也是必須的,本套視頻教程詳細的講解了javascript各個知識點、關鍵點,其中涉及到高深的函數概念、原型概念、介面概念、單體概念、更是詳細的講解了javascript設計模式。 本視頻教程 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...