MediaQueryList
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Đối tượng MediaQueryList lưu trữ thông tin về một media query được áp dụng cho tài liệu, hỗ trợ cả việc khớp ngay lập tức và khớp dựa trên sự kiện so với trạng thái của tài liệu.
Bạn có thể tạo ra MediaQueryList bằng cách gọi matchMedia() trên đối tượng window. Đối tượng kết quả xử lý việc gửi thông báo đến các trình lắng nghe khi trạng thái media query thay đổi (tức là khi bài kiểm tra media query bắt đầu hoặc dừng đánh giá là true).
Điều này rất hữu ích cho thiết kế thích ứng, vì điều này giúp có thể quan sát tài liệu để phát hiện khi media query của nó thay đổi, thay vì kiểm tra giá trị định kỳ, và cho phép bạn thực hiện các thay đổi theo chương trình đối với tài liệu dựa trên trạng thái media query.
Thuộc tính phiên bản
Giao diện MediaQueryList kế thừa các thuộc tính từ giao diện cha, EventTarget.
Phương thức phiên bản
Giao diện MediaQueryList kế thừa các phương thức từ giao diện cha, EventTarget.
addListener()Deprecated-
Thêm vào
MediaQueryListmột callback được gọi bất cứ khi nào trạng thái media query, tức là tài liệu có khớp với các media query trong danh sách hay không, thay đổi. Phương thức này tồn tại chủ yếu để tương thích ngược; nếu có thể, bạn nên dùngaddEventListener()để theo dõi sự kiệnchange. removeListener()Deprecated-
Xóa callback trình lắng nghe được chỉ định khỏi các callback được gọi khi
MediaQueryListthay đổi trạng thái media query, điều này xảy ra bất cứ khi nào tài liệu chuyển đổi giữa khớp và không khớp với các media query được liệt kê trongMediaQueryList. Phương thức này được giữ lại cho tương thích ngược; nếu có thể, bạn thường nên dùngremoveEventListener()để xóa các callback thông báo thay đổi (đã được thêm vào trước đó bằngaddEventListener()).
Sự kiện
Các sự kiện sau đây được gửi đến các đối tượng MediaQueryList:
Ví dụ
Ví dụ này tạo ra MediaQueryList và sau đó thiết lập trình lắng nghe để phát hiện khi trạng thái media query thay đổi, chạy hàm tùy chỉnh khi thay đổi đó xảy ra để thay đổi giao diện của trang.
const para = document.querySelector("p");
const mql = window.matchMedia("(width <= 600px)");
function screenTest(e) {
if (e.matches) {
/* the viewport is 600 pixels wide or less */
para.textContent = "This is a narrow screen — less than 600px wide.";
document.body.style.backgroundColor = "red";
} else {
/* the viewport is more than 600 pixels wide */
para.textContent = "This is a wide screen — more than 600px wide.";
document.body.style.backgroundColor = "blue";
}
}
mql.addEventListener("change", screenTest);
Note: Bạn có thể tìm thấy ví dụ này trên GitHub (xem mã nguồn, và cũng xem nó chạy trực tiếp).
Bạn có thể tìm thấy các ví dụ khác trên các trang thuộc tính và phương thức riêng lẻ.
Thông số kỹ thuật
| Specification |
|---|
| CSSOM View Module> # the-mediaquerylist-interface> |
Tương thích trình duyệt
Xem thêm
- Media query
- Sử dụng media query từ code
window.matchMedia()MediaQueryListEvent- Bài viết
Window.devicePixelRatiocũng có ví dụ hữu ích