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'.