What does the "~" (tilde/squiggle/twiddle) CSS selector mean?
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
The tilde (~) is a CSS selector known as the general sibling combinator. It is used to select elements that are siblings of a specific element, although not necessarily the adjacent sibling. This selector plays a crucial role in creating style rules that depend on the document's structure, particularly the elements' relation to one another.
Understanding the General Sibling Combinator
In CSS, siblings are elements that share the same parent. The ~ combinator selects all siblings of the first element that come after it in the document. It is particularly useful when you need to style elements that are related but not necessarily right next to each other.
Syntax
The syntax for using the tilde combinator is as follows:
Here, element2 is the target element that will be styled if it follows element1 under the same parent.
Example
Consider the following HTML structure:
Now, if you want to style all <p> tags that follow a <span> tag, you can use:
In the above example, both the second and the third paragraphs will be styled with red text because they are both siblings of the <span> element and follow it within the same parent <div>.
When to Use the Tilde Selector
The tilde selector is beneficial in scenarios where you have multiple elements of the same type and want to apply styles based on their relationship with other elements. Common use cases include:
- Styling lists or tables where certain rows or items should be styled differently based on preceding siblings.
- Applying styles in complex forms where inputs are dynamically added and their styling depends on preceding elements in the DOM.
- Creating more flexible and maintainable style sheets where changes in the HTML structure (like adding another element between siblings) won't break the styles.
Comparison with Other Sibling Combinators
CSS also provides another sibling combinator: the adjacent sibling combinator denoted by +. Unlike the ~ combinator, which selects all following siblings, the + combinator only selects the immediately following sibling if it matches the specified selector.
| Selector | Description | Example | Matches |
~ | General sibling combinator | div ~ p | All <p> that are siblings of <div> and come after it |
+ | Adjacent sibling combinator | div + p | Only the first <p> that directly follows <div> |
Tips and Best Practices
- Specificity and Overriding: Styles defined with sibling combinators can still be overridden by more specific styles. Always consider how your selectors contribute to specificity.
- Performance: While modern browsers handle CSS selectors very efficiently, overly complex selectors can slow down rendering. Always benchmark if unsure.
- Readability and Maintenance: Use sibling combinators judiciously and keep your style sheets readable and easy to maintain. Avoid overly complex chains of combinators unless necessary.
Conclusion
The tilde (~) selector is a powerful tool in the CSS selector arsenal, allowing developers to design styles based on the general sibling relationships. Understanding and using this selector effectively can significantly boost the versatility and responsiveness of web page styling, enabling more dynamic and complex designs.

