Is there a CSS selector for elements lacking an attribute?

HtmlCssCss Selectors

Html Problem Overview


I understand that css rules can target elements specified by attribute values, e.g.:

input[type="text"] {}

Can I make a rule that targets elements which omit a certain attribute? For example, can I target elements that lack an href or elements that don't specify a type?

Html Solutions


Solution 1 - Html

You can follow this pattern:

a:not([href])
input:not([type])

The attribute selector is used to select elements with the specified attribute.

:not is supported in all modern browsers and IE9+, if you need IE8 or lower support you're out of luck.

Solution 2 - Html

For links you can simply use:

a { color: red; }
a:link { color: green; }

fiddle: http://jsfiddle.net/ZHTXS/ no need for javascript.

For form attributes, use the not attribute pattern noted above input:not([type]) and if you need to support older versions of IE, I'd probably add a class and use an IE specific style sheet linked with conditional comments.

Solution 3 - Html

You can always set different style to a and a href

Check this: http://jsfiddle.net/uy2sj/

Solution 4 - Html

The only solution that worked for me was to place a:link { } within my code.

I also tried

a:not([href]) input:not([href=""]) input:not([href~=""])

But for a .scss file with multiple a tags used as standard code blocks (not my idea), this was the only solution.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJellicleCatView Question on Stackoverflow
Solution 1 - HtmlthirtydotView Answer on Stackoverflow
Solution 2 - HtmlsteveaxView Answer on Stackoverflow
Solution 3 - HtmlmorsikView Answer on Stackoverflow
Solution 4 - HtmlEGCView Answer on Stackoverflow