Estoy tratando de crear una barra lateral que está oculta de manera predeterminada, pero que aparece al pasar el mouse sobre ella. El ejemplo más cercano que puedo pensar es este: http://www.sidlee.com/. Cuando se encuentra en una de las páginas que están más allá de la página de inicio, la barra lateral solo muestra los números. Una vez que mueva el mouse sobre esta área, la barra lateral se expande para mostrar el texto. Supongo que hay una manera de hacer esto con JavaScript, pero no soy un experto, así que pensé que alguien podría ayudarme.Barra lateral oculta que aparece en el control deslizante
Respuesta
Eso es sólo un ejemplo sencillo pero espero que le pondrá en el camino correcto :)
CSS:
#nav{width:200px;height:100%;position:absolute;top:0;left:0;z-index:100;background:#111;color:#fff;overflow:hidden;}
#nav ul{margin:0;padding:0;width:200px;margin:10px;list-style:none;}
#nav a span{margin:0 10px 0 0;}
#nav a{color:#fff;font-size:14px;text-decoration:none;}
jQuery:
$(function(){
$('#nav').hover(function(){
$(this).animate({width:'200px'},500);
},function(){
$(this).animate({width:'35px'},500);
}).trigger('mouseleave');
});
HTML:
<div id="nav">
<ul>
<li><a href=""><span>01</span> HomePage</a></li>
<li><a href=""><span>02</span> SubPage 1</a></li>
<li><a href=""><span>03</span> SubPage 2</a></li>
<li><a href=""><span>04</span> SubPage 3</a></li>
<li><a href=""><span>05</span> SubPage 4</a></li>
</ul>
</div>
Si quieren mostrar sólo los números en el arranque (sin el proceso de carga la animación de cierre) cambiar el #nav{width:35px;}
y retirar los .trigger('mouseleave')
Saludos
G.
¡Esto es exactamente lo que quería! ¡Muchas gracias! – Edvard
Además, ¿hay alguna manera de hacer dos barras laterales? El problema que tengo es que si pongo una segunda barra lateral, debo especificar qué tan lejos de la izquierda tiene que estar, y como tal no se puede 'pegar' (por falta de una palabra mejor) a la primera barra lateral. – Edvard
¿hay alguna manera de hacerlo sin jquery? Estoy planeando usar esto en una tarea que tengo, en la cual solo podemos usar JavaScript sencillo. tnx :) –
Puede utilizar el método de jQuery .hover()
conjuntamente con .animate()
tener una diapositiva div
a cabo cuando se produce un evento .mouseenter()
.
Muchas gracias por tomarse el tiempo para responder mi pregunta. Lo agradezco mucho – Edvard
Simplemente comienza a tapar lejos en el jQuery API. Así es como comenzarías la estructura de eso. El uso de .animate() le dará la capacidad de ajustar las propiedades de su menú CSS como mejor le parezca.
$("#yourmenu").hover(function() {
$(this).stop(true,true);
$(this).show();
}, function() {
$(this).hide();
});
Muchas gracias por tomarse el tiempo para responder mi pregunta. Lo agradezco mucho – Edvard
Edvard,
yo sugeriría hacer esto de la siguiente manera. Es de esperar que con algunas ideas y algunos enlaces a los elementos jQuery correctos, usted pueda hacer esto.
El primer paso sería tener un div que sea 100% transparente y un div dentro del que contenga el menú. Luego, desde el menú div ocultaría ese elemento, luego, cuando mueva el mouse sobre el contenedor de buceo, podría usar un método .hover() para animar el deslizamiento desde el div interno.
Aquí hay un código básico que debe comenzar.
<div id="menuContainer">
<div id="menu">
<ul>
<li>This</li>
<li>Is</li>
<li>A</li>
<li>Menu</li>
</ul>
</div>
</div>
A continuación, un poco de CSS:
/* Set the container to be fixed to the top of the screen and set it's height
This is important so we know where the mouse can hover */
div#menuContainer {
background: transparent;
position: fixed;
top: 0;
left: 0;
height: 50px;
}
/* Set the menu as hidden */
div#menu {
background: red;
width: 900px;
height:
margin: 0 auto;
display: none;
}
/* Fiddle with the menu items */
div#menu ul { list-style-type: none; }
div#menu ul li { display: inline; }
Entonces algunos jQuery:
$('#menuContainer').mouseenter(function(){
$('#menu').slideToggle();
}).mouseleave(function() {
$('#menu').slideToggle();
});
Esto es obviamente código no probado, pero debe darle una gran ventaja inicial! :-)
Muchas gracias por tomarse el tiempo para responder mi pregunta. Lo agradezco mucho – Edvard
encontrado una manera de cómo realmente hacer esto sin javascript o jQuery. Esta respuesta podría ser muy eficiente para aquellos que están trabajando en asignaciones de Uni/College y no pueden usar bibliotecas de terceros como JQuery.
Obviamente habiendo dicho eso, usar JQuery dará el mismo resultado en menos código.
Aquí van:
.fa {
position: relative;
display: table-cell;
width: 60px;
height: 36px;
text-align: center;
vertical-align: middle;
font-size: 20px;
}
.main-menu:hover,
nav.main-menu.expanded {
width: 250px;
overflow: visible;
}
.main-menu {
background: #fbfbfb;
border-right: 1px solid #e5e5e5;
position: absolute;
top: 0;
bottom: 0;
height: 100%;
left: 0;
width: 60px;
overflow: hidden;
-webkit-transition: width .05s linear;
transition: width .05s linear;
-webkit-transform: translateZ(0) scale(1, 1);
z-index: 1000;
}
.main-menu>ul {
margin: 7px 0;
}
.main-menu li {
position: relative;
display: block;
width: 250px;
}
.main-menu li>a {
position: relative;
display: table;
border-collapse: collapse;
border-spacing: 0;
color: #999;
font-family: arial;
font-size: 14px;
text-decoration: none;
-webkit-transform: translateZ(0) scale(1, 1);
-webkit-transition: all .1s linear;
transition: all .1s linear;
}
.main-menu .nav-icon {
position: relative;
display: table-cell;
width: 60px;
height: 36px;
text-align: center;
vertical-align: middle;
font-size: 18px;
}
.main-menu .nav-text {
position: relative;
display: table-cell;
vertical-align: middle;
width: 190px;
font-family: 'Titillium Web', sans-serif;
}
.main-menu>ul.logout {
position: absolute;
left: 0;
bottom: 0;
}
.no-touch .scrollable.hover {
overflow-y: hidden;
}
.no-touch .scrollable.hover:hover {
overflow-y: auto;
overflow: visible;
}
a:hover,
a:focus {
text-decoration: none;
}
nav {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
nav ul,
nav li {
outline: 0;
margin: 0;
padding: 0;
}
.main-menu li:hover>a,
nav.main-menu li.active>a,
.dropdown-menu>li>a:hover,
.dropdown-menu>li>a:focus,
.dropdown-menu>.active>a,
.dropdown-menu>.active>a:hover,
.dropdown-menu>.active>a:focus,
.no-touch .dashboard-page nav.dashboard-menu ul li:hover a,
.dashboard-page nav.dashboard-menu ul li.active a {
color: #fff;
background-color: #5fa2db;
}
.area {
float: left;
background: #e2e2e2;
width: 100%;
height: 100%;
}
@font-face {
font-family: 'Titillium Web';
font-style: normal;
font-weight: 300;
src: local('Titillium WebLight'), local('TitilliumWeb-Light'), url(http://themes.googleusercontent.com/static/fonts/titilliumweb/v2/anMUvcNT0H1YN4FII8wpr24bNCNEoFTpS2BTjF6FB5E.woff) format('woff');
}
<html>
<head>
</head>
<body>
<div class="area"></div>
<nav class="main-menu">
<ul>
<li>
<a href="#">
<i class="fa fa-home fa-2x"></i>
<span class="nav-text">
Dashboard
</span>
</a>
</li>
<li class="has-subnav">
<a href="#">
<i class="fa fa-laptop fa-2x"></i>
<span class="nav-text">
UI Components
</span>
</a>
</li>
<li class="has-subnav">
<a href="#">
<i class="fa fa-list fa-2x"></i>
<span class="nav-text">
Forms
</span>
</a>
</li>
<li class="has-subnav">
<a href="#">
<i class="fa fa-folder-open fa-2x"></i>
<span class="nav-text">
Pages
</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-bar-chart-o fa-2x"></i>
<span class="nav-text">
Graphs and Statistics
</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-font fa-2x"></i>
<span class="nav-text">
Typography and Icons
</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-table fa-2x"></i>
<span class="nav-text">
Tables
</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-map-marker fa-2x"></i>
<span class="nav-text">
Maps
</span>
</a>
</li>
<li>
<a href="#">
<i class="fa fa-info fa-2x"></i>
<span class="nav-text">
Documentation
</span>
</a>
</li>
</ul>
<ul class="logout">
<li>
<a href="#">
<i class="fa fa-power-off fa-2x"></i>
<span class="nav-text">
Logout
</span>
</a>
</li>
</ul>
</nav>
</body>
</html>
Espero que esto ayude :)
Este es realmente genial, pero no puedo hacer que este menú aparezca a la derecha. ¿Qué debo cambiar para que aparezca este menú/Nav a la derecha? –
Todo lo que necesita hacer es establecer 'right: 0;' en lugar de 'left: 0;' en el archivo css. Esto debe hacerse bajo la clase '.main-menu'. –
¡Guau, gracias! ¡No podría resolver esto! –
- 1. deslizante jQuery UI que no aparece
- 2. control deslizante jquery con valor superior que se desplaza con el control deslizante
- 3. jQuery UI control deslizante - Deshabilitar haga clic en la barra deslizante
- 4. cajón deslizante aparece en todas las actividades
- 5. Buttondownfcn no funciona en el control deslizante
- 6. Control deslizante logarítmico en Mathematica
- 7. Control deslizante Twin .net
- 8. Control deslizante en mi PreferenceScreen
- 9. Personalizar un control deslizante
- 10. Quitar resaltado en el control deslizante de jQuery
- 11. Cómo evitar que el control deslizante jQuery UI se superponga?
- 12. Resalte el elemento de menú actual en la barra lateral
- 13. jQuery - Usar .one() con el control deslizante
- 14. Usando delegate() con el control deslizante()?
- 15. Control deslizante para el volumen - JQuery/Javascript
- 16. ¿C WinForms tiene un control deslizante?
- 17. Agregar elemento al Finder Barra lateral
- 18. CSS: barra lateral con posición fija cortada
- 19. Disposición de barra lateral dinámica con rieles
- 20. IPHONE: ABPeoplePickerNavigationController barra de navegación oculta
- 21. ¿Utiliza widgets fuera de la barra lateral?
- 22. Barra lateral dinámica de Wordpress sin título
- 23. Control deslizante con intervalos múltiples
- 24. Rango del control deslizante jQuery
- 25. ¿Cómo hacer un control deslizante img deslizante sin fin?
- 26. CSS/jQuery texto lateral de desplazamiento lateral en vuelo estacionario
- 27. jQuery UI Control deslizante con botones de control?
- 28. Rendering la barra lateral utilizando el Marco de Juego
- 29. Crear barra lateral con pestañas con las secciones WPF
- 30. barra de pestañas deslizante como en el mercado de Android
quiero trabajar en Sid Lee. Wowza! – TALLBOY