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-rightel.dropdowncontenedor.Respuestas:
La forma más sencilla sería agregar la
pull-leftclase a sudropdown-submenujsfiddle: 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-rightclase para lograrlo.La clase actual
.dropdown-submenu > .dropdown-menutieneleft: 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-righten el.dropdown-menuelemento.Enlace al código: https://getbootstrap.com/docs/4.0/components/dropdowns/#menu-items
fuente
dropleftydroprightpero 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-rightalulelementofuente
En realidad, si está de acuerdo con hacer flotar el
dropdowncontenedor, me pareció tan fácil como agregarlonavbar-rightal 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-leftdirectamente 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-menucon una identificación de,dropdown-menu-xpor 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-rightclase. 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