vant
Version:
Mobile UI Components built on Vue
59 lines (47 loc) • 1.22 kB
JavaScript
import { isDef, inBrowser } from '..';
import { isNumeric } from '../validate/number';
export function addUnit(value) {
if (!isDef(value)) {
return undefined;
}
value = String(value);
return isNumeric(value) ? value + "px" : value;
} // cache
var rootFontSize;
function getRootFontSize() {
if (!rootFontSize) {
var doc = document.documentElement;
var fontSize = doc.style.fontSize || window.getComputedStyle(doc).fontSize;
rootFontSize = parseFloat(fontSize);
}
return rootFontSize;
}
function convertRem(value) {
value = value.replace(/rem/g, '');
return +value * getRootFontSize();
}
function convertVw(value) {
value = value.replace(/vw/g, '');
return +value * window.innerWidth / 100;
}
function convertVh(value) {
value = value.replace(/vh/g, '');
return +value * window.innerHeight / 100;
}
export function unitToPx(value) {
if (typeof value === 'number') {
return value;
}
if (inBrowser) {
if (value.indexOf('rem') !== -1) {
return convertRem(value);
}
if (value.indexOf('vw') !== -1) {
return convertVw(value);
}
if (value.indexOf('vh') !== -1) {
return convertVh(value);
}
}
return parseFloat(value);
}