No CSS, o overflow:hidden
é definido em contêineres pai para permitir que ele se expanda com a altura de seus filhos flutuantes.
Mas também tem outro recurso interessante quando combinado com margin: auto
...
Se o irmão ANTERIOR for um elemento flutuante, ele aparecerá justaposto a ele. Ou seja, se o irmão for float:left
, o contêiner com float:none overflow:hidden
aparecerá à direita do irmão, sem nova linha - como se estivesse flutuando no fluxo normal. Se o irmão anterior for float:right
, o contêiner aparecerá à esquerda do irmão. O redimensionamento deste contêiner irá mostrá-lo com precisão centralizado entre os elementos flutuantes. Digamos que se você tiver dois irmãos anteriores, um float:left
ao outro float:right
, o contêiner aparecerá centralizado entre os dois.
Então aqui está o problema ...
Como faço para manter esse tipo de layout SEM mascarar os filhos?
Pesquisar em toda a web me dá maneiras de como clear:both
expandir um contêiner ... mas não consigo encontrar nenhuma solução alternativa para manter a centralização esquerda / direita anterior. Se você criar o contêiner, overflow:visible
ele de repente ignora o fluxo de layout dos elementos flutuantes e aparece em camadas sobre o elemento flutuante.
Então, pergunte :
Tenho que ter o container overflow:hidden
para preservar o layout ...
como posso fazer com que as crianças não fiquem mascaradas? Preciso que o filho seja absolutamente posicionado em relação ao pai fora do contêiner.
OU
Como faço overflow:visible
para que possa posicionar absolutamente um filho em relação ao pai fora do contêiner ... AINDA, preservo o fluxo de layout semelhante ao do float irmão?
overflow:hidden
. Aplicar um clearfix ao div pai não permite que todos os componentes filhos fiquem "contidos" na mesma altura do pai.Nenhuma das respostas postadas funcionou para mim. A configuração
position: absolute
para o elemento filho funcionou, no entanto.fonte
position: fixed
ou absolutamente posicionado em relação a algo fora do pai que o possuivisibility: hidden
, será visível. No entanto, você geralmente precisa (deseja) posicioná-lo em relação ao pai para ser mais robusto às mudanças de código. Então, essas soluções não são uma alternativa.Esta é uma questão antiga, mas eu mesma a encontrei.
Tenho semi-soluções que funcionam situacionais para a pergunta anterior ("Crianças visíveis no estouro: pai oculto")
Se o div pai não precisa ser position: relative, basta definir os estilos filhos para visibilidade: visible.
Se o div pai precisa ser position: relative, a única maneira possível que encontrei de mostrar os filhos é position: fixed. Felizmente, isso funcionou para mim na minha situação, mas imagino que não funcionaria nos outros.
Aqui está um exemplo de baixa qualidade, basta postar em um arquivo html para ver.
fonte
left
. Usar, emmargin-left
vez disso, teria o mesmo efeito, então não precisei mais usar a posição relativa.Para outros, se o clearfix não resolver isso para você, adicione margens ao irmão não flutuante que é / são iguais à (s) largura (s) do (s) irmão (s) flutuante (s).
fonte