85 lines
2.1 KiB
JavaScript
85 lines
2.1 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
var DOM = {};
|
||
|
|
||
|
DOM.e = function (tagName, className) {
|
||
|
var element = document.createElement(tagName);
|
||
|
element.className = className;
|
||
|
return element;
|
||
|
};
|
||
|
|
||
|
DOM.appendTo = function (child, parent) {
|
||
|
parent.appendChild(child);
|
||
|
return child;
|
||
|
};
|
||
|
|
||
|
function cssGet(element, styleName) {
|
||
|
return window.getComputedStyle(element)[styleName];
|
||
|
}
|
||
|
|
||
|
function cssSet(element, styleName, styleValue) {
|
||
|
if (typeof styleValue === 'number') {
|
||
|
styleValue = styleValue.toString() + 'px';
|
||
|
}
|
||
|
element.style[styleName] = styleValue;
|
||
|
return element;
|
||
|
}
|
||
|
|
||
|
function cssMultiSet(element, obj) {
|
||
|
for (var key in obj) {
|
||
|
var val = obj[key];
|
||
|
if (typeof val === 'number') {
|
||
|
val = val.toString() + 'px';
|
||
|
}
|
||
|
element.style[key] = val;
|
||
|
}
|
||
|
return element;
|
||
|
}
|
||
|
|
||
|
DOM.css = function (element, styleNameOrObject, styleValue) {
|
||
|
if (typeof styleNameOrObject === 'object') {
|
||
|
// multiple set with object
|
||
|
return cssMultiSet(element, styleNameOrObject);
|
||
|
} else {
|
||
|
if (typeof styleValue === 'undefined') {
|
||
|
return cssGet(element, styleNameOrObject);
|
||
|
} else {
|
||
|
return cssSet(element, styleNameOrObject, styleValue);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DOM.matches = function (element, query) {
|
||
|
if (typeof element.matches !== 'undefined') {
|
||
|
return element.matches(query);
|
||
|
} else {
|
||
|
if (typeof element.matchesSelector !== 'undefined') {
|
||
|
return element.matchesSelector(query);
|
||
|
} else if (typeof element.webkitMatchesSelector !== 'undefined') {
|
||
|
return element.webkitMatchesSelector(query);
|
||
|
} else if (typeof element.mozMatchesSelector !== 'undefined') {
|
||
|
return element.mozMatchesSelector(query);
|
||
|
} else if (typeof element.msMatchesSelector !== 'undefined') {
|
||
|
return element.msMatchesSelector(query);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DOM.remove = function (element) {
|
||
|
if (typeof element.remove !== 'undefined') {
|
||
|
element.remove();
|
||
|
} else {
|
||
|
if (element.parentNode) {
|
||
|
element.parentNode.removeChild(element);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
DOM.queryChildren = function (element, selector) {
|
||
|
return Array.prototype.filter.call(element.childNodes, function (child) {
|
||
|
return DOM.matches(child, selector);
|
||
|
});
|
||
|
};
|
||
|
|
||
|
module.exports = DOM;
|