JavaScript 中的媒體查詢

Shraddha Paghdar 2022年5月10日
JavaScript 中的媒體查詢

響應式設計確保內容在所有螢幕尺寸下看起來都不錯。

CSS 使用媒體查詢來應用基於瀏覽器屬性的各種樣式,包括寬度、高度或螢幕解析度。

CSS 媒體查詢應用自定義樣式,從而產生了響應式設計。

在 JavaScript 中使用 window.matchMedia() 方法定義媒體查詢的條件

如果我們想在瀏覽器為 480 畫素寬時將訊息記錄到控制檯,媒體查詢的工作方式與 CSS 類似。

const mediaQuery = window.matchMedia( '( min-width: 480px )' )

matchMedia() 方法返回一個新的 MediaQueryList 物件,然後可以使用該物件來確定文件是否與媒體查詢字串匹配。

它監視文件並檢測它何時匹配或中斷匹配。然後,當滿足此條件時,我們可以觸發日誌記錄到控制檯:

if (mediaQuery.matches) {
  console.log('Screen changed and media query matched!')
}

match 介面的 ReadOnly 屬性的媒體查詢列表是一個布林值,如果文件當前與媒體查詢列表匹配,則返回 true,否則返回 false

當匹配值發生變化時,可以通過觀察 MediaQueryList 中觸發的變化事件得到通知。

const mediaQuery = window.matchMedia('(min-width: 480px)');
function handleScreenChange(e) {
  if (e.matches) {
    console.log('Screen changed and media query matched!');
  }
}
mediaQuery.addListener(handleScreenChange);
handleScreenChange(mediaQuery);

輸出:

"Screen changed, and media query matched!"

使用此程式碼的唯一缺點是,如果警報被解除,它只會觸發一次。

如果我們更改螢幕寬度並在不重新整理的情況下重試,它不會再次觸發。我們可以使用一個事件監聽器 addListener 來檢查更新以避免這個問題。

Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn