移动端刘海屏设备识别
移动端设备如何识别当前设备是否为刘海屏,Android 与 iOS 方法如下:
// Android
const u = window.navigator.userAgent;
if (u.indexOf('topBar') != -1) {
var matchArr = u.match(new RegExp('topBar\\\\/(\\\\S*)\\\\s+')); //取出Android设备UA里的topBar参数
topBar = matchArr && matchArr[1];
return true;
}
// iOS
if (new RegExp('iPhone OS').test(u)){
var sizeList = ['375*812','414*896','390*844','428*926'];
var size = screen.width + '*' + screen.height;
return screen.height >= 812 || sizeList.indexOf(size) > -1;
} else {
return false;
}
原理是通过 ua
,Android 设备可以直接拿到 ua
中的 topBar
参数,而 iOS 设备会复杂一点,由于 ua
中没有 topBar
这个参数,需要我们通过对设备屏幕尺寸来判断当前设备是否为刘海屏设备,具体可参考下表。
设备 | 分辨率 | 屏幕宽高尺寸 | dpi | ppi |
---|---|---|---|---|
iPhone4S | 960 x 640 | 480 x 320 | 2x | 323 |
iPhone SE | 1136 x 640 | 568 x 320 | 2x | 326 |
iPhone6/6S/7 | 1334 x 750 | 667 x 375 | 2x | 326 |
iPhone6/7 plus | 1920 x 1080 | 960 x 540 | 2x | 401 |
iPhone8 | 1334 x 750 | 667 x 375 | 2x | 326 |
iPhone8 plus | 1920 x 1080 | 960 x 540 | 2x | 401 |
iPhoneX/XS | 2436 x 1125 | 812 x 375 | 3x | 458 |
iPhoneXR | 1792 x 828 | 896 x 414 | 2x | 326 |
iPhone11 | 1792 x 828 | 896 x 414 | 3x | 326 |
iPhone11 Pro | 2436 x 1125 | 812 x 375 | 3x | 458 |
iPhone11 Pro Max | 2688 x 1242 | 896 x 414 | 3x | 458 |
iPhone12 mini | 2340 x 1080 | 780 x 360 | 3x | 476 |
iPhone12/Pro | 2532 x 1170 | 844 x 390 | 3x | 460 |
iPhone12 Pro Max | 2778 x 1284 | 926 x 428 | 3x | 458 |
Q.E.D.