測試åªé«æ¥è©¢
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015å¹´7æ.
坦驿§è³ª: 鿝ä¸å實é©ä¸çåè½
æ¤åè½å¨æäºç覽å¨å°å¨éç¼ä¸ï¼è«åèå
¼å®¹è¡¨æ ¼ä»¥å¾å°ä¸åç覽å¨ç¨çåè¼ã
DOM æä¾äºä¸åç¨ç¨å¼å»æ¸¬è©¦ media query çæ¹æ³ï¼é£å°±æ¯éé MediaQueryList ç©ä»¶ï¼éé MediaQueryList ç©ä»¶ä¸ç屬æ§åæ¹æ³ï¼æåå¯ä»¥å¾ç¥ãè§å¯ç®å media query ççæ
ã
åµå»º media query list ç©ä»¶
ééå³å
¥ç®æ¨ medai query å° window.matchMedia æ¹æ³ï¼æåå°å¯ä»¥åå¾ç¸å°æç MediaQueryList ç©ä»¶ã
以ä¸ç¯ä¾å°åå¾åµæ¸¬è¢å¹æ¹åç MediaQueryList ç©ä»¶ï¼
var mql = window.matchMedia("(orientation: portrait)");
æª¢æ¥ media query çµæ
è®å MediaQueryList ç©ä»¶ ç matches 屬æ§å°±å¯ä»¥å¾ç¥æ¸¬è©¦çµæï¼
if (mql.matches) {
/* The device is currently in portrait orientation */
} else {
/* The device is currently in landscape orientation */
}
æ¥æ¶æ¸¬è©¦çµæéç¥
ç¶æåæ³è¦åæ
便 media query æ¸¬è©¦çæ³å·è¡å°æèçï¼é¤äºæçºå®æåµæ¸¬å¤ï¼éæä¸åæ´ææççéå¾ï¼é£å°±æ¯è¨»å media query çäºä»¶èçå¨ (listener)ãåªè¦å¼å« MediaQueryList ç©ä»¶ä¸ addListener æ¹æ³ï¼å³å
¥ç¬¦å MediaQueryListListener ä»é¢ç listener ä¾¿å®æäºä»¶è¨»åï¼
var mql = window.matchMedia("(orientation: portrait)");
mql.addListener(handleOrientationChange);
handleOrientationChange(mql);
ä¸é¢æåæ¿è¢å¹æ¹å media query 註åäºä¸å listenerãè«æ³¨æï¼å¨ç¬¬ä¸æ¬¡è¨»åå¾ï¼listener æç«å»è¢«å¼å«ä¸æ¬¡ï¼éæ¯çºäºåå§åæºåï¼å çºæåå¯è½é è¨ UI æ¯éå° 'portait' 模å¼ï¼ä½ç®å廿¯ 'landscape' 模å¼ï¼æä»¥éåç¬¬ä¸æ¬¡å¼å«å°çµ¦äºæåä½åå§å調æ´ç空éã
ä¸é¢handleOrientationChange() æ¹æ³ä¾¿æ¯æåéå°è¢å¹æ¹åè®åç listenerï¼
function handleOrientationChange(mql) {
if (mql.matches) {
/* The device is currently in portrait orientation */
} else {
/* The device is currently in landscape orientation */
}
}
åæ¢æ¥æ¶æ¸¬è©¦çµæéç¥
ç¶æåä¸éè¦æ¥åéç¥æï¼åªéè¦å¼å« removeListener æ¹æ³ï¼ç¶å¾å³å ¥æ¬²ç§»é¤ç listener å³å¯ï¼
mql.removeListener(handleOrientationChange);