They do not need to be nested, which is used for the "for" attribute in the <label> element.
In modern browsers (supporting CSS 2.1) you can use the sibling selector, for example
input + label { }
You will need to have markup in a strict marriage relationship, for example:
<input name="cb" id="cb" type="checkbox"><label for="cb">Checkbox</label>
Robusto
source share