20

Can you set the :after styles of css with Javascript?

So lets say:

$("#foo li:after").css("left","100px");
2
  • 5
    This can help: stackoverflow.com/questions/311052/… Commented Sep 7, 2011 at 7:38
  • 1
    Added the jQuery tag as you seem to be using it. Commented Sep 7, 2011 at 7:42

1 Answer 1

37
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: "''"
});

A minimal implementation. You most likely would want to keep track of the rules you add so you can remove them. sheet.insertRule returns the index of the new rule which you can use to get a reference to it for editing or removal.

Edit: added basic functionality to convert an object into a css property string for convenience.

Sign up to request clarification or add additional context in comments.

1 Comment

Seems like the content: property is not getting included.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.