JSFiddle - React, Tailwind, and code Playground

by Tim

HTML

<ul class="navigation">
  <li><a href="#">請選擇</a>
  <ul style="width: 200px; height: 100px; overflow-x:hidden;overflow-y:auto">
    <li><a href="#">第一層大類A</a>
    <ul>
        <li><a href="#">第二層小類1</a></li>
        <li><a href="#">第二層小類2</a></li>
        <li><a href="#">第二層小類3</a></li>
        <li><a href="#">第二層小類4</a></li>
    </ul>
    </li>
    <li><a href="#">第一層大類B</a><li>
    <li><a href="#">第一層大類C</a><li>
    <li><a href="#">第一層大類D</a><li>
    <li><a href="#">第一層大類E</a><li>
    <li><a href="#">第一層大類F</a><li>
    <li><a href="#">第一層大類G</a><li>
    <li><a href="#">第一層大類B1</a><li>
    <li><a href="#">第一層大類C2</a><li>
    <li><a href="#">第一層大類D3</a><li>
    <li><a href="#">第一層大類B4</a><li>
    <li><a href="#">第一層大類C5</a><li>
    <li><a href="#">第一層大類D6</a><li>
  </ul>
  </li>
</ul>

CSS

body, ul.navigation, ul.navigation li, ul.navigation ul, a{
    margin: 0;
    padding: 0;
    font-size: 12px;
    text-decoration: none;
}
ul.navigation,ul.navigation li {
    list-style: none;
}

ul.navigation li {
    position: relative;
    float: left;
}

ul.navigation li a
{
    width: 200px;
    display: block;
    padding: 1px 2px;
    background: #fff;
    color: black;
    z-index:1;
}

ul.navigation > li > a{
    border-bottom: 1px solid #CCC;    
    border-left: 1px solid #CCC;
}
ul.navigation > li > a:hover{
    color: #666;
    background: #DDD
}

ul.navigation li ul{
    display: none;
    float: left;
    position: absolute;
    left: 0;    
    margin: 0;
    z-index:2;
}
/* 當第一層選單被觸發時,指定第二層顯示 */
ul.navigation li:hover > ul{
    display: block;
}

ul.navigation ul li {
    border-bottom: none;
}

ul.navigation ul li:last-child {
    border-bottom: none;
}

ul.navigation ul a {
    width: 200px;
    padding: 1px 2px;    
    color: #666;        
    background: #EEE;
    z-index:3;
}
ul.navigation ul a:hover {        
    background: #CCC;    
}

ul.navigation ul li:hover > ul{
    display: block;
    position: absolute;
    top: 0;    
    left: 100%;
}

.arrow-bottom {
    display: inline-block;
    margin-left: 5px;
    border-top: 4px solid #FFF;
    border-right: 4px solid transparent;    
    border-left: 4px solid transparent;        
    width: 1px;
    height: 1px;
}

.arrow-right {
    display: inline-block;
    margin-left: 12px;    
    border-top: 3px solid transparent;
    border-bottom: 3px solid transparent;
    border-left: 3px solid #666;        
    width: 1px;
    height: 1px;
}

JavaScript

$(function() {
            $("ul.navigation > li:has(ul) > a").append('<div class="arrow-bottom"></div>');
            $("ul.navigation > li ul li:has(ul) > a").append('<div class="arrow-right"></div>');
        });