You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

51 lines
1.3 KiB

var isStr = require('./isStr');
var isObj = require('./isObj');
var kebabCase = require('./kebabCase');
var isUndef = require('./isUndef');
var contain = require('./contain');
var isNum = require('./isNum');
var $safeEls = require('./$safeEls');
var prefix = require('./prefix');
var each = require('./each');
exports = function(nodes, name, val) {
nodes = $safeEls(nodes);
var isGetter = isUndef(val) && isStr(name);
if (isGetter) return getCss(nodes[0], name);
var css = name;
if (!isObj(css)) {
css = {};
css[name] = val;
}
setCss(nodes, css);
};
function getCss(node, name) {
return (
node.style[prefix(name)] ||
getComputedStyle(node, '').getPropertyValue(name)
);
}
function setCss(nodes, css) {
each(nodes, function(node) {
var cssText = ';';
each(css, function(val, key) {
key = prefix.dash(key);
cssText += key + ':' + addPx(key, val) + ';';
});
node.style.cssText += cssText;
});
}
var cssNumProps = [
'column-count',
'columns',
'font-weight',
'line-weight',
'opacity',
'z-index',
'zoom'
];
function addPx(key, val) {
var needPx = isNum(val) && !contain(cssNumProps, kebabCase(key));
return needPx ? val + 'px' : val;
}
module.exports = exports;