Is there a CSS selector for elements lacking an attribute?
HtmlCssCss SelectorsHtml 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.