亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在JavaScript中使用媒體查詢

發布時間:2023-03-07 18:00:18 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“怎么在JavaScript中使用媒體查詢”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么在JavaScript中使用媒體查詢”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    前言

    說起媒體查詢想必大家最先想到的都是CSS中@media,沒錯,這是我們最常用的媒體查詢方法,主要用來為我們的網站做適配處理。

    比如:

    h2 {
      font-size: 2rem;
      color: green;
    }
    @media (min-width: 600px) {
      h2 {
        font-size: 4rem;
      }
    }

    我們使用 CSS 告訴瀏覽器標題需要為綠色,字體大小為 2rem。但是當屏幕寬度超過 600px 時,字體大小需要增加到 4rem。

    上面這種方式相信大家都并不陌生,現在我們再來嘗試另外一種媒體查詢的方法。

    在JavaScript中使用媒體查詢

    我們可以在 JavaScript 代碼中使用與上面相同的媒體查詢。主要API就是 ----matchMedia()

    Window.matchMedia()

    WindowmatchMedia() 方法返回一個新的 MediaQueryList對象,表示指定的媒體查詢 (en-US)字符串解析后的結果。返回的 MediaQueryList 可被用于判定 Document 是否匹配媒體查詢,或者監控一個 document 來判定它匹配了或者停止匹配了此媒體查詢。(MDN)

    語法

    mqList = window.matchMedia(mediaQueryString)

    參數

    matchMedia()方法接受單個參數作為其值,即您要檢查的媒體查詢。

    • mediaQueryString:一個被用于媒體查詢解析的字符串。

    返回值

    一個用來媒體查詢的新的MediaQueryList對象

    它包含兩個屬性:

    media,它將媒體查詢存儲為序列化字符串

    matches,它基本上是一個布爾值,如果我們作為參數提供的媒體查詢與文檔匹配則返回true

    調用matchMedia本身不會做太多的事情,并且我們只能在頁面加載時檢查是否滿足查詢條件,但如果我們想要在用戶改變屏幕大小時也能檢測到這種變化,在過去有兩種方法,稱為addListener()removeListener(),可以使用它們來監聽媒體查詢狀態的任何變化。但是,它們現在已被棄用。

    現在我們應該考慮使用MediaQueryList addEventListener

    addEventListener

    matchMedia - change

    <div id="show"></div>
    <script>
      let mqList = window.matchMedia('(min-width: 600px)');
    function widthChangeCallback(mqList) {
      console.log(mqList, '-')
      if(mqList.matches) {
        show.innerHTML = `<p class="large">我比599px大</p>`;
      } else {
        show.innerHTML = `<p class="small">我比599px小</p>`;
      }
    }
    widthChangeCallback(mqList)
    mqList.addEventListener('change', widthChangeCallback);
    </script>

    當我們調整窗口大小時,這段代碼會檢測屏幕寬度并更新文案

    window - resize

    看到這里可能大家都想到了resize事件,沒錯該matchMedia()方法的另一種替代方法涉及將resize事件偵 聽 器附加到window,同樣能夠實現上面的效果。

    function widthChangeCallback() {
      if(window.innerWidth > 599) {
        show.innerHTML = `<p class="large">我比599px大</p>`;
      } else {
        show.innerHTML = `<p class="small">我比599px小</p>`;
      }
    }
    window.addEventListener('resize', widthChangeCallback);
    widthChangeCallback();

    性能對比

    既然兩種方案都能實現,所以我們很自然地想知道它們中的哪一個能提供更好的性能,以及我們應該在什么時候使用這些解決方案中的每一個。

    widthChangeCallback()每次調整窗口大小時,調整大小事件偵 聽 器都會觸發該函數。這僅在某些情況下需要響應窗口大小更改的每個實例,例如更新畫布。

    但是,在某些情況下,只有當寬度或高度達到某個閾值時才需要發生某些事情。一個例子就是我們上面所做的文本更新。在這種情況下,matchMedia()將會獲得更好的性能,因為它僅在媒體查詢條件的實際更改時觸發回調。

    從上面我們可以看出兩者的回調執行次數差異巨大,所以我們在開發過程中應當根據業務的實際需求去選擇使用哪一個API。

    讀到這里,這篇“怎么在JavaScript中使用媒體查詢”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    仪陇县| 宣城市| 嘉兴市| 泽库县| 鄂尔多斯市| 安多县| 南川市| 汾阳市| 大渡口区| 五莲县| 万载县| 杂多县| 通许县| 太保市| 遂川县| 礼泉县| 房产| 石狮市| 湘潭县| 榆中县| 恩施市| 工布江达县| 高邮市| 蓬溪县| 定日县| 牟定县| 瑞丽市| 水城县| 鱼台县| 汝州市| 呼伦贝尔市| 延吉市| 南开区| 高台县| 湛江市| 霸州市| 衡南县| 鄂托克前旗| 晋宁县| 绍兴市| 清丰县|