多階層リストをツリー状するCSS1
サイドバーのリストなどを、多階層ツリー表示させるためのSnippetです。
参考:CODEPEN > Parent child vertical list menu
コード
HTML
<div class="nav"> <ul class=list> <li> <a href="#">Home</a> <ul> <li> <a href="#">Lab</a> <ul> <li> <a href="#">Code</a> <ul> <li> <a href="#">Html</a> </li> <li> <a href="#">Css</a> </li> <li> <a href="#">Jquery</a> </li> </ul> </li> <li> <a href="#">Graph</a> <ul> <li> <a href="#">Image</a> </li> <li> <a href="#">Design</a> </li> </ul> </li> </ul> </li> <li> <a href="#">Blog</a> <ul> <li> <a href="#">Category</a> <ul> <li> <a href="#">Code</a> </li> <li> <a href="#">Graph</a> </li> </ul> </li> </ul> </li> <li> <a href="#">About</a> <ul> <li> <a href="#">Vcard</a> </li> <li> <a href="#">Map</a> </li> </ul> </li> </ul> </li> </ul> </div>
CSS
.nav *, .nav *:before, .nav *:after { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .nav * { margin: 0; padding: 0; border: 0 none; position: relative; -webkit-transition: all .4s; -moz-transition: all .4s; transition: all .4s; } .nav h1 { color: #ccc; text-align: center; font-size: 1.5rem; padding-top: 40px; text-shadow: rgba(0,0,0,0.6) 1px 0, rgba(0,0,0,0.6) 1px 0, rgba(0,0,0,0.6) 0 1px, rgba(0,0,0,0.6) 0 1px; } .nav { margin: 20px auto; left: 60px; width: 455px; min-height: auto; } .nav ul.list, .nav ul.list ul { list-style-type: none; margin:0; padding:0; } .nav ul.list ul { margin-left:10px; position:relative; } .nav ul.list ul:before { content:""; display:block; width:0; position:absolute; top:0; bottom:0; left:0; border-left:1px solid #ccc; } .nav ul.list li { margin:0; padding:3px 12px; text-decoration: none; text-transform: uppercase; font-size:13px; line-height:20px; color:#ccc; font-weight:normal; position:relative; } .nav ul.list li a { text-decoration: none; text-transform: uppercase; font-size:14px; line-height:20px; color:#ccc; font-weight:bold; position:relative; } .nav ul.list li a:hover, .nav ul.list li a:hover+ul li a { color: RGBA(213, 235, 227, 1); } .nav ul.list ul li:before { content:""; display:block; width:8px; height:0; border-top:1px solid #ccc; position:absolute; top:10px; left: 0; /*ここは背景色と同じにして、下に伸びている棒を隠す*/ border-left: 1px solid #fff; } .nav ul.list ul li:last-child:before { height: auto; top: 10px; bottom: 0; }