Apply CSS styles to an element depending on its child elements [duplicate]

As far as I’m aware, styling a parent element based on the child element is not an available feature of CSS. You’ll likely need scripting for this.

It’d be wonderful if you could do something like div[div.a] or div:containing[div.a] as you said, but this isn’t possible.

You may want to consider looking at jQuery. Its selectors work very well with ‘containing’ types. You can select the div, based on its child contents and then apply a CSS class to the parent all in one line.

If you use jQuery, something along the lines of this would may work (untested but the theory is there):

$('div:has(div.a)').css('border', '1px solid red');

or

$('div:has(div.a)').addClass('redBorder');

combined with a CSS class:

.redBorder
{
    border: 1px solid red;
}

Here’s the documentation for the jQuery “has” selector.

Leave a Comment