$css.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. var isStr = require('./isStr');
  2. var isObj = require('./isObj');
  3. var kebabCase = require('./kebabCase');
  4. var isUndef = require('./isUndef');
  5. var contain = require('./contain');
  6. var isNum = require('./isNum');
  7. var $safeEls = require('./$safeEls');
  8. var prefix = require('./prefix');
  9. var each = require('./each');
  10. exports = function(nodes, name, val) {
  11. nodes = $safeEls(nodes);
  12. var isGetter = isUndef(val) && isStr(name);
  13. if (isGetter) return getCss(nodes[0], name);
  14. var css = name;
  15. if (!isObj(css)) {
  16. css = {};
  17. css[name] = val;
  18. }
  19. setCss(nodes, css);
  20. };
  21. function getCss(node, name) {
  22. return (
  23. node.style[prefix(name)] ||
  24. getComputedStyle(node, '').getPropertyValue(name)
  25. );
  26. }
  27. function setCss(nodes, css) {
  28. each(nodes, function(node) {
  29. var cssText = ';';
  30. each(css, function(val, key) {
  31. key = prefix.dash(key);
  32. cssText += key + ':' + addPx(key, val) + ';';
  33. });
  34. node.style.cssText += cssText;
  35. });
  36. }
  37. var cssNumProps = [
  38. 'column-count',
  39. 'columns',
  40. 'font-weight',
  41. 'line-weight',
  42. 'opacity',
  43. 'z-index',
  44. 'zoom'
  45. ];
  46. function addPx(key, val) {
  47. var needPx = isNum(val) && !contain(cssNumProps, kebabCase(key));
  48. return needPx ? val + 'px' : val;
  49. }
  50. module.exports = exports;