国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何在 JavaScript 中使用媒體查詢

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

前言?

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

比如:

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

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

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

在JavaScript中使用媒體查詢?

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

Window.matchMedia()

Window? 的 「?matchMedia()」 方法返回一個新的 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。

總結?

我們了解到,借助該matchMedia()方法,我們在 CSS 中經常使用的媒體查詢現在也可以在 JavaScript 中使用。并且使用matchMedia()可以為我們提供更好的性能,而不是在window 上添加事件偵聽器resize。與依賴于window做一些事情的舊方法相比,我們可以使用媒體查詢執行更多檢查。

責任編輯:華軒 來源: 前端南玖
相關推薦

2012-12-10 10:58:02

IBMdW

2019-04-23 15:20:26

JavaScript對象前端

2013-11-01 09:38:38

響應試設計媒體查詢

2020-10-21 07:48:36

媒體查詢設計

2022-06-23 08:00:53

PythonDateTime模塊

2021-03-09 07:27:40

Kafka開源分布式

2022-05-17 08:25:10

TypeScript接口前端

2021-06-09 09:36:18

DjangoElasticSearLinux

2015-08-27 09:46:09

swiftAFNetworkin

2011-08-10 09:31:41

Hibernateunion

2024-01-18 08:37:33

socketasyncio線程

2019-09-16 19:00:48

Linux變量

2014-07-02 09:47:06

SwiftCocoaPods

2024-09-06 11:34:15

RustAI語言

2020-11-30 11:55:07

Docker命令Linux

2020-04-09 10:18:51

Bash循環Linux

2023-11-09 16:43:38

CSS Grid網頁布局

2024-06-26 09:51:23

2022-07-27 15:30:24

媒體查詢css

2023-04-06 11:10:31

閉包JavaScript
點贊
收藏

51CTO技術棧公眾號

