UNPKG

uicore-web

Version:

web ui core

158 lines (132 loc) 3.29 kB
/* * date: 2019-08-21 * desc: */ export function uuid() { return "node-"+new Date().getTime(); // // return (+new Date() * 1e6 + Math.floor(Math.random() * 1e6)).toString(36); // return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { // var r = Math.random() * 16 | 0; // var v = c == 'x' ? r : (r & 0x3 | 0x8) // return v.toString(16) // }) } // export function clone(obj) { let result = ''; // if (typeof obj === 'object') { result = JSON.stringify(obj); result = JSON.parse(result); } else { result = obj; } return result; } var trim = function (str) { // var reExtraSpace = /^\s*(.*?)\s+$/; return str.replace(reExtraSpace, '$1'); }; /** * * @param element DOM 元素。 * @param classNames String 用字符串分割开来。 */ export function addClass(element, classNames) { if (!element || !classNames) { return; } var curClassNames = element.className; // 用空格分来 var classes = (classNames || '').split(' '); for (var i = 0, len = classes.length; i < len; i++) { var classItem = classes[i]; if (!classItem) { continue; } if (element.classList) { element.classList.add(classItem); } else if (!hasClass(element, classItem)) { curClassNames += ' ' + classItem; } } if (!element.classList) { element.className = curClassNames; } } /** * * @param element * @param classNames */ export function removeClass(element, classNames) { if (!element || !classNames) { return; } var curClassNames = ' ' + element.className + ' '; // 用空格分来 var classes = (classNames || '').split(' '); for (var i = 0, len = classes.length; i < len; i++) { var classItem = classes[i]; if (!classItem) { continue; } if (element.classList) { element.classList.remove(classItem); } else if (!hasClass(element, classItem)) { curClassNames = curClassNames.replace(' ' + classItem + ' ', ' '); } } if (!element.classList) { element.className = trim(curClassNames); } } /** * * @param element Element 元素 * @param className * @returns {boolean} */ export function hasClass(element, className) { if (!element || !className) { return false; } // if (className.indexOf(' ') !== -1) { throw new Error('classNames should not contain space'); } if (element.classList) { return element.classList.contains(className); } else { return (' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1; } } // 依赖 getStyle function _getStyle(dom, name) { try { if (window.getComputedStyle) { return window.getComputedStyle(dom, null)[name]; } // return dom.currentStyle[name]; } catch (e) { return null; } } // export function getWidth(dom) { let width = _getStyle(dom, 'width'); if (width === 'auto') { width = dom.offsetWidth; } return parseFloat(width); } // export function getHeight(dom) { let height = _getStyle(dom, 'height'); if (height === 'auto') { height = dom.offsetHeight; } return parseFloat(height); }