tricks remove float divs div css overflow css-float center hidden

css - remove - Hacer al niño visible fuera de un desbordamiento: padre oculto



position css (4)

Esta es una vieja pregunta pero la encontré yo mismo.

Tengo semi-soluciones que funcionan según la situación anterior ("Niños visibles en desbordamiento: padre oculto")

Si el div principal no necesita ser position: relative, simplemente configure los estilos secundarios a visibilidad: visible.

Si el div padre tiene que ser posición: relativo, la única forma posible que encontré para mostrar a los hijos era posición: fija. Afortunadamente, esto me funcionó en mi situación, pero me imagino que no funcionaría en otros.

Aquí hay un ejemplo de mierda, simplemente publícalo en un archivo html para verlo.

<div style="background: #ff00ff; overflow: hidden; width: 500px; height: 500px; position: relative;"> <div style="background: #ff0000;position: fixed; top: 10px; left: 10px;">asd <div style="background: #00ffff; width: 200px; overflow: visible; position: absolute; visibility: visible; clear:both; height: 1000px; top: 100px; left: 10px;"> a</div> </div> </div>

En CSS, el overflow:hidden se establece en los contenedores principales para permitir que se expanda con la altura de sus hijos flotantes.

Pero también tiene otra característica interesante cuando se combina con margin: auto ...

Si el hermano PREVIO es un elemento flotante, en realidad aparecerá yuxtaponerse a él. Es decir, si el hermano está float:left continuación, el contenedor con float:none overflow:hidden aparecerá a la derecha del hermano, sin nueva línea, como si estuviera flotando en el flujo normal. Si el hermano anterior es float:right entonces el contenedor aparecerá a la izquierda del hermano. Cambiar el tamaño de este contenedor lo mostrará centrado con precisión entre los elementos flotantes. Diga que si tiene dos hermanos anteriores, un float:left el otro float:right , el contenedor aparecerá centrado entre los dos.

Así que aquí está el problema ...

¿Cómo mantengo ese tipo de diseño SIN enmascarar a los niños?

Googlear en toda la web me da maneras de clear:both y expandir un contenedor ... pero no puedo encontrar ninguna solución alternativa para mantener el centrado del niño anterior izquierdo / derecho. Si hace que el contenedor se overflow:visible entonces el contenedor de repente ignora el flujo de diseño de los elementos flotantes y aparece en capas sobre el elemento flotante.

Entonces pregunta :

Tengo que tener el overflow:hidden del contenedor overflow:hidden para preservar el diseño ...

¿Cómo puedo hacer que los niños no estén enmascarados? Necesito que el niño esté absolutamente posicionado en relación con el padre fuera del contenedor.

O

¿Cómo me overflow:visible para que pueda posicionar absolutamente a un niño en relación con el padre fuera del contenedor ... ¿AÚN MANTENGO el flujo de diseño similar a flotar de hermanos?


Ninguna de las respuestas publicadas funcionó para mí. position: absolute ajuste position: absolute para el elemento hijo funcionó sin embargo.


Para otros, si clearfix no resuelve esto para usted, agregue márgenes al hermano no flotante que es / es el mismo (s) ancho (s) de los hermanos flotantes (s).


Puede usar el clearfix para "preservar el diseño" de la misma manera que lo hace el overflow: hidden .

.clearfix:before, .clearfix:after { content: "."; display: block; height: 0; overflow: hidden; } .clearfix:after { clear: both; } .clearfix { zoom: 1; } /* IE < 8 */

agregue la class="clearfix" al padre y elimine el overflow: hidden;