Tengo 3 niveles de div
:
- (En verde debajo) Un nivel superior
div
conoverflow: hidden
. Esto se debe a que quiero recortar algo de contenido (no mostrado aquí) dentro de ese cuadro si excede el tamaño del cuadro. - (En rojo abajo) Dentro de esto, tengo
div
conposition: relative
. El único uso para esto es para el siguiente nivel. - (En azul a continuación) Finalmente
div
, saco del flujoposition: absolute
pero quiero posicionarlo en relación con el rojodiv
(no con la página).
Me gustaría que el cuadro azul se elimine del flujo y se expanda más allá del cuadro verde, pero se coloque en relación con el cuadro rojo como en:
Sin embargo, con el siguiente código, obtengo:
Y quitando el position: relative
cuadro rojo, ahora se permite que el cuadro azul salga del cuadro verde, pero ya no está posicionado en relación con el cuadro rojo:
¿Hay alguna manera de:
- Mantenga el
overflow: hidden
en el cuadro verde. - ¿El cuadro azul se expande más allá del cuadro verde y se posiciona en relación con el cuadro rojo?
La fuente completa:
#d1 {
overflow: hidden;
background: #efe;
padding: 5px;
width: 125px;
}
#d2 {
position: relative;
background: #fee;
padding: 2px;
width: 100px;
height: 100px;
}
#d3 {
position: absolute;
top: 10px;
background: #eef;
padding: 2px;
width: 75px;
height: 150px;
}
<br/><br/><br/>
<div id="d1" >
<div id="d2" >
<div id="d3"></div>
</div>
</div>
css
overflow
css-position
avernet
fuente
fuente
position: fixed
ignoraráoverflow:hidden
cualquier elemento que lo contenga.Respuestas:
Un truco que funciona es colocar la casilla # 2 en
position: absolute
lugar deposition: relative
. Por lo general, colocamos unposition: relative
en una caja externa (aquí cuadro # 2) cuando queremos que se coloque una caja interna (aquí cuadro # 3)position: absolute
en relación con la caja externa. Pero recuerde: para que la casilla n. ° 3 se posicione en relación con la casilla n. ° 2, la casilla n. ° 2 solo debe colocarse. Con este cambio, obtenemos:Y aquí está el código completo con este cambio:
fuente
position: static
y eso funcionó mejor para míposition: static
en la casilla # 2 en lugar deposition: absolute
.absolute
no se corta pero serelative
corta?No hay una solución mágica para mostrar algo fuera de un contenedor oculto de desbordamiento.
Se puede lograr un efecto similar al tener un div de posición absoluta que coincida con el tamaño de su padre al colocarlo dentro de su contenedor relativo actual (el div que no desea recortar debe estar fuera de este div):
Tenga en cuenta que si solo tiene que recortar el contenido en el eje x (que parece ser su caso, ya que solo ha establecido el ancho del div), puede usarlo
overflow-x: hidden
.fuente
Realmente no veo una manera de hacer esto tal como está. Creo que es posible que deba eliminar el
overflow:hidden
div # 1 y agregar otro div dentro del div # 1 (es decir, como un hermano del div # 2) para mantener su 'contenido' no especificado y agregarlooverflow:hidden
a eso. No creo que el desbordamiento pueda ser (o debería ser posible) anulado.fuente
Si no se muestra otro contenido dentro del div-exterior (el cuadro verde), ¿por qué no tener ese contenido envuelto dentro de otro div, llamémoslo
"content"
? Tenga el desbordamiento oculto en este nuevo div interno, pero mantenga el desbordamiento visible en el cuadro verde.El único inconveniente es que tendrá que perder el tiempo para asegurarse de que el contenido div no interfiera con la posición del cuadro rojo, pero parece que debería poder solucionarlo con un poco de dolor de cabeza.
fuente