Sì ma non è detto che non si possa fare una cosa veloce anche con JavaScript.
Giusto per chiarire, hai una situazione del genere:
codice:
<h3 id="...">
<label class="...">
<input id="..." class="..." type="checkbox"> <span>Spedire ad un indirizzo differente?</span>
</label>
</h3>
<div class="...">
...
</div>
Il checkbox sta dentro un label che a sua volta sta dentro un h3, mentre il div che vorresti gestire (tramite checkbox) sta dopo h3.
Anche volendo utilizzare quella tecnica chiamata "Checkbox Hack", non è possibile creare una relazione tra il checkbox e il div, perché non rispetterebbe la peculiarità della "cascata", propria dei CSS. Non esiste infatti (attualmente) un selettore che dal checkbox risalga all'indietro verso il suo contenitore h3 e quindi raggiungere il div che è allo stesso livello di questo.
In questo caso è necessario l'uso di JavaScript/jQuery.
Potresti risolvere comunque in diversi modi a seconda delle tue preferenze.
Giusto un esempio in semplice JavaScript, potresti inserire una cosa del genere direttamente sul tag <input>:
codice:
onchange="this.parentNode.parentNode.nextElementSibling.style.display = this.checked ? 'block' : 'none';"