UNPKG

zent

Version:

一套前端设计语言和基于React的实现

56 lines (55 loc) 1.69 kB
export function parseFontSize(fontSize) { return parseCSSAbsoluteUnit(fontSize.toLowerCase()); } export function parseBorderWidth(width, fontSize, rootFontSize) { width = width.toLowerCase(); var pixels = parseCSSAbsoluteUnit(width); if (pixels !== null) { return pixels; } return parseCSSFontRelativeUnit(width, fontSize, rootFontSize); } var CSS_ABSOLUTE_UNIT_REGEXP = /(^-?\d*\.?\d+)(cm|mm|in|px|pt|pc)$/; function parseCSSAbsoluteUnit(value) { var result = CSS_ABSOLUTE_UNIT_REGEXP.exec(value); if (result) { var val = parseFloat(result[1]); switch (result[2]) { case 'cm': return (val * 9600) / 254; case 'mm': return (val * 960) / 254; case 'in': return val * 96; case 'pt': return (val * 4) / 3; case 'pc': return val * 16; case 'px': return val; default: return null; } } return null; } var CSS_FONT_RELATIVE_UNIT_REGEXP = /(^-?\d*\.?\d+)(em|rem)$/; function parseCSSFontRelativeUnit(value, fontSize, rootFontSize) { var result = CSS_FONT_RELATIVE_UNIT_REGEXP.exec(value); if (result) { var val = parseFloat(result[1]); switch (result[2]) { case 'em': { var fs = fontSize(); return fs !== null ? fs * val : null; } case 'rem': { var fs = rootFontSize(); return fs !== null ? fs * val : null; } default: return null; } } return null; }