function visibleOnClick (node) {
    var visible = node.childNodes[1]; 
    visible.style.opacity = (visible.style.opacity == 0 ? 1 : 0);
}
<div class='box' onclick='visibleOnClick(this)'>
    <ul class='visible'>
	<li>blabla</li>
	<li>blabla</li>
    </ul>
</div>
this.childNodes[0] - текстовая нода, присутствует если между <div> и <ul> будет хоть один символ, в том числе и перевод строки.
.style.opacity сделает элемент прозрачным, но место занимать он по прежнему будет. Для освобождения пространства надо переключать .style.display между 'none' и 'block'.