国产成人精品视频免费看| 欧美黑人xxxxx| a黄色在线观看| 韩国av一区二区三区在线观看| 久久亚洲影音av资源网| 国产乱视频在线观看| 国产亚洲欧洲997久久综合| 97人人模人人爽视频一区二区 | 中文字幕一区二区三区5566| 亚洲肉体裸体xxxx137| 亚洲福利影片在线| 色视频精品视频在线观看| 国产成人精品1024| 国产精品毛片一区视频| 日韩深夜福利| 久久天天躁狠狠躁夜夜躁| 美女的胸无遮挡在线观看| 日本久久电影网| 天堂社区在线视频| 韩国av一区二区三区| 国产欧美一区二区视频| 久久一区二区中文字幕| 久久久噜噜噜久久| 国产69精品久久久久按摩| 欧美成人官网二区| eeuss影院www在线观看| 亚洲无人区一区| www.夜夜爽| 久久久.com| 欧美精品自拍视频| 国产成人无遮挡在线视频| 视频一区二区三| 亚洲自拍另类| 999国内精品视频在线| 日本不卡免费一区| 国产精品老女人精品视频| 日韩欧美影院| 国a精品视频大全| 在线一区二区三区视频| 自拍偷拍免费精品| 九九九精品视频| 日韩有码在线观看| 国产精品视频一区二区三区综合| 尤物精品国产第一福利三区| 韩日成人影院| 中文字幕一区电影| 亚洲精品成a人ⅴ香蕉片| 俺去亚洲欧洲欧美日韩| 日韩精品一级毛片在线播放| 一区二区三区久久精品| 日本电影久久久| 大胆人体色综合| 88久久精品| 57pao精品| 色婷婷一区二区三区| 国产精品一区二区三区成人| av在线不卡顿| 成人黄色片视频网站| 亚洲精品影院在线观看| 欧美精品国产精品久久久| 六月丁香婷婷色狠狠久久| 超碰在线免费观看97| 91麻豆精品视频| 91传媒在线观看| 日韩欧美国产一区二区| 欧美成人xxx| 日韩av中文字幕在线免费观看| 亚洲欧美一区二区三区| 日韩网站免费观看| 亚洲免费福利一区| 国产一区免费| 国产一区二区三区观看| 成年人网站免费视频| 最好看的中文字幕久久| 日本免费一区二区三区最新| 日韩一级二级三级| 国产美女亚洲精品7777| 国产精品香蕉在线观看| 久久免费高清| 国产二区视频在线播放| 亚洲欧美韩国综合色| 青青久在线视频| 亚洲福利视频在线| 国语精品视频| 成人网中文字幕| 男女性色大片免费观看一区二区| 国产亚洲欧美在线视频| 偷拍与自拍一区| 色多多在线观看| 韩国19禁主播vip福利视频| 综合激情婷婷| 国产精品亚洲天堂| 亚洲精品久久7777| 丰乳肥臀在线| 国产精品激情自拍| 久久av资源网| 人猿泰山h版在线观看| 亚洲成人网久久久| 四虎5151久久欧美毛片| 婷婷五月色综合| 亚洲三级久久久| 17videosex性欧美| 国产精品美女久久久免费 | 国产一区二区欧美| 日韩三级电影免费观看| 国产精品色在线| 成人在线视频亚洲| 欧美专区在线播放| 久久精品国产亚洲aⅴ| 国产天堂在线观看| 亚洲欧美三级伦理| 一本精品一区二区三区| 国产精品动漫网站| 欧美一级二级三级蜜桃| 欧美大胆a级| 精品视频在线观看一区二区| 欧美性猛交xxxx偷拍洗澡| 亚洲青青久久| 亚洲 国产 日韩 综合一区| 亚洲综合免费观看高清完整版在线 | 91蜜桃传媒精品久久久一区二区| 在线观看免费观看在线91| 国产午夜精品一区理论片飘花 | 免费观看久久av| 特色特色大片在线| 欧美亚洲综合色| 视频福利一区| 青青草视频在线免费播放 | av二区三区| 国产一区二区激情| 新67194成人永久网站| 欧美13~18sex性hd| 欧美激情一区二区三区在线视频观看 | 亚洲欧洲闷骚av少妇影院| 久久精品福利视频| 日韩av高清在线观看| 中文天堂在线观看| 韩国v欧美v日本v亚洲| 99久久精品费精品国产一区二区| 超碰porn在线| 国产高清一区视频| 无码av免费一区二区三区试看 | 热久久一区二区| 精品欧美不卡一区二区在线观看| 欧美日韩国产第一页| 国产一区二区三区四区五区入口 | 91色.com| 欧美一级二级视频| 中文字幕精品一区日韩| 欧美丰满美乳xxx高潮www| 精品国产一级毛片| 大胆高清日本a视频| 美女少妇精品视频| 成人动漫一区二区在线| 国产桃色电影在线播放| 欧美日韩一区在线视频| 91.com在线观看| 国内外成人激情视频| 欧美三区视频| 亚洲第一成年免费网站| 国产欧美va欧美va香蕉在线| 亚洲欧美另类小说| 日韩精品欧美大片| videoxxxx另类日本极品| 国产精品99久久久久久久久 | 亚洲四虎av| 久久久久国产精品一区| eeuss影院一区二区三区| 中韩乱幕日产无线码一区| 99热这里只有精品7| 亚洲欧美自拍一区| 97精品视频在线观看自产线路二| 黑人一区二区三区| 久草综合在线观看| 97久久久久久| 亚洲成av人片观看| 激情欧美丁香| 2021国产在线| 国产精品成人久久电影| 亚洲性猛交xxxxwww| 99久久精品国产毛片| 亚洲精品国产九九九| 天天激情综合| 国产精品一区二区久久久| 色哟哟在线观看一区二区三区| 一区二区自拍| 久草在线中文最新视频| 亚洲男人的天堂网站| 99视频在线观看一区三区| 第一区第二区在线| 女人偷人在线视频| 亚洲国产一区在线| 北条麻妃久久精品| 一区视频在线播放| 欧美日韩精品| 国精产品一区二区三区有限公司 | av在线精品| 久久白虎精品| 一区二区欧美日韩| 久久久久久久久综合|