UNPKG

uni-ui-plus

Version:

🦄基于uni-ui的二次封装的uniapp组件库

77 lines (69 loc) 2.49 kB
import { isArray, isObj, isString } from './is' /** * @description 对num自动填充px * @param {number} num * @return {string} num+px */ export function addUnit(num: number | string) { return Number.isNaN(Number(num)) ? `${num}` : `${num}px` } /** * 将驼峰命名转换为短横线命名。 * @param {string} word 待转换的词条 * @returns {string} 转换后的结果 */ export function kebabCase(word: string): string { // 使用正则表达式匹配所有大写字母,并在前面加上短横线,然后转换为小写 const newWord: string = word .replace(/[A-Z]/g, (match) => { return `-${match}` }) .toLowerCase() return newWord } /** * 将外部传入的样式格式化为可读的 CSS 样式。 * @param {object | object[]} styles 外部传入的样式对象或数组 * @returns {string} 格式化后的 CSS 样式字符串 */ export function objToStyle(styles: Record<string, any> | Record<string, any>[]): string { // 如果 styles 是数组类型 if (isArray(styles)) { // 使用过滤函数去除空值和 null 值的元素 // 对每个非空元素递归调用 objToStyle,然后通过分号连接 const result = styles .filter((item) => { return item != null && item !== '' }) .map((item) => { return objToStyle(item) }) .join(';') // 如果结果不为空,确保末尾有分号 return result ? (result.endsWith(';') ? result : `${result};`) : '' } if (isString(styles)) { // 如果是字符串且不为空,确保末尾有分号 return styles ? (styles.endsWith(';') ? styles : `${styles};`) : '' } // 如果 styles 是对象类型 if (isObj(styles)) { // 使用 Object.keys 获取所有属性名 // 使用过滤函数去除值为 null 或空字符串的属性 // 对每个属性名和属性值进行格式化,通过分号连接 const result = Object.keys(styles) .filter((key) => { return styles[key] != null && styles[key] !== '' }) .map((key) => { // 使用 kebabCase 函数将属性名转换为 kebab-case 格式 // 将属性名和属性值格式化为 CSS 样式的键值对 return [kebabCase(key), styles[key]].join(':') }) .join(';') // 如果结果不为空,确保末尾有分号 return result ? (result.endsWith(';') ? result : `${result};`) : '' } // 如果 styles 不是对象也不是数组,则直接返回 return '' }