CSSStyleDeclaration

style.prop()

// โญ๏ธ style.prop(propName[,val])
//
//    get: 
//      โ€ข style.paddingLeft                 // get DOM style prop
//      โ€ข style.prop('padding-left')        // get CSS prop โญ๏ธ
//      โ€ข style.prop('--css-var')           // get CSS var โญ๏ธ
//      
//    set: 
//      โ€ข style.prop('padding-left', '8px') // set CSS prop โญ๏ธ
//      โ€ข style.prop('--css-var', '4px')    // set CSS var โญ๏ธ
//      โ€ข style.paddingLeft = '8px'         // set DOM style prop
CSSStyleDeclaration.prototype.prop = function(propName, val=undefined){
  
    const camelCase = !propName.includes('-');
  
    // set prop if necessary
    if (val) {
      if (camelCase) this[propName] = val; // this.propName = val
      else this.setProperty(propName, val);// this.setProp('prop-name', val)
    }
  
    // return prop value
    return camelCase 
      ? this[propName]                    // this.propName
      : this.getPropertyValue(propName);  // this.getProp('prop-name') 
};

Last updated