sullivan
Version:
Tools to quickly build interfaces in JS
26 lines (21 loc) • 712 B
JavaScript
/**
* Inject a string of CSS into the `<head>` under a re-useable style tag.
*
* @param {String} cssString
* @param {String} namespace
*/
export default function injectCss(cssString, namespace) {
const dataAttr = `data-sullivan-${namespace}`;
if (!document.querySelector(`style[${dataAttr}]`)) {
const head = document.head || document.getElementsByTagName('head')[0];
const styleTag = document.createElement('style');
styleTag.type = 'text/css';
styleTag.setAttribute(dataAttr, '');
head.appendChild(styleTag);
if (styleTag.styleSheet) {
styleTag.styleSheet.cssText += cssString;
} else {
styleTag.appendChild(document.createTextNode(cssString));
}
}
}