縦に広げるメニュー

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>メニュー</title>
<style>
<!--
*{margin:0;padding:0;}
ul{list-style-type:none;}
.menu{display:none;}
.check{display:none;}
.switch {display:inline-block;width:1rem;height:1rem;}
.switch span{color:red;display:inline-block;transform: rotate( -90deg );}
.switch + a + ul{position:relative;left:1rem;display:none;}
.check:checked + label span{transform: rotate( 0 );}
.check:checked + label  + a + ul {display:block;}
-->
</style>
</head>
<body>
<input type="checkbox" id="menu00" class="check" value="0" /><label for="menu00" class="switch"><span>▼</span></label>
<a>メニュー</a>
<ul class="menu">
  <li><input type="checkbox" id="menu01" class="check" value="0" /><label for="menu01" class="switch"><span>●</span></label>
  <a>メニュー1</a>
  </li>
  <li><input type="checkbox" id="menu02" class="check" value="0" /><label for="menu02" class="switch"><span>▼</span></label>
  <a>メニュー2</a>
    <ul>
      <li><input type="checkbox" id="menu02-1" class="check" value="0" /><label for="menu02-1" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
      <li><input type="checkbox" id="menu02-2" class="check" value="0" /><label for="menu02-2" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
    </ul>
  </li>
  <li><input type="checkbox" id="menu03" class="check" value="0" /><label for="menu03" class="switch"><span>●</span></label>
  <a>メニュー3</a>
  </li>
  <li><input type="checkbox" id="menu04" class="check" value="0" /><label for="menu04" class="switch"><span>▼</span></label>
  <a>メニュー4</a>
    <ul>
      <li><input type="checkbox" id="menu04-1" class="check" value="0" /><label for="menu04-1" class="switch"><span>▼</span></label>
      <a>サブメニュー</a>
        <ul>
          <li><input type="checkbox" id="menu04-1-1" class="check" value="0" /><label for="menu04-1-1" class="switch"><span>●</span></label>
          <a>孫メニュー</a>
          </li>
          <li><input type="checkbox" id="menu04-1-2" class="check" value="0" /><label for="menu04-1-2" class="switch"><span>●</span></label>
          <a>孫メニュー</a>
          </li>
        </ul>
      </li>
      <li><input type="checkbox" id="menu04-2" class="check" value="0" /><label for="menu04-2" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
    </ul>
  </li>
  <li><input type="checkbox" id="menu05" class="check" value="0" /><label for="menu05" class="switch"><span>▼</span></label>
  <a>メニュー5</a>
    <ul>
      <li><input type="checkbox" id="menu05-1" class="check" value="0" /><label for="menu05-1" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
      <li><input type="checkbox" id="menu05-2" class="check" value="0" /><label for="menu05-2" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
    </ul>
  </li>
</ul>
</body>
</html>

追記:2021/4/22 25:00頃

応用(「▼」だけでなく「メニュー」をクリックしてもメニューを開きたい)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>メニュー</title>
<style>
<!--
*{margin:0;padding:0;}
ul{list-style-type:none;}
.menu{display:none;}
.check{display:none;}
.switch {display:inline-block;width:1rem;height:1rem;}
.switch span{color:red;display:inline-block;transform: rotate( -90deg );}
.switch + a + ul{position:relative;left:1rem;display:none;}
.check:checked + label span{transform: rotate( 0 );}
.check:checked + label  + a + ul {display:block;}
.check:checked + label  + label + ul {display:block;}
-->
</style>
</head>
<body>
<input type="checkbox" id="menu00" class="check" value="0" /><label for="menu00" class="switch"><span>▼</span></label>
<label for="menu00">メニュー</label>
<ul class="menu">
  <li><input type="checkbox" id="menu01" class="check" value="0" /><label for="menu01" class="switch"><span>●</span></label>
  <a>メニュー1</a>
  </li>
  <li><input type="checkbox" id="menu02" class="check" value="0" /><label for="menu02" class="switch"><span>▼</span></label>
  <a>メニュー2</a>
    <ul>
      <li><input type="checkbox" id="menu02-1" class="check" value="0" /><label for="menu02-1" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
      <li><input type="checkbox" id="menu02-2" class="check" value="0" /><label for="menu02-2" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
    </ul>
  </li>
  <li><input type="checkbox" id="menu03" class="check" value="0" /><label for="menu03" class="switch"><span>●</span></label>
  <a>メニュー3</a>
  </li>
  <li><input type="checkbox" id="menu04" class="check" value="0" /><label for="menu04" class="switch"><span>▼</span></label>
  <a>メニュー4</a>
    <ul>
      <li><input type="checkbox" id="menu04-1" class="check" value="0" /><label for="menu04-1" class="switch"><span>▼</span></label>
      <a>サブメニュー</a>
        <ul>
          <li><input type="checkbox" id="menu04-1-1" class="check" value="0" /><label for="menu04-1-1" class="switch"><span>●</span></label>
          <a>孫メニュー</a>
          </li>
          <li><input type="checkbox" id="menu04-1-2" class="check" value="0" /><label for="menu04-1-2" class="switch"><span>●</span></label>
          <a>孫メニュー</a>
          </li>
        </ul>
      </li>
      <li><input type="checkbox" id="menu04-2" class="check" value="0" /><label for="menu04-2" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
    </ul>
  </li>
  <li><input type="checkbox" id="menu05" class="check" value="0" /><label for="menu05" class="switch"><span>▼</span></label>
  <a>メニュー5</a>
    <ul>
      <li><input type="checkbox" id="menu05-1" class="check" value="0" /><label for="menu05-1" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
      <li><input type="checkbox" id="menu05-2" class="check" value="0" /><label for="menu05-2" class="switch"><span>●</span></label>
      <a>サブメニュー</a>
      </li>
    </ul>
  </li>
</ul>
</body>
</html>

追記:2021/4/23 12:50頃

「▼メニュー」の「▼」と「メニュー」の間に隙間が空いてしまう問題が発生。

その解決方法。

修正前

<input type="checkbox" id="menu00" class="check" value="0" /><label for="menu00" class="switch"><span>▼</span></label>
<a>メニュー</a>

修正後(htmlソースの改行位置を変える)

<input type="checkbox" id="menu00" class="check" value="0" />
<label for="menu00" class="switch"><span>▼</span></label><a>メニュー</a>



コメント