Skip to: content, navigation

CSS3 Attribute Selectors (CSS selector)

Spec
Version
CSS3
Browser support (more…)
IE7+ FF1+ SA1.3+ OP9.5+
Buggy Buggy Full Full

Syntax

[attribute { ^= | $= | *= } attribute value] {
declaration block
}

Description

CSS3 defines three more attribute selector variations. These new selectors give us the ability to make partial matches to attribute values—we can match strings at the start, end, or anywhere within an attribute value.

We can use the ^= operator to cause an attribute selector to match elements that have an attribute containing a value that starts with the specified value:

a[href^="http:"] {
  ⋮ declarations
}

This example matches a elements that have an href attribute value which starts with the characters "http:".

Using the $= operator, an attribute selector can match elements that have an attribute which contains a value ending with the specified value:

img[src$=".png"] {
  ⋮ declarations
}

This example matches img elements with a src attribute value that ends with the characters ".png".

Finally, we can use the *= operator to make an attribute selector match elements that have an attribute which contains the specified value:

div[id*="foo"] {
  ⋮ declarations
}

This example matches div elements whose id attribute value contains the characters "foo".

Example

This example will match a elements with an href attribute that contains the string "example.com":

a[href*="example.com"] {
  ⋮ declarations
}

Compatibility

Internet Explorer Firefox Safari Opera
5.5 6.0 7.0 1.0 1.5 2.0 1.3 2.0 3.0 9.2 9.5
None None Buggy Buggy Buggy Buggy Full Full Full Buggy Full

In Internet Explorer 7:

  • The style attribute can't be used in attribute selectors.
  • An attribute selector can’t match an element when that element has an invalid value in the specified attribute.
  • If the closing square bracket of an attribute selector, ], is immediately followed by an element type selector, the rule is parsed as if there’s a descendant combinator—that is, a space—between the selectors, instead of failing as it should.
  • Some DOM attributes, such as className, are treated like HTML attributes.

Safari versions up to and including 3 will always ignore the case of HTML attribute values, even for attributes that are, in fact, case sensitive.

Firefox versions up to and including 2, will ignore the case of some attributes that should be compared in a case-sensitive manner: for example, the id and for attributes.

User-contributed notes

Add a note

To post a note on this topic, please log in with your SitePoint username and password. If you don't have an account yet, you can create a new account for free.

Related Products

Search