You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
727 B
33 lines
727 B
const EPS = 1e-4
|
|
const BASE_DEVICE_WIDTH = 750
|
|
let isIOS = false
|
|
let deviceWidth = 0
|
|
let deviceDPR = 0
|
|
|
|
export function upx2px (number, newDeviceWidth) {
|
|
number = Number(number)
|
|
if (number === 0) {
|
|
return 0
|
|
}
|
|
let result = (number / BASE_DEVICE_WIDTH) * (newDeviceWidth || deviceWidth)
|
|
if (result < 0) {
|
|
result = -result
|
|
}
|
|
result = Math.floor(result + EPS)
|
|
if (result === 0) {
|
|
if (deviceDPR === 1 || !isIOS) {
|
|
result = 1
|
|
} else {
|
|
result = 0.5
|
|
}
|
|
}
|
|
return number < 0 ? -result : result
|
|
}
|
|
|
|
export default function initUpx2px (nvue) {
|
|
const env = nvue.config.env
|
|
|
|
deviceDPR = env.scale
|
|
deviceWidth = Math.ceil(env.deviceWidth / deviceDPR)
|
|
isIOS = env.platform === 'iOS'
|
|
}
|
|
|