css.js
/**
* Get or set element’s style, prefix-agnostic.
*
* @module mucss/css
*/
var fakeStyle = require('./fake-element').style;
var prefix = require('./prefix').lowercase;
/**
* Apply styles to an element.
*
* @param {Element} el An element to apply styles.
* @param {Object|string} obj Set of style rules or string to get style rule.
*/
module.exports = function(el, obj){
if (!el || !obj) return;
var name, value;
//return value, if string passed
if (typeof obj === 'string') {
name = obj;
//return value, if no value passed
if (arguments.length < 3) {
return el.style[prefixize(name)];
}
//set style, if value passed
value = arguments[2] || '';
obj = {};
obj[name] = value;
}
for (name in obj){
//convert numbers to px
if (typeof obj[name] === 'number' && /left|right|bottom|top|width|height/i.test(name)) obj[name] += 'px';
value = obj[name] || '';
el.style[prefixize(name)] = value;
}
};
/**
* Return prefixized prop name, if needed.
*
* @param {string} name A property name.
* @return {string} Prefixed property name.
*/
function prefixize(name){
var uName = name[0].toUpperCase() + name.slice(1);
if (fakeStyle[name] !== undefined) return name;
if (fakeStyle[prefix + uName] !== undefined) return prefix + uName;
return '';
}