Estoy haciendo un menú desplegable que bien al pasar por encima con hover o al hacer click muestre dicho menú que a la vez se divide en dos partes, a la izquierda una lista de nombres o categorías y a la derecha otra lista con una imagen, título, descripción y detalles.
He probado varias maneras incluso casi lo tenía conseguido pero claro, me lo piden validado por la w3c y al usar <ul><li> dentro no puedo meter div, h2, p etc etc, así que he vuelto a intentarlo de esta manera que sí valida pero ahora no me cuadra como antes.
El código que he utilizado es el siguiente:
Código HTML:
Ver original
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <link rel="stylesheet" href="views/css/normalize.css" > <style type="text/css"> *{ margin:0px; padding:0px; list-style: none; text-decoration: none; font-size: 16px; font-size: 1em; border:0; box-sizing: border-box; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; } nav#menu{ padding-top: 30px; background: #1F1F1F; font-family: 'Roboto', sans-serif; height: 90px; height: 100px; text-align:center; vertical-align: center; padding-bottom: 10px; z-index: 1000; } .menu{ background: #111111; } nav ul{ list-style: none; } nav ul li{ background: #111111; color:#d4d4d4; display: inline; line-height:38px; height:38px; margin: 0 0.5%; text-align:center; display: inline-block; position: relative; } nav ul li a{ display: inline-block; color:#d4d4d4; line-height:38px; font-size:11px; font-weight:900; text-transform:uppercase; padding:0 8px; } nav ul li a:hover{ background:#f9f8f6; color:#252120; cursor:pointer !important; opacity: 1; } nav ul li a span{ margin-right: 10px; } nav ul li a:active{ background:rgba(255,0,100,1); } /* Zona desplegable, hover y click*/ #hijo1, #hijo2, #hijo3, #hijo4{ border: 1px solid yellow; width: 363px; z-index: 2001; min-height: 172px !important; position: absolute; left: -29px; overflow: visible; overflow: hidden; top:40px;/*Altura temporal solo en archivo de prueba*/ } nav ul li .children li, nav ul li .children-click li{/*AFECTA A LOS LI EN HOVER*/ display: block; /*overflow: hidden;*/ overflow: visible; /*REVISAR AQUÍ YA QUE ASÍ ADMITE AL CLICKEAR*/ height: 24px !important; line-height: 24px !important; text-align: center; text-transform: uppercase; width: 162px; } nav ul li .children li a, nav ul li .children-click li a { display: block; background: #fff; font-size: 10px !important; height: 24px !important; line-height: 24px !important; color: #232122; font-weight: 500; } nav ul li:hover .children{ display: block; } ul.children li a:hover{ background:#fdc003; color:#FFF!important; width: 100%; } nav ul li .children, nav ul li .children-click{ display: none; position: absolute; z-index: 1000; } nav ul li .children-click{ display: block;/*AHORA AL CLICAR LOS MUESTRA*/ } li.sub-hijo1{ float: left; z-index: 2002; margin: 0; padding: 0; vertical-align: top; top:0; display: block; } li.sub-hijo2{ float: right; z-index: 2002; margin: 0; padding: 0; vertical-align: top; top:0; display: block; } nav ul li.sub-hijo2 ul li{ /*Temporal solo de pureba;*/ z-index: 2052; float: left; } li.sub-hijo2 ul.art-desplegable{ background: #ffffff; width: 363px; z-index: 2005; max-width: 513px; padding: 5px; margin: 0 15px; height: 201px; min-height: 172px !important; font-family: 'Trebuchet MS', sans-serif; padding: 10px; padding: 0; border: 1px solid #babab8 !important; top: -25px;/*Distancia temporal con respecto a los id #hijo*/ position: absolute; left: -29px; } li.sub-hijo2 ul.art-desplegable img{ float: left; padding: 5px; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); margin: 25px 10px 0 10px; width: 150px; height: 150px; box-shadow: 0 0 5px #333; } .name-art-desplegable { text-align: left !important; padding: 5px 10px 8px 10px; font-size:14px; color:#000; height:70px; overflow:hidden; font-size: 18px; font-weight: 400; padding: 3px 0 8px 0; height: 26px; overflow: hidden; margin-top: 20px; } .name-art-desplegable a {color:#ffbb0f;} .category-art-desplegable { text-transform: uppercase; font-weight: 400; font-size: 12px; padding: 10px 0 8px 0; height: 24px; overflow: hidden; text-align: left; } .linkdet-art-desplegable { font-size: 12px; margin: 14px 0 0 0; padding-top: 80px; text-align: left !important; } .linkdet-art-desplegable a { color:#ffbb0f !important; } nav#menu i { color:#d4d4d4; font-size: 4px; margin:0 0 0 1%; position: relative; bottom: 2px; margin-left: 10px; display: inline; } </style> </head> <body> <nav id="menu" class="fila"> <ul class="menu"> <li id="profesionales" class="submenu"> <ul id="hijo1" class="children"> <li class="sub-hijo1"> <ul class=""> </ul> <li> <li class="sub-hijo2"> <ul class="art-desplegable"> <li class="aqui-enlace-o-imagen"> </li> <li class="name-art-desplegable"> </li> <li class="category-art-desplegable"> </li> <li class="linkdet-art-desplegable"> </li> </ul> </li> </ul> </li> </ul> </nav> </body> </html>
archivo: menu-desplegable.js
Código Javascript:
Ver original
$(document).ready(function(){ // MOSTRANDO Y OCULTANDO MENU // PROFESIONALES $('#profesionales').click(function(){ $('#hijo1').removeClass('children-click').addClass('children'); $('#hijo2').removeClass('children-click').addClass('children'); $('#hijo3').removeClass('children-click').addClass('children'); $('#hijo4').removeClass('children-click').addClass('children'); if($('#profesionales').attr('class') == 'submenu' ){ $('#hijo1').removeClass('children').addClass('children-click'); } else{ $('#hijo1').removeClass('children-click').addClass('children'); } }); // HORÓSCOPO $('#horoscopo').click(function(){ $('#hijo1').removeClass('children-click').addClass('children'); $('#hijo2').removeClass('children-click').addClass('children'); $('#hijo3').removeClass('children-click').addClass('children'); $('#hijo4').removeClass('children-click').addClass('children'); if($('#horoscopo').attr('class') == 'submenu' ){ $('#hijo2').removeClass('children').addClass('children-click'); } else{ $('#hijo2').removeClass('children-click').addClass('children'); } }); // BLOG $('#blog').click(function(){ $('#hijo1').removeClass('children-click').addClass('children'); $('#hijo2').removeClass('children-click').addClass('children'); $('#hijo3').removeClass('children-click').addClass('children'); $('#hijo4').removeClass('children-click').addClass('children'); if($('#blog').attr('class') == 'submenu' ){ $('#hijo3').removeClass('children').addClass('children-click'); } else{ $('#hijo3').removeClass('children-click').addClass('children'); } }); // UTILIDADES $('#utilidades').click(function(){ $('#hijo1').removeClass('children-click').addClass('children'); $('#hijo2').removeClass('children-click').addClass('children'); $('#hijo3').removeClass('children-click').addClass('children'); $('#hijo4').removeClass('children-click').addClass('children'); if($('#utilidades').attr('class') == 'submenu' ){ $('#hijo4').removeClass('children').addClass('children-click'); } else{ $('#hijo4').removeClass('children-click').addClass('children'); } }); });
Me debería quedar así como en esta imagen
pero me sale así:
¿Como podría volver a dejarlo como en la primera imagen?
¿Alguna otra idea para hacer este menú semántico y por la w3c?
Saludos.
PD: He recortado parte del menu <li> ya que en blog, y otras zonas también tiene un submenú de 6 pero me pasaba de caracteres permitidos.