These selectors help you style elements based on how their attribute values start or end. It makes targeting specific elements easier without extra classes or IDs.
Starts-with and ends-with selectors in CSS
Start learning this pattern below
Jump into concepts and practice - no test required
[attribute^="value"] { /* styles */ } [attribute$="value"] { /* styles */ }
a) whose href attribute starts with "https" in green.a[href^="https"] { color: green; }
src attribute ends with ".png".img[src$=".png"] { border: 2px solid blue; }
id starts with "btn-".button[id^="btn-"] { background-color: orange; }
name attribute ends with "email".input[name$="email"] { font-weight: bold; }
This page shows how CSS styles elements based on attribute values that start or end with certain text. Green bold links start with "https". Blue bordered images end with ".png". Orange buttons have IDs starting with "btn-". Bold input fields have names ending with "email".
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Starts-with and Ends-with Selectors</title> <style> a[href^="https"] { color: green; font-weight: bold; } img[src$=".png"] { border: 3px solid blue; padding: 4px; max-width: 100px; display: block; margin-bottom: 1rem; } button[id^="btn-"] { background-color: orange; color: white; border: none; padding: 0.5rem 1rem; cursor: pointer; margin-bottom: 1rem; } input[name$="email"] { font-weight: bold; border: 2px solid #333; padding: 0.3rem; margin-bottom: 1rem; display: block; width: 200px; } </style> </head> <body> <h1>Starts-with and Ends-with Selectors Demo</h1> <a href="https://example.com">Secure Link (https)</a><br /> <a href="http://example.com">Regular Link (http)</a> <hr /> <img src="flower.png" alt="Flower" /> <img src="tree.jpg" alt="Tree" /> <hr /> <button id="btn-submit">Submit</button> <button id="cancel">Cancel</button> <hr /> <input type="text" name="useremail" placeholder="Your email" /> <input type="text" name="username" placeholder="Your name" /> </body> </html>
These selectors only work with attributes, not with element text content.
They are case-sensitive, so "https" is different from "HTTPS".
Use browser DevTools to test and see which elements are matched by these selectors.
Starts-with selector targets elements whose attribute value begins with a specific string.
Ends-with selector targets elements whose attribute value ends with a specific string.
They help style elements easily without extra classes or IDs.
Practice
href attribute that starts with "https"?Solution
Step 1: Understand the starts-with selector syntax
The starts-with selector uses the caret symbol (^) inside square brackets to match attribute values that begin with a specific string.Step 2: Match the selector to the question
The selectora[href^="https"]matches all anchor tags with href attributes starting with "https".Final Answer:
a[href^="https"] -> Option CQuick Check:
Starts-with selector = ^ = a[href^="https"] [OK]
- Confusing starts-with (^) with ends-with ($)
- Using *= which means contains, not starts-with
- Using ~ which matches whole words in space-separated values
Solution
Step 1: Identify the ends-with selector syntax
The ends-with selector uses the dollar sign ($) inside square brackets to match attribute values that end with a specific string.Step 2: Apply correct syntax for class attribute
To select elements whose class attribute ends with "-btn", use[class$="-btn"]. The dot (.) is for class names, not attribute selectors.Final Answer:
[class$="-btn"] -> Option AQuick Check:
Ends-with selector = $ inside [] = [class$="-btn"] [OK]
- Using dot (.) with attribute selectors incorrectly
- Confusing starts-with (^) with ends-with ($)
- Missing square brackets for attribute selectors
<a href="https://example.com">Link1</a> <a href="http://example.com">Link2</a> <a href="https://secure.com">Link3</a>
Which links will be styled by the CSS selector
a[href^="https"] { color: red; }?Solution
Step 1: Identify which href values start with "https"
Link1 has href="https://example.com" and Link3 has href="https://secure.com". Both start with "https". Link2 starts with "http" (no s).Step 2: Apply the starts-with selector effect
The selectora[href^="https"]styles only elements whose href attribute starts with "https". So Link1 and Link3 get styled.Final Answer:
Link1 and Link3 -> Option DQuick Check:
Starts-with "https" matches Link1 & Link3 [OK]
- Including links starting with "http" without s
- Confusing contains (*) with starts-with (^)
- Assuming all links get styled
input[name^="user"] { background-color: yellow; }HTML:
<input name="login"> <input name="signup"> <input name="emailuser">
What is the likely problem?
Solution
Step 1: Check attribute values against selector
The selector targets inputs with name attributes starting with "user". The inputs have names "login", "signup", and "emailuser". None of these start with "user".Step 2: Identify why no elements styled
Since none of the name attributes start with "user", no elements match the selector, so nothing gets styled.Final Answer:
The attribute values do not start with "user" -> Option BQuick Check:
Starts-with selector matches only beginning of attribute value [OK]
- Assuming ends-with ($) is needed instead of starts-with (^)
- Thinking IDs are required for attribute selectors
- Believing selector syntax is wrong when it is correct
img elements whose src attribute starts with "https://cdn." and ends with ".png". Which CSS selector correctly targets these images?Solution
Step 1: Understand combined attribute selectors
You can combine multiple attribute selectors to match elements that satisfy all conditions. Here, one selector checks if src starts with "https://cdn." and another checks if src ends with ".png".Step 2: Match correct starts-with and ends-with syntax
Starts-with uses ^ and ends-with uses $. So the correct selector isimg[src^="https://cdn."][src$=".png"].Final Answer:
img[src^="https://cdn."][src$=".png"] -> Option AQuick Check:
Combine ^ and $ selectors correctly [OK]
- Using * (contains) instead of ^ or $
- Swapping ^ and $ symbols
- Incorrect order or syntax of attribute selectors
