For example, I have a list of stationary goods on my web page, against which I want to add a star or the asterix character (not the comic character), but the symbol *) if the goods are not in my inventory.
<!DOCTYPE>
<html>
<head>
<title>CSS content Property Example</title>
<style>
.outOfStock::after {
color: red;
content: " *";
}
</style>
</head>
<body>
<p>Using CSS "content" property to add a "*" character after an item!</p>
<ul>
<li>highlighters</li>
<li>pencils</li>
<li>erasers</li>
<li class="outOfStock">scrapbooks</li>
<li class="outOfStock">paper clips</li>
</ul>
</body>
</html>In the above example, the character * (or asterix) shows against two items, which has the class outOfStock defined. The * symbol shows after each item name, since I have used the CSS content property using the pseudo element ::after. See the <style> section in the markup.
Note: You can use other characters like \2193. It shows a down arrow.
Browser Support:
Chrome 39.0 - Yes | Firefox 34.0 - Yes | Internet Explorer 8 and above - Yes | Safari - Yes | Opera 4+ - Yes
Using CSS “content” Property with “::before” Pseudo Element
Similarly, you can use the pseudo element ::before with the content property. For example,
<!DOCTYPE>
<html>
<head>
<title>CSS content Property Example</title>
<style>
.inStock::before {
color: red;
content: "\2713 ";
}
</style>
</head>
<body>
<p>CSS "content" property with pseudo element ::before!</p>
<ul>
<li class="inStock">highlighters</li>
<li class="inStock">pencils</li>
<li class="inStock">erasers</li>
<li>scrapbooks</li>
<li>paper clips</li>
</ul>
</body>
</html>Note: You can apply both ::before and ::after with CSS content property. For example,
<!DOCTYPE>
<html>
<head>
<title>CSS content Property Example</title>
</head>
<body>
<style>
ul {
display: table;
margin: 0;
padding: 0;
}
ul li {
list-style: none;
}
.inStock::before {
color: red;
content: "* ";
}
.inStock::after {
color: red;
content: " *";
}
</style>
<p>CSS "content" with pseudo elements ::before and ::after.</p>
<ul>
<li class="inStock">highlighters</li>
<li class="inStock">pencils</li>
<li class="inStock">erasers</li>
<li>scrapbooks</li>
<li>paper clips</li>
</ul>
</body>
</html>See the space I have added before and after the * with the content property.
Using CSS content Property Dynamically
You cannot add the pseudo elements ::before and ::after using JavaScript. However, you can add a class name, with the pseudo elements, which also have the CSS content property, dynamically using JavaScript. This will do the trick. Here’s an example,
<!DOCTYPE>
<html>
<head>
<title>CSS content Property Example</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<style>
ul {
display: table;
margin: 0;
padding: 0;
}
ul li {
list-style: none;
}
.outOfStock::after {
color: red;
content: " \2193";
}
</style>
<p>Click the button to add content to the below list.</p>
<ul class="stationary">
<li>highlighters</li>
<li>pencils</li>
<li>erasers</li>
<li id="sb">scrapbooks</li>
<li id="clip">paper clips</li>
</ul>
<p>
<input type="button" id="bt" value="Click it!" />
</p>
</body>
<script>
$(document).ready(function () {
$('#bt').click(function () {
$('.stationary').find('#sb, #clip').addClass('outOfStock');
});
});
</script>
</html>Well, that’s it. You can add texts, symbols, numbers, Unicode (or decimal code), images, hyperlinks etc., to an element using the CSS content property.
Browser Support:
Chrome 39.0 - Yes | Firefox 34.0 - Yes | Internet Explorer 8 and above - Yes | Safari - Yes | Opera 4+ - Yes
