Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1547 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Menu déroulant responsive

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Menu déroulant responsive

n°2403986
theo92
Posté le 16-12-2021 à 14:18:44  profilanswer
 

Bonjour,
J'ai trouvé un exemple de menu déroulant responsive qui me convient.
J'essaie toutefois de l'aménager de façon que les sous-menus apparaissent au survol de la souris (j'ai trouvé comment faire avec le :hover)
Ce que je ne comprends pas c'est pourquoi je ne peux accéder au sous-menu, il ne reste pas affiché...
J'essaie de trouver l'instruction qui me me permettrait de laisser le sous menu affiché mais je suis loin d'être à l'aise avec le css, alors je vous remercie d'avance pour vos conseils
Le code du menu :

Code :
  1. <nav class="nav">
  2.   <input class="chk-nav" type="checkbox" id="btn-navbar" />
  3.   <label for="btn-navbar"><i class="fa fa-bars"></i></label>
  4.  
  5.   <ul class="navbar">
  6.     <li><a href="#"><i class="fa fa-home"></i>Inicio</a></li>
  7.     <li>
  8.         <label class="lbl-nav" for="btn-subnav1">
  9.           <i class="fa fa-user"></i>Cursos
  10.         </label>
  11.         <input class="chk-nav" type="checkbox" id="btn-subnav1"/>
  12.      
  13.         <ul class="sub-nav">
  14.           <li><a href="#">Excel básico</a></li>
  15.           <li><a href="#">Diseño web</a></li>
  16.           <li><a href="#">Computación básica</a></li>
  17.           <li><a href="#">Fundamentos de programación</a></li>
  18.         </ul>
  19.              
  20.     </li>
  21.     <li>
  22.         <label class="lbl-nav" for="btn-subnav2">
  23.              <i class="fa fa-info-circle"></i>Nosotros
  24.         </label>
  25.         <input class="chk-nav" type="checkbox" id="btn-subnav2" />
  26.        
  27.         <ul class="sub-nav">
  28.             <li><a href="#una">Historia</a></li>
  29.             <li><a href="#">Servicios</a></li>
  30.         </ul>
  31.     </li>
  32.     <li><a href="#"><i class="fa fa-envelope"></i>Contáctenos</a></li>
  33.   </ul>
  34.  
  35. </nav>


Voici le code CSS

Code :
  1. /*_________________________________________________________________
  2.  
  3.        $VARIBLES PARA COLORES  
  4. ____________________________________________________________________*/
  5. body {
  6.   font-family: 'Lato', sans-serif;
  7.   font-size: 100%;
  8.   background-color: #151515;
  9. }
  10. /*_________________________________________________________________
  11.  
  12.        $RESET
  13. ____________________________________________________________________*/
  14. *, *:before, *:after {
  15.   margin: 0;
  16.   padding: 0;
  17.   box-sizing: border-box;
  18. }
  19. /*_________________________________________________________________
  20.  
  21.        $ESTILOS GENERALES  
  22. ____________________________________________________________________*/
  23. ul {
  24.   list-style-type: none;
  25. }
  26. a, label {
  27.   display: block;
  28.   font-size: 1.25rem;
  29.   text-decoration: none;
  30.   color: #E5E5E5;
  31.   padding: 1rem 1rem 1rem 3rem;
  32.   cursor: pointer;
  33.   transition: all .3s ease;
  34.   border-left: 4px solid rgba(255, 255, 255, 0);
  35. }
  36. a:hover, label:hover {
  37.   color: #FFB503;
  38.   border-left: 4px solid #ffbc1d;
  39. }
  40. .chk-nav {
  41.   display: none;
  42. }
  43. /*_________________________________________________________________
  44.  
  45.        $NAV <nav class"nav"></nav>
  46. ____________________________________________________________________*/
  47. .nav {
  48.   width: 100%;
  49.   position: fixed;
  50.   z-index: 10;
  51. }
  52. /*_________________________________________________________________
  53.  
  54.        $NAVBAR <ul class"nav-bar"></ul>  
  55. ____________________________________________________________________*/
  56. .navbar {
  57.   width: 50%;
  58. }
  59. .navbar .sub-nav {
  60.   display: block;
  61. }
  62. .sub-nav a {
  63.   padding-left: 2rem;
  64.   font-size: 1rem;
  65. }
  66. .navbar > li {
  67.   border-top: 1px solid rgba(255, 255, 255, 0.2);
  68.   position: relative;
  69. }
  70. /*_________________________________________________________________
  71.  
  72. $ESTILOS PARA MODIFICAR EL LABEL SECUNDARIO DEL SUBMENU
  73. ____________________________________________________________________*/
  74. .navbar .fa {
  75.   position: absolute;
  76.   left: 1rem;
  77. }
  78. .lbl-nav:after {
  79.   content: "\25BC";
  80.   font-size: 1rem;
  81.   position: absolute;
  82.   width: 100%;
  83.   text-align: right;
  84.   left: 0;
  85.   padding-right: .75rem;
  86.   line-height: 1.5rem;
  87. }
  88. /*_________________________________________________________________
  89.  
  90. $ESTILOS PARA MODIFICAR EL LABEL PRINCIPAL O ICONO DE HAMBURGUESA
  91. ____________________________________________________________________*/
  92. label[for="btn-navbar"] {
  93.   padding: .5rem 1rem .5rem 1rem;
  94.   font-size: 2rem;
  95.   text-align: left;
  96.   color: #E5E5E5;
  97.   background-color: #252525;
  98. }
  99. label[for="btn-navbar"]:hover {
  100.   color: #E5E5E5;
  101.   border-left: 4px solid rgba(0, 0, 0, 0);
  102. }
  103. /*_________________________________________________________________
  104.  
  105. $ESTILOS PARA ESCONDER LA LISTA PRINCIPAL DEL MENU
  106. ____________________________________________________________________*/
  107. .navbar {
  108.   margin-left: -100%;
  109.   height: 100vh;
  110.   transition: all .5s ease;
  111.   background-color: #252525;
  112. }
  113. .chk-nav:checked ~ .navbar {
  114.   margin-left: 0;
  115. }
  116. /*_________________________________________________________________
  117.  
  118. $ESTILOS PARA ESCONDER LOS SUBMENUS  
  119. ____________________________________________________________________*/
  120. .navbar .sub-nav {
  121.   display: none;
  122. }
  123. .chk-nav:checked ~ .sub-nav {
  124.   display: block;
  125. }
  126. /*_________________________________________________________________
  127.  
  128.         $ESTILOS PARA DESKTOP MEDIAQUERYS
  129. ____________________________________________________________________**/
  130. @media all and (min-width: 48rem) {
  131.   a, label {
  132.  display: block;
  133.  padding: 1rem 1.25rem;
  134.  border-right: 1px solid rgba(255, 255, 255, 0.2);
  135.   }
  136. /*_________________________________________________________________
  137.  
  138.    $ESTILOS PARA NAVBAR  
  139. ____________________________________________________________________*/
  140.   .navbar {
  141.  max-width: 1200px;
  142.  width: 100%;
  143.  height: auto;
  144.  display: table;
  145.  table-layout: fixed;
  146.  margin: auto;
  147.   }
  148.   .navbar > li {
  149.  display: table-cell;
  150.   }
  151.   .chk-nav:checked ~ .navbar {
  152.  margin: auto;
  153.   }
  154. /*_________________________________________________________________
  155.  
  156.    $ESTILOS PARA ESCONDER EL ICONO DE HAMBURGUESA
  157. ____________________________________________________________________*/
  158.   label[for="btn-navbar"] {
  159.  display: none;
  160.   }
  161. /*_________________________________________________________________
  162.  
  163.     $ESTILOS PARA el SUBMENU  
  164. ____________________________________________________________________*/
  165.   .navbar .sub-nav {
  166.  display: none;
  167.   }
  168.   .navbar > ul > li {
  169.  postion: relative;
  170.   }
  171.   .chk-nav:checked ~ .sub-nav {
  172.  display: block;
  173.   }
  174. /**/
  175.   .navbar > li > a:hover, label:hover ~ .sub-nav {
  176.    display: block;
  177.   }
  178.  
  179. /**/
  180.   .navbar .sub-nav {
  181.  width: 100%;
  182.  background-color: #222;
  183.  position: absolute;
  184.   }
  185.   .sub-nav a {
  186.  font-size: 1rem;
  187.  border-top: 1px solid rgba(255, 255, 255, 0.2);
  188.   }
  189. /*_________________________________________________________________
  190.  
  191.       $ESTILOS PARA LOS ICONOS
  192. ____________________________________________________________________*/
  193.   .navbar .fa {
  194.  position: static;
  195.  padding-right: .3rem;
  196.   }
  197.   .lbl-nav:after {
  198.  top: 0;
  199.  height: 100%;
  200.  line-height: 3.5rem;
  201.   }
  202. /*_________________________________________________________________
  203.  
  204.       $ESTILOS PARA EL MENU PRINCIPAL
  205. ____________________________________________________________________*/
  206.   .navbar > li {
  207.  position: relative;
  208.  border-top: 4px solid #FFB503;
  209.   }
  210.   .navbar > li > a:hover, label:hover {
  211.  border-left: 4px solid rgba(0, 0, 0, 0);
  212.   }
  213. }
  214. /*_________________________________________________________________
  215.  
  216.   $ESTILOS PARA EL SECTION  ESTO NO TIENE NADA QUE VER CON EL MENU
  217. ____________________________________________________________________*/
  218. section {
  219.   width: 90%;
  220.   padding: 3.5rem;
  221.   margin: auto;
  222.   color: #E5E5E5;
  223.   text-align: center;
  224.   transition: all .4s ease;
  225. }
  226. section small {
  227.   display: block;
  228.   padding-bottom: 1rem;
  229.   font-size: 1rem;
  230. }
  231. section span {
  232.   color: red;
  233.   font-size: 1.5rem;
  234. }

mood
Publicité
Posté le 16-12-2021 à 14:18:44  profilanswer
 

n°2403987
mechkurt
Posté le 16-12-2021 à 14:34:17  profilanswer
 

Dans cette technique de menu déroulant, ils ont fait le choix du full css (sans javascript) avec l'usage d'un label, d'un input checkbox hidden et de la règle suivante :

Code :
  1. .chk-nav:checked ~ .sub-nav {
  2. display: block;
  3.   }


C'est de plus en plus fréquent puisque les navigateurs sont de plus en plus souvent en mode tactile et que dans ce cas le survol de souris n'a pas de sens.
 
Dans le cas de ce menu, pas de clic, pas de dépliage mais tu dois pouvoir faire un règle genre :

Code :
  1. ul.navbar > li:hover ul.sub-nav {
  2. display: block;
  3.   }


 
Par contre ça fonctionnera pas sur les (très) vieux navigateur, il fut un temps ou :hover ne fonctionnait que sur les balises a...


---------------
D3
n°2403990
theo92
Posté le 16-12-2021 à 15:08:40  profilanswer
 

Bonjour,
Merci pour ton conseil, le bout de code fonctionne !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Menu déroulant responsive

 

Sujets relatifs
responsive scroll pas quand je glisse l'image[PYTHON] revenir "menu principal"
Soucis avec un menu HTML et JS.besoin d'aide sur blogger et menu deroulant a plusieurs niveaux
Ombre portée sur menu déroulantMenu en MVVM C#
Menu css décentré à gaucherevenier au 1 er onglet des sous menu et sousmenu
Plus de sujets relatifs à : Menu déroulant responsive


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR