An extension of Koen's solution ... and stays after clicked as well ... you need to re-position/style the labels (and add your stars), hide the inputs, but it's CSS only
Demo: http://jsfiddle.net/f82Fg/2/
HTML
<div class="butts">
<input id="r5" type="radio" class="butt" value="5" />
<label for="r5">5</label>
<input id="r4" type="radio" class="butt" value="4" />
<label for="r4">4</label>
<input id="r3" type="radio" class="butt" value="3" />
<label for="r3">3</label>
<input id="r2" type="radio" class="butt" value="2" />
<label for="r2">2</label>
<input id="r1" type="radio" class="butt" value="1" />
<label for="r1">1</label>
</div>
CSS
.butts {
float: left;
}
.butt {
display: block;
float: right;
width: 16px;
height: 16px;
}
.butt:hover,
.butt:hover ~ .butt,
.butt:hover ~ label {
background-color: blue;
}
.butt:checked,
.butt:checked ~ .butt,
.butt:checked ~ label {
background-color: red;
}