weex-nuke
Version:
基于 Rax 、Weex 的高性能组件体系 ~~
27 lines (26 loc) • 742 B
JavaScript
import { isWeex } from 'nuke-env';
/**
* @description parse rem to even px to solve andoird float px issue.
*/
export function caculateRemToPx(rem, defaultWidth = 750) {
// Default 1 rem to 1 px
if (typeof rem === 'object' && 'raw' in rem) {
rem = rem.raw;
}
if (isWeex) return rem;
rem = exports.removeRemUnit(rem);
const defaultPixUnit = document.documentElement.clientWidth / defaultWidth;
const num = Math.round(parseFloat(rem) * defaultPixUnit);
if (num % 2 === 0) {
return `${num}px`;
}
return `${num - 1}px`;
}
/**
* @description remove rem unit for string like 12rem => 12
* @param {string or number} rem
*/
export function removeRemUnit(rem) {
rem = String(rem);
return rem.replace('rem', '');
}