JSFiddle - React, Tailwind, and code Playground
HTML
<b>Example 2 with added styles. Pure CSS. Without JS.</b>
<br>
<div class="dropdown" tabindex="1">
<i class="db2" tabindex="1"></i><a class="dropbtn i2">Dropdown l</a>
<div class="dropdown-content"><i class="db3" tabindex="1"></i>
<p>Dropdown content. Left-aligned relative to the button.</p>
<p>Dropdown content. Left aligned. Text <a href="#" class="tl">link</a> ....</p>
</div>
</div>
<div class="dropdown" tabindex="1">
<i class="db2" tabindex="1"></i><a class="dropbtn">Menu l</a>
<div class="dropdown-content"><i class="db3" tabindex="1"></i>
<a href="#" class="mi">Home</a>
<div class="sub-dropdown">
<a class="mi si">About</a>
<div class="sub-dropdown-content">
<a href="#">Sublink 1</a>
<a href="#">Sublink 2</a>
<a href="#">Sublink 3</a>
</div>
</div>
<a href="#" class="mi">Contact</a>
</div>
</div>
<div class="dropdown" tabindex="1">
<i class="db2" tabindex="1"></i><a class="dropbtn c">MyMenu c</a>
<div class="dropdown-content c"><i class="db3" tabindex="1"></i>
<a href="#" class="mi">Products</a>
<div class="sub-dropdown">
<a class="mi si">Company</a>
<div class="sub-dropdown-content">
<a href="#">Sublink 1</a>
<a href="#">Sublink 2</a>
<a href="#">Sublink 3</a>
</div>
</div>
<a href="#" class="mi">Stackoverflow</a>
</div>
</div>
<div class="dropdown" tabindex="1">
<i class="db2" tabindex="1"></i><a class="dropbtn r i2">Dropdown r</a>
<div class="dropdown-content r"><i class="db3" tabindex="1"></i>
<p>Dropdown content. Right-aligned relative to the button.</p>
<p>Dropdown content. Right aligned. Text <a href="#" class="tl">link</a> ....</p>
</div>
</div>
CSS
body {
margin: 10px 20px;
font-size: 20px;
font-family: Times, "Times New Roman", serif;
}
/* dd container */
.dropdown {
display: inline-block;
position: relative;
outline: none;
background-color: #861cb9;
margin: 10px;
}
/* button */
.dropbtn {
display: inline-block;
padding: 12px 16px;
color: white;
cursor: pointer;
background-color: #861cb9;
transition: 0.35s ease-out;
}
.dropbtn:hover, .dropbtn.c:hover, .dropbtn.r:hover {
background-color: #691692;
}
/* dd content */
.dropdown .dropdown-content {
position: absolute;
top: 50%;
visibility: hidden;
opacity: 0;
z-index: 100000;
background-color: #f7f7f7;
min-width: 120%;
padding: 10px;
font-size: 16px;
box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.2);
transition: 0.35s ease-out;
}
/* center & right position menu relative to the button */
.dropdown .dropdown-content.c {
left: 50%;
margin-left: calc(-60% - 10px);
}
.dropdown .dropdown-content.r {
right: 0;
}
/* style link menu item */
.dropdown-content .mi {
display: block;
color: black;
padding: 8px 0;
text-decoration: none;
position: relative;
}
.dropdown-content .mi::before {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background:
linear-gradient(
90deg,
rgba(240, 242, 244, 0) 0%,
rgba(223, 223, 223, 1) 30%,
rgba(240, 242, 244, 0) 100%
);
opacity: 0;
z-index: -1;
transition: 0.4s ease-out;
}
.dropdown-content .mi:hover::before {
opacity: 1;
}
/* style text link */
.dropdown-content .tl {
color: #36f;
text-decoration: none;
border-bottom: 1px dotted #36f;
transition: 0.35s ease-out;
}
.dropdown-content .tl:hover {
border-bottom: 1px dotted transparent;
}
/* show dd content */
.dropdown:focus .dropdown-content {
outline: none;
visibility: visible;
opacity: 1;
transform: translateY(20px);
}
/* mask to close menu by clicking on the button */
.dropdown .db2 {
position: absolute;
top: 0;
right: 0;
bottom:...