問題は主にマークアップにあります。「ナビゲーションボタンを非表示にする」は#leftNavigatorに含まれているため、#leftNavigatorを非表示にすると、表示したままにするボタンも非表示になります。これを機能させるためにマークアップを変更する方法はいくつかあります。
基本的には、ナビゲーターのラッパーを作成して比較的配置し、その中に「ナビゲーションボタンを非表示にする」を絶対に配置しました。また、2つのコントロールパネルボタンに上部マージンを追加して、「ナビゲーションを非表示にする」ボタン用のスペースを残しました。これを機能させる方法はたくさんあります。
#leftNavigator{float:left; width:100%; background-color:red;}
#top{height:150px; background-color:blue;}
#controlPanel{height:50px; background-color:gray;}
#tree{background-color:green;}
#content{overflow:auto; background-color:coffee;}
#btn{z-index:10;position:absolute;top:150px;}
#navigator_wrapper{position:relative;height:150px;width:20%}
#controlPanel button {margin-top:25px;}
</ p>
<div id="navigator_wrapper">
<button id="btn">I hide the nav</button>
<div id="leftNavigator">
<div id="top">I have an image</div>
<div id="controlPanel"><button>Other</button><button>controls</button></div>
<div id="tree">I'm a jstree</div>
</div>
</diV>
<div id="content">
I take all the space I want. Except for leftNavigator's space.
</div>
ここにjfiddleがありますhttp://jsfiddle.net/samisadaka/9c7va/