Attribute Selectors in CSS
We're going to learn about a special feature in CSS called attribute selectors . These selectors allow us to style HTML elements based on their attributes. Let's dive in!
What are Attribute Selectors?
Attribute selectors are a way to select elements based on the presence or value of an attribute. In HTML, elements can have attributes like class
, id
, or title
. With attribute selectors, we can target specific elements based on these attributes.
Using Attribute Selectors
To use an attribute selector, we enclose the attribute name in square brackets [ ]
. Let's see an example:
p[title="highlight"] {
background-color: yellow;
}
In this example, we are selecting all <p>
elements that have a title
attribute with the value of "highlight"
. When the attribute matches, we apply a background color of yellow to those paragraphs. Try it out yourself!
Other Attribute Selector Options
Attribute selectors can be even more powerful. Here are a few examples:
[href]
selects all elements with anhref
attribute. (Learn more on MDN )[class^="btn"]
selects all elements with aclass
attribute starting with"btn"
.img[src$=".png"]
selects all<img>
elements with asrc
attribute ending with".png"
.input[type="checkbox"]
selects all<input>
elements with atype
attribute value of"checkbox"
. (Learn more on MDN )input[name^="user"]
selects all<input>
elements with aname
attribute starting with"user"
.input[name$="name"]
selects all<input>
elements with aname
attribute ending with"name"
.input[type="text"]
selects all<input>
elements with atype
attribute value of"text"
.input[type="number"]
selects all<input>
elements with atype
attribute value of"number"
.input[type="password"]
selects all<input>
elements with atype
attribute value of"password"
.input[type="email"]
selects all<input>
elements with atype
attribute value of"email"
.input[type="checkbox"]
selects all<input>
elements with atype
attribute value of"checkbox"
.
Let's explore some use cases for the different types of input attribute selectors:
Text Input Fields
input[type="text"]
selects all <input>
elements with a type
attribute value of "text"
. This can be useful when you want to style specific text input fields differently, such as applying a different background color or border style.
Number Input Fields
input[type="number"]
selects all <input>
elements with a type
attribute value of "number"
. You can use this selector to target number input fields and apply custom styling or validation rules, such as limiting the input to a specific range or displaying an error message for invalid values.
Password Input Fields
input[type="password"]
selects all <input>
elements with a type
attribute value of "password"
. When you want to style password input fields differently, like adding a visible toggle button to show or hide the password, this selector comes in handy.
Email Input Fields
input[type="email"]
selects all <input>
elements with a type
attribute value of "email"
. Use this selector to target email input fields and apply specific styles or validation patterns to ensure valid email addresses are entered.
Checkbox Input Fields
input[type="checkbox"]
selects all <input>
elements with a type
attribute value of "checkbox"
. This selector allows you to style checkbox inputs uniquely, like changing the appearance of the checkbox or applying custom label styles.
Using attribute Selectors
Basic Attribute Selector
- Select elements with a specific attribute:
- Example: Select all anchor elements with a "target" attribute:
<tagname attribute> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
a[target] {
/* Make the links stand out */
color: blue;
text-decoration: underline;
}
Attribute Selector with Value
- Select elements with a specific attribute value:
- Example: Select all input elements with the attribute "type" set to "email":
<tagname attribute=value> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
input[type="email"] {
/* Make the email input fields look different */
border: 1px solid #ccc;
padding: 5px;
border-radius: 3px;
}
Attribute Selector with Partial Value
- Select elements with an attribute containing a specific value (substring):
- Example: Select all elements with a "class" attribute containing the word "active":
<tagname attribute*=value> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
[class*="active"] {
/* Highlight elements with the "active" class */
background-color: yellow;
border: 1px solid #000;
}
Attribute Selector with Value Prefix
- Select elements with an attribute starting with a specific value:
- Example: Select all elements with a "href" attribute that starts with "https://":
<tagname attribute^=value> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
[href^="https://"] {
/* Style links that use HTTPS */
color: green;
font-weight: bold;
}
Attribute Selector with Value Suffix
- Select elements with an attribute ending with a specific value:
- Example: Select all elements with a "src" attribute that ends with ".jpg":
<tagname attribute$=value> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
[src$=".jpg"] {
/* Make images look vintage */
filter: sepia(50%);
border: 2px solid #999;
}
Attribute Selector with Value Prefix and Suffix
- Select elements with an attribute that starts with a specific value and ends with a specific value:
- Example: Select all elements with a "data-" attribute that starts with "user-" and ends with "-id":
<tagname attribute^=prefix attribute$=suffix> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
[data-^="user-"][data-$="-id"] {
/* Customize user-related elements */
background-color: #f0f0f0;
border: 2px dashed #999;
}
Attribute Selector with Value List
- Select elements with an attribute value that matches one of the specified values:
- Example: Select all elements with a "type" attribute set to either "button" or "submit":
<tagname attribute=value1], [attribute=value2> {
/* Apply styles to these elements */
property: value;
/* Add more styles here */
property: value;
}
[type="button"], [type="submit"] {
/* Style buttons and submit inputs */
background-color: #f44336;
color: #fff;
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
}
Style elements based on their attributes
Congratulations! You've learned about attribute selectors in CSS. Now you can style elements based on their attributes, making your web page even more dynamic and engaging. Whether it's general attributes, form attributes, or specific input types, attribute selectors are a powerful tool in your CSS arsenal.