How to select an element by its text content in CSS?
Jul 26, 2025 am 09:12 AM?Pure CSS cannot select elements based on text content, because the CSS standard does not support text content-based selectors such as: contains(); ? Classes or attributes should be used to accurately locate elements, which is a semantic and efficient approach; ? If you have to choose according to text, you can use JavaScript or jQuery to implement it; ?? Although modern browsers support the pseudo-class of: has(), it cannot directly match the plain text content and can only be indirectly matched through child elements or attributes. Therefore, the best practice is to reasonably use the principle of separation of HTML structure and style.
You can't directly select an element by its text content using pure CSS .

CSS is designed to style elements based on attributes like tag names, classes, IDs, states (like :hover
), and structural relationships — but it does not have a selector that matches elements based on their inner text (like "find me the <p></p>
that contains 'Hello World'").
Why CSS Can't Do This
CSS lacks a selector such as :contains("text")
in standard specifications. While jQuery has a :contains()
selector, it's not part of standard CSS and won't work in regular stylesheets.

Example (this won't work in CSS):
/* ? Invalid in standard CSS */ p:contains("Submit") { background: yellow; }
Workarounds and Alternatives
1. Use Classes or Attributes instead
The best practice is to add a class, data attribute, or ID to the element you want to target.

<button class="btn-submit">Submit</button>
.btn-submit { background: blue; color: white; }
This is clean, efficient, and maintainable.
2. Use :has()
with Text (Limited Support)
In some modern browsers (like Chrome 105 ), you can use the * ` :has()` selector with certain conditions. However, you still can't match exactly text content* , but you can* check for elements that contain specific child elements or attributes.
But if the text is inside a child (eg, via ::before
with content
), you can sometimes work around it:
/* Example: Match a label that contains a span with text */ label:has(span[aria-label="required"]) { font-weight: bold; }
Still, this doesn't help for direct text content matching.
3. Use JavaScript When Necessary
If you absolutely need to select an element by its text, use JavaScript:
// Find a button with the text "Submit" const submitButton = [...document.querySelectorAll('button')] .find(btn => btn.textContent.trim() === 'Submit'); if (submitButton) { submitButton.style.backgroundColor = 'yellow'; }
Or with :contains
in jQuery (if you're using it):
$('p:contains("Hello")').css('color', 'red');
Summary
- ? No native CSS selector can select elements by text content.
- ? Use classes or attributes — it's the proper semantic way.
- ? Use JavaScript or jQuery for dynamic text-based selection.
- ??
:has()
is powerful but doesn't solve text-content matching directly.
So while the answer might feel limiting, relying on proper HTML structure with meaningful classes is usually cleaner and more performant anyway.
The above is the detailed content of How to select an element by its text content in CSS?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Setting the size of HTML text boxes is a very common operation in front-end development. This article explains how to set the size of a text box and provides specific code examples. In HTML, you can use CSS to set the size of a text box. The specific code is as follows: input[type="text"

H5 page production refers to the creation of cross-platform compatible web pages using technologies such as HTML5, CSS3 and JavaScript. Its core lies in the browser's parsing code, rendering structure, style and interactive functions. Common technologies include animation effects, responsive design, and data interaction. To avoid errors, developers should be debugged; performance optimization and best practices include image format optimization, request reduction and code specifications, etc. to improve loading speed and code quality.

How to adjust WordPress themes to avoid misaligned display requires specific code examples. As a powerful CMS system, WordPress is loved by many website developers and webmasters. However, when using WordPress to create a website, you often encounter the problem of theme misalignment, which affects the user experience and page beauty. Therefore, it is very important to properly adjust your WordPress theme to avoid misaligned display. This article will introduce how to adjust the theme through specific code examples.

H5 page production process: design: plan page layout, style and content; HTML structure construction: use HTML tags to build a page framework; CSS style writing: use CSS to control the appearance and layout of the page; JavaScript interaction implementation: write code to achieve page animation and interaction; Performance optimization: compress pictures, code and reduce HTTP requests to improve page loading speed.

In Angular app, how to change the color of the icon when the mouse is hovered over it? Many developers will encounter needs when building applications using Angular...

How to solve the display problem caused by user agent style sheets? When using the Edge browser, a div element in the project cannot be displayed. After checking, I posted...

Dynamic web element crawling problem: dealing with XPath and Class name changes, many crawler developers will encounter a difficult problem when crawling dynamic web pages: the goal...

CSS selector priority is determined in the following order: Specificity (ID > Class > Type > Wildcard) Source order (Inline > Internal style sheet > External style sheet > User agent style sheet) Declaration order (latest declarations take precedence) Importance (!important forces the priority to increase)
