Ответ 1
var addRule = (function(style){
var sheet = document.head.appendChild(style).sheet;
return function(selector, css){
var propText = Object.keys(css).map(function(p){
return p+":"+css[p]
}).join(";");
sheet.insertRule(selector + "{" + propText + "}", sheet.cssRules.length);
}
})(document.createElement("style"));
addRule("p:before", {
display: "block",
width: "100px",
height: "100px",
background: "red",
"border-radius": "50%",
content: "''"
});
Минимальная реализация. Вы, скорее всего, захотите отслеживать правила, которые вы добавляете, чтобы их можно было удалить. sheet.insertRule
возвращает индекс нового правила, которое вы можете использовать для получения ссылки на него для редактирования или удаления.
Изменить: добавлена базовая функциональность для удобства преобразования объекта в строку свойств CSS.