CSS allows you to automatically generate content that doesn't belong to the document tree.
The content property allows to specify what content will be automatically generated.
The possible values are
<string> | to insert any text |
<url> | to insert an internet resource e.g: url(fellas.jpg) |
<counter> | to insert a counter for a list |
attr(A) | to insert the value of the A attribute |
open-quote | close-quote | no-open-quote | no-close-quote |
<html> <head> <style> :before{content: "<>"; color: red} :after{content: "</>"; color: red} table, form {display: block} </style> </head> <body> <h2>This is a Header 2</h2> <p>This is a paragraph. <i>Italic text</i> <blockquote>This is a blockquote</blockquote> <ul style="list-style-type: disc"> <li>item 1</li> <li>item 2</li> </ul> <form> <input type="text"> <input type="button" value="Submit"> </form> <table> <tr><td>data 1</td><td>data 2</td></tr> <tr><td>data 3</td><td>data 4</td></tr> </table> </body> </html>
<head> <style> h2:before{content: "<h2>"; color: red} h2:after{content: "</h2>"; color: red} p:before{content: "<p>"; color: blue} p:after{content: "</p>"; color: blue} blockquote:before{content: "<blockquote>"; color: magenta} blockquote:after{content: "</blockquote>"; color: magenta} ul:before{content: "<ul>"; color: yellow} ul:after{content: "</ul>"; color: yellow} form:before{content: "<form>"; color: cyan} form:after{content: "</form>"; color: cyan} input:before{content: "<input type="attr(type)">"; color: lime} input:after{content: "</input>"; color: lime} span:before{content: url('bullet-1.png');} span:after{content: url('bullet-2.png');} </style> </head> <body> <h2>This is a Header 2</h2> <p>This is a paragraph. <i>Italic text</i> <blockquote>This is a blockquote</blockquote> <ul style="list-style-type: disc"> <li>item 1</li> <li>item 2</li> </ul> <form> <input type="text"> <input type="button" value="Submit"> </form> </body> </html>