Eu tenho 3 níveis de div
:
- (Em verde abaixo) Um nível superior
div
comoverflow: hidden
. Isso ocorre porque eu quero que algum conteúdo (não mostrado aqui) dentro dessa caixa seja cortado se exceder o tamanho da caixa. - (Em vermelho abaixo) Dentro disso, eu tenho
div
composition: relative
. O único uso para isso é para o próximo nível. - (Em azul abaixo) Finalmente,
div
eu retiro o fluxo com oposition: absolute
qual quero posicionar em relação ao vermelhodiv
(não à página).
Gostaria que a caixa azul fosse retirada do fluxo e expandida além da caixa verde, mas posicionada em relação à caixa vermelha, como em:
No entanto, com o código abaixo, recebo:
E removendo a position: relative
caixa vermelha, agora a caixa azul pode sair da caixa verde, mas não está mais posicionada em relação à caixa vermelha:
Existe uma maneira de:
- Mantenha o
overflow: hidden
na caixa verde. - A caixa azul se expandiu além da caixa verde e foi posicionada em relação à caixa vermelha?
A fonte 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
fonte
fonte
position: fixed
irá ignorar ooverflow:hidden
de qualquer elemento que contenha.Respostas:
Um truque que funciona é posicionar a caixa # 2 em
position: absolute
vez deposition: relative
. Geralmente, colocamos umposition: relative
em uma caixa externa (caixa 2 aqui) quando queremos que uma caixa interna (caixa 3)position: absolute
seja posicionada em relação à caixa externa. Mas lembre-se: para que a caixa nº 3 seja posicionada em relação à caixa nº 2, a caixa nº 2 só precisa ser posicionada. Com essa alteração, obtemos:E aqui está o código completo com essa alteração:
fonte
position: static
e que funcionou melhor para mimposition: static
na caixa 2 em vez deposition: absolute
.absolute
que não recorta, masrelative
recorta?Não há solução mágica de exibir algo fora de um contêiner oculto.
Um efeito semelhante pode ser obtido com uma div posicionada absoluta que corresponda ao tamanho de seu pai, posicionando-a dentro de seu contêiner relativo atual (a div que você não deseja cortar deve estar fora dessa div):
Lembre-se de que, se você precisar apenas recortar o conteúdo no eixo x (que parece ser o seu caso, pois você definiu apenas a largura da div), poderá usá-lo
overflow-x: hidden
.fonte
Eu realmente não vejo uma maneira de fazer isso como está. Eu acho que você pode precisar remover o
overflow:hidden
da div # 1 e adicionar outra div dentro da div # 1 (ou seja, como um irmão da div # 2) para manter o seu 'conteúdo' não especificado e adicionar aoverflow:hidden
isso em seu lugar. Não acho que o estouro possa ser (ou deveria ser) substituído.fonte
Se outro conteúdo não estiver sendo mostrado dentro da div externa (a caixa verde), por que não colocar esse conteúdo dentro de outra div, vamos chamá-lo
"content"
. Tenha o overflow oculto nesta nova div interna, mas mantenha o overflow visível na caixa verde.O único problema é que você precisará mexer para garantir que a div de conteúdo não interfira no posicionamento da caixa vermelha, mas parece que você deve consertar isso com pouca dor de cabeça.
fonte