, 1 min read
Actual programming with HTML and CSS (without javascript)
I usually stick with academic or research issues, but today, I wanted to have some fun. Geek fun.
While W3C describes Cascading Style Sheets (CSS) as a mechanism for adding style (e.g. fonts, colors, spacing) to Web documents, it is also a bona fide programming language. In fact, it is one of the most widespread declarative languages.
But how powerful is CSS? It is not Turing complete, so there is no hope of programming full applications. However, CSS may be surprisingly powerful. (Update: It turns out that HTML+CSS is Turing complete!)
Suppose you are given a plain HTML table and you want to add counters and colors to it. Starting with this table:
<table>
<tr><th>City</th><th>Color</th></tr>
<tr><td>Montreal</td><td>Red</td></tr>
<tr><td>Toronto</td><td>Blue</td></tr>
<tr><td>Vancouver</td><td>Yellow</td></tr>
</table>
We want to color rows in alternative colors. We need counters and a way to color the second line differently.
Solution: Add the following lines to your CSS style sheet:
tr{counter-increment: mycounter}
table {counter-reset: mycounter -1}
td:first-child:before {content: counter(mycounter)". " }
tr:nth-child(2n+2) td {background-color: #ccc;}
tr:nth-child(2n+3) td {background-color: #ddd;}