Giaadaaaa
by BeNdErR
HTML
<div id="gfloris-container">
<ul id="menu">
<li class="parent"><a href="/products">TUTTI</a></li>
<li class="parent"><a href="/category/pronta-consegna">PRONTA CONSEGNA</a></li>
<li class="parent"><a href="#">BIJOUX<span class="expand plus"></span></a>
<ul class="child">
<li><a href="/category/anelli">ANELLI</a></li>
<li><a href="/category/collane">COLLANE</a></li>
<li><a href="/category/spille">SPILLE</a></li>
</ul>
</li>
<li class="parent"><a href="#">CERAMICA<span class="expand plus"></span></a>
<ul class="child">
<li class="parent"><a href="#">PIATTI
<span class="expand plus"></span></a>
<ul class="child">
<li><a href="/category/piatti-piccoli">PIATTI PICCOLI</a></li>
<li><a href="/category/piatti-medi">PIATTI MEDI</a></li>
<li><a href="/category/piatti-grandi">PIATTI GRANDI</a></li>
<li><a href="/category/portatorte">PORTATORTE</a></li>
</ul>
</li>
<li class="parent"><a href="#">TAZZE<span class="expand plus"></span></a>
<ul class="child">
<li><a href="/category/tazzine-caffe">TAZZINE CAFFÈ</a></li>
<li><a href="/category/tazze-te-piatto">TAZZE TÈ</a></li>
<li><a href="/category/tazze-mug">TAZZE MUG</a></li>
<li><a href="/category/tazza-caffellatte-piatto">TAZZE CAFFELLATTE</a></li>
</ul>
</li>
<li class="parent"><a href="#">PER LA CASA<span class="expand plus"></span></a>
<ul class="child">
<li><a href="/category/cache-pot">CACHEPOT</a></li>
<li><a href="/category/portagioie">PORTAGIOIE</a></li>
<li><a href="/category/portaincenso">PORTAINCENSO</a></li>
<li><a href="/category/orologi">OROLOGI</a></li>
<li><a href="/category/portatovaglioli"> PORTATOVAGLIOLI </a></li>
<li><a href="/category/per-gli-amici-animals">PER GLI AMICI...
CSS
#gfloris-container .parent {
display: block;
position: relative;
float: left;
line-height: 30px;
}
#gfloris-container .parent a {
margin: 10px;
text-decoration: none;
color: black;
}
/*#gfloris-container .parent:hover>ul {
position: absolute;
z-index: 9999;
}*/
#gfloris-container .child {
display: none;
background-color: white;
}
#gfloris-container .child.visible {
display: block;
position: absolute;
z-index: 9999;
}
#gfloris-container .child li {
line-height: 30px;
border: #CCC 1px solid;
width: 100%;
}
#gfloris-container .child li a {
color: #000000;
}
#gfloris-container ul {
list-style: none;
margin: 0;
padding: 0px;
min-width: 10em;
}
/*#gfloris-container .expand {
font-size: 12px;
float: right;
margin-right: 5px;
}*/
#gfloris-container ul li:not(:last-child)::after {
content: none !important;
}
#gfloris-container ul ul ul {
left: 100%;
top: 0;
margin-left: 1px;
}
.expand.plus:before {
content: '\00BB';
}
.expand.minus:before {
content: '\00BB';
}
@media only screen and (max-width: 500px) {
#menu li {
width: 100%;
text-align: center;
border-bottom: 1px solid lightgray;
}
#gfloris-container .child li {
width: 100%;
}
#gfloris-container .child.visible {
display: inline;
position: static;
z-index: auto;
}
#gfloris-container ul ul ul {
left: auto;
top: auto;
margin-left: auto;
}
/*.expand {
border: 1px solid black;
border-radius: 50%;
margin-left: 15px;
}*/
.expand.plus:before {
content: '\2661';
}
.expand.minus:before {
content: '\2661';
color: red;
}
}
JavaScript
$("#gfloris-container .parent").on("click", function(e) {
e.stopPropagation();
var $ul = $(this).find("> ul.child");
if ($ul.hasClass("visible")) {
closeMenu($ul);
} else {
openMenu($ul);
closeOtherMenus($ul);
}
});
function closeMenu($menu) {
$menu.find(".child.visible").removeClass("visible");
$menu.removeClass("visible");
$menu.closest(".parent").find("> a .expand").removeClass("minus").addClass("plus");
}
function openMenu($menu) {
$menu.addClass("visible");
$menu.closest(".parent").find("> a .expand").removeClass("plus").addClass("minus");
}
function closeOtherMenus($openedMenu){
var hMenus = [];
var $currentMenu = $openedMenu;
while($currentMenu.length > 0 && $currentMenu.hasClass("child")) {
hMenus.push($currentMenu[0]);
$currentMenu = $currentMenu.parent().closest("ul.child, ul.menu");
}
if ($currentMenu.length) hMenus.push($currentMenu);
console.log(hMenus);
var $openedMenus = $("#menu").find("ul.child.visible");
for(var x = 0; x < $openedMenus.length; x++){
if (hMenus.indexOf($openedMenus[x]) < 0) {
closeMenu($($openedMenus[x]));
}
}
}