Tengo una lista que se muestra después de hacer clic en el menú. Sin embargo, desaparece inmediatamente a menos que mantenga presionado su clic. ¿Cómo puedo hacer que se quede después de hacer clic? ¿Tengo que usar javascript?

Si hago que el menú del elemento: se desplace, aparece cuando se pasa el mouse y permanece, pero quiero poder hacer clic en el menú y el submenú sigue apareciendo después de hacer clic.

@charset "UTF-8";
/* CSS Document */

body{
	height:1000px;
	width:100%;
	background:#FCF;
}
#first-div{
	width:auto;
	height:auto;
	background:#9CF;
}
#first-div img:hover{
	opacity:0.3;
}

#clear{
	clear:both;
	display:block;
	margin: 50px 0 50px 0;
}

#menu{
	width:auto;
	height:auto;
	background:#0C9;
	display:inline-block;
}

ul.nav-menu{
	display:inline;
	width:auto;
	height:auto;
	display:none;
}

#menu:active ul.nav-menu{
	display:inline;
}
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="ns-3.css"/>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>

<body>

<div id="first-div">
<img src="http://www.todayifoundout.com/wp-content/uploads/2014/06/african-elephant-bull.jpg" width="300" height="300"  alt=""/>
</div>

<div id="clear"></div>

<nav id="menu">
Menu
<ul class="nav-menu">
<li>text 1</li>
<li>text 2</li>
<li>text 3</li>
</ul>
</nav>

</body>
</html>
0
user3760941 5 mar. 2017 a las 17:00

2 respuestas

La mejor respuesta

Use un :focus y tabindex para el menú.

@charset "UTF-8";

/* CSS Document */

body {
  height: 1000px;
  width: 100%;
  background: #FCF;
}

#first-div {
  width: auto;
  height: auto;
  background: #9CF;
}

#first-div img:hover {
  opacity: 0.3;
}

#clear {
  clear: both;
  display: block;
  margin: 50px 0 50px 0;
}

#menu {
  width: auto;
  height: auto;
  background: #0C9;
  display: inline-block;
}

ul.nav-menu {
  display: inline;
  width: auto;
  height: auto;
  display: none;
}

#menu:focus ul.nav-menu {
  display: inline;
}
<div id="first-div">
  <img src="http://www.todayifoundout.com/wp-content/uploads/2014/06/african-elephant-bull.jpg" width="300" height="300" alt="" />
</div>
<div id="clear"></div>
<nav id="menu" tabindex="1">
  Menu
  <ul class="nav-menu">
    <li>text 1</li>
    <li>text 2</li>
    <li>text 3</li>
  </ul>
</nav>
1
Andrey Fedorov 5 mar. 2017 a las 14:37

Puedes hacer esto con un poco de jquery. Agregue esta clase activa a su CSS. Elimine el #menu: active ul.nav-menu selector. (P.s. Estoy escribiendo en un teléfono)

.active {
   display:inline;
 }

Y luego agregue esto a una etiqueta o archivo de script:

$('#menu').click(function(){
    $('.nav-menu').toggleClass('active');
 });
1
Harry 5 mar. 2017 a las 14:19