Javascript set CSS: после стилей - PullRequest
       1

Javascript set CSS: после стилей

17 голосов
/ 07 сентября 2011

Можете ли вы установить: после стилей CSS с Javascript?

Итак, скажем:

$("#foo li:after").css("left","100px");

1 Ответ

30 голосов
/ 07 сентября 2011
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 для удобства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...