2011-03-06 11 views
33

He visto algunas preguntas como esta en mi búsqueda, pero o bien la pregunta no se respondió correctamente o no se dio ninguna respuesta. Entonces, preguntaré de nuevo.CSS overflow-y: visible, overflow-x: scroll

<style> 
.parent { overflow-y:scroll; overflow-x:visible; width:100px; } 
.child { position:relative; } 
.child-menu { position:absolute; top:0px; left:-100px; display:inline-block; } 
</style> 

    <div class="parent"> 
    <!-- Lots of the following divs --> 
    <div class="child"> 
    Text Line 
    <div class="child-menu">some pop out stuff</div> 
    </div> 
</div> 

Muy bien, eso es sólo un ejemplo. Pero básicamente, lo que intento lograr es que las clases .child se puedan desplazar en el eje y ... desplazarse hacia arriba y hacia abajo. Pero quiero que el eje x ... el menú del niño sea visible fuera del contenedor .parent.

¿Tiene sentido? Entonces, lo que está sucediendo es que cuando se renderiza la página, el navegador interpreta el desbordamiento como automático y no respeta el eje separado. ¿Estoy haciendo algo mal o los navegadores aún no están a la altura de las especificaciones de CSS3 en esto? Mayormente solo probado en Chrome. enter image description here

Respuesta

28

¡Lo descubrí!

El padre debe estar desbordado: automático; El .child debe ser position: relative; El menú .child debe estar en la posición: fijo; con NO posición superior o izquierda. Si hace esto, lo mantendrá en línea con el contenido.

Si necesita mover el menú secundario, use márgenes y no arriba o izquierda. Ejemplo margin-left: -100px;

+0

No le conviene este no funciona cuando se desplaza? Me parece que el desplazamiento desplazará .child, pero no .child-menu. Si ese es el caso, entonces esto no parece una solución razonable. – dchapman

+1

Sabes, no puedo recordar. Me imagino que estás en lo correcto. Las veces que he usado esto han sido para aplicaciones de una sola página donde eso no era un problema. ¿Razonable? No hay otra respuesta, por lo que para aquellos que NECESITAN esta funcionalidad, sí, es muy razonable. Siempre puedes mover el div mientras te desplazas. –

+10

Solo para ahorrarle a alguien el tiempo si ve esta respuesta en el futuro, esto * no * hace que la ventana emergente se desplace mientras la barra lateral se desplaza. Entonces, si usa algo como esto, deberá usar JS para seguir el desplazamiento. – Andrew