Add text before and/or after an element
The content property allows to add text before and/or after an element using the pseudo selectors ::before and ::after:
In the following example, text is prepended or appendd to an elements text depending on its
classes:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<title>CSS property content on ::before and ::after pseudo elements</title>
<style type="text/css">
div {color : blue }
.odd::before {content: "Odd: " }
.even::before {content: "Even: " }
.prime::after {content: " (prime)" }
</style>
</head>
<body>
<div >Some numbers:</div>
<div class='odd' >One </div>
<div class='even prime'>two </div>
<div class='odd prime'>three </div>
<div class='even' >four </div>
<div class='odd prime'>five </div>
</body>
</html>
Add more dynamic text with attr()
When using content, the attr(xyz) directive allows to insert the value of the matched element's attribute xyz.
In the following example, the
divs with the
num class have an attribute
data-translation which is used in the
content property to insert the translation after an element.
The example also demonstrates that it is possible to concatenate text: the translation is embedded in parentheses:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<title>content using attr()</title>
<style type="text/css">
.num::after {content: " (" attr(data-translation) ")"; }
</style>
</head>
<body>
<div class='num' data-translation="eins">one </div>
<div class='num' data-translation="zwei">two </div>
<div class='num' data-translation="drei">three</div>
</body>
</html>