Estaba intentando crear el submenú de arranque de Twitter en el menú desplegable, pero tengo un problema: tengo un menú desplegable en la esquina superior derecha de la página y ese menú tiene un submenú más. Sin embargo, cuando se abre el submenú, no cabe en la ventana y se desplaza demasiado hacia la derecha, por lo que el usuario solo puede ver las primeras letras. ¿Cómo hacer que ese submenú no se abra a la derecha, sino a la izquierda?
javascript
jquery
css
twitter-bootstrap
kovpack
fuente
fuente
.pull-right
el.dropdown
contenedor.Respuestas:
La forma más sencilla sería agregar la
pull-left
clase a sudropdown-submenu
jsfiddle: DEMO
fuente
.dropdown-submenu.pull-left>.dropdown-menu { width: 100%; }
No es una solución elegante, pero parece funcionar jsfiddle.net/r1v90tasSi lo he entendido bien, bootstrap proporciona una clase CSS solo para este caso. Agregue 'pull-right' al menú 'ul':
..y el resultado final es que las opciones del menú aparecen alineadas a la derecha, en línea con el botón desde el que se despliegan.
fuente
pull-right
clase para lograrlo.La clase actual
.dropdown-submenu > .dropdown-menu
tieneleft: 100%;
. Por lo tanto, si desea abrir el submenú en el lado izquierdo, anule esos ajustes a la posición izquierda negativa. Por ejemploleft: -95%;
. Ahora obtendrá el submenú en el lado izquierdo y podrá modificar otras configuraciones para obtener una vista previa perfecta.Aquí está la DEMO
EDITAR: La pregunta de OP y mi respuesta son de agosto de 2012. Mientras tanto, Bootstrap cambió, por lo que ahora tiene la clase .pull-left. En ese entonces, mi respuesta fue correcta. Ahora no tiene que configurar manualmente css, tiene esa clase .pull-left.
EDICIÓN 2: Las demostraciones no funcionan porque Bootstrap cambió sus URL. Simplemente cambie los recursos externos en jsfiddle y reemplácelos por otros nuevos.
fuente
left: -90%;
haberlo (de lo contrario, no puedo mover el mouse a ese submenú porque desaparece).Si está utilizando bootstrap v4, hay una nueva forma de hacerlo.
Deberías usar
.dropdown-menu-right
en el.dropdown-menu
elemento.Enlace al código: https://getbootstrap.com/docs/4.0/components/dropdowns/#menu-items
fuente
dropleft
ydropright
pero el contexto de la respuesta es correcta. ¡Gracias!La forma correcta de realizar la tarea es:
fuente
.dropdown-submenu { position: relative; text-align:right; }
Para colocar el texto a la derecha cuando la flecha está a la izquierda.He creado una función de javascript que busca si tiene suficiente espacio en el lado derecho. Si lo tiene, lo mostrará en el lado derecho, de lo contrario lo mostrará en el lado izquierdo
Probado en:
Javascript:
porque no quiero agregar esta corrección en todos los elementos del menú, creé una nueva clase en él. coloque el menú fijo en el ul:
Espero que esto funcione para usted.
PD. pequeño error en safari y chrome, primero al pasar el mouse lo colocará para mutch a la izquierda actualizará esta publicación si lo soluciono.
fuente
Si solo tiene un nivel y usa bootstrap 3, agregue
pull-right
alul
elementofuente
En realidad, si está de acuerdo con hacer flotar el
dropdown
contenedor, me pareció tan fácil como agregarlonavbar-right
al archivodropdown
.Esto parece una trampa, ya que no está en una barra de navegación, pero funciona bien para mí.
A continuación, puede personalizar aún más el flotante con un
pull-left
directamente en eldropdown
...... o como envoltorio a su alrededor ...
fuente
Si está usando MENOS CSS, escribí un pequeño mixin para mover el menú desplegable con la flecha de conexión:
Luego, para mover a
.dropdown-menu
con una identificación de,dropdown-menu-x
por ejemplo, puede hacer:fuente
He creado una función de javascript que busca si tiene suficiente espacio en el lado derecho. Si es así, lo mostrará en el lado derecho, de lo contrario, lo mostrará en el lado izquierdo. Nuevamente, si tiene suficiente espacio en el lado derecho, se mostrará el lado derecho. es un bucle ...
});
fuente
¿Está utilizando la última versión de bootstrap? He adaptado el html del ejemplo de diseño fluido como se muestra a continuación. Agregué un menú desplegable y lo coloqué más a la derecha agregando la
pull-right
clase. Al pasar el cursor sobre el menú desplegable, se desplaza automáticamente hacia la izquierda y no se oculta nada: todo el texto del menú es visible. No he utilizado ningún CSS personalizado.fuente
Lo único que tienes que hacer es
del menú que desea mostrar en el lado DERECHO.
fuente