サイトマップのツリーを折り畳めるようにする
サイトマップをツリー形式で作りましたが、ツリーの一部分を折り畳めたほうが使い勝手がいいような気がします。
HTML5 のタグに折り畳みができる details タグがあるので、これをを使うことにしました。ツリーの表現は、css を使って ul タグのリストで表現しています。例えば、次のような HTML になります。
<ul>
<li>サイトトップ
<ul>
<li><a href="/aaa.html">ご挨拶</a><li>
<li><a href="/labo/">研究室</a>
<ul>
<li><a href="/labo/bbb.html">アニメ</a></li>
<li><a href="/labo/ccc.html">ゲーム</a></li>
</ul>
</li>
<li><a href="/blog/">ブログ</a>
<ul>
<li><a href="/blog/aaa.html">研究員A</a></li>
<li><a href="/blog/bbb.html">研究員B</a></li>
</ul>
</li>
</ul>
</li>
</ul>
次のように表示されます。
これを折り畳めるように details タグを使っていきます。
<ul>
<li><details open><summary>サイトトップ</summary>
<ul>
<li><a href="/aaa.html">ご挨拶</a><li>
<li><details open><summary><a href="/labo/">研究室</a></summary>
<ul>
<li><a href="/labo/bbb.html">アニメ</a></li>
<li><a href="/labo/ccc.html">ゲーム</a></li>
</ul>
</details></li>
<li><details open><summary><a href="/blog/">ブログ</a></summary>
<ul>
<li><a href="/blog/aaa.html">研究員A</a></li>
<li><a href="/blog/bbb.html">研究員B</a></li>
</ul>
</details></li>
</ul>
</details></li>
</ul>
次のように表示されます。▼をクリックすると畳まれます。
details タグに open 属性を付けているのは、はじめに開いた状態で表示したいからです。open 属性を付けないと、初期状態は折り畳まれています。
ちなみに、css は以下のようになります。ツリー表示したい ul タグ全体を div タグで囲み、囲んだ div タグのクラスに tree を指定します。
.tree {
position: relative;
margin-top: 0px;
padding: 20px;
}
.tree ul {
padding-left: 20px;
list-style: none;
}
.tree ul li {
margin-top: 0;
position: relative;
padding-top: 2px;
padding-bottom: 2px;
padding-left: 20px;
box-sizing: border-box;
}
.tree ul li::before {
position: absolute;
top: 15px;
left: 0px;
width: 15px;
height: 1px;
margin: auto;
content: '';
background-color: black;
}
.tree ul li::after {
position: absolute;
top: 0;
bottom: 0;
left: 0px;
width: 1px;
height: 100%;
content: '';
background-color: black;
}
.tree ul li:last-child::after {
height: 15px;
}

ディスカッション
コメント一覧
まだ、コメントがありません