content property is used with the :before and :after pseudo-elements, to insert generated content.
 
Content property values:
Value             Description 
attr(attribute)   Sets the content as one of the selector's attribute.
url(url)          Sets the content to be some kind of media (an image, a sound, a video, etc.)
counter           Sets the content as a counter.
string            Sets the content to the text you specify.
                              
open-quote        Sets the content to be an opening quote.
close-quote       Sets the content to be a closing quote.
no-open-quote     Removes the opening quote from the content, if specified.
no-close-quote    Removes the closing quote from the content, if specified.
none 	          Sets the content, if specified, to nothing.
normal 	          Sets the content, if specified, to normal, which default is "none" (which is nothing).
inherit           Specifies that the value of the content property should be inherited from the parent element
 
 
Eg: inserts the url in parenthesis after each link:
<!DOCTYPE html>
<html>
<head>
<style>
a:after {content: " (" attr(href) ")";}
</style>
</head>
<body>
<p><a href="http://www.andrewsin.com">andrew sin</a> stuff</p>
</body>
</html>
 
Outputs:

 
 
Eg2: appending an asterisk to a mandatory field
<!DOCTYPE html>
<html>
<head>
<style>
    .required:after { content:" *"; }
</style>
</head>
<body>
<div class="required">
    <label>Name:</label>
    <input type="text">
</div>
</body>
</html>
 
Outputs:

 
Note: IE8 supports the content property only if a !DOCTYPE is specified.
 
 
For more information, see here.
For required field/mandatory field styling css, see here.