Flutuei imagens e caixas de inserção na parte superior de um contêiner usando float: direita (ou esquerda) várias vezes. Recentemente, atendi à necessidade de flutuar uma div no canto inferior direito de outra div com a quebra de texto normal que você obtém com a flutuação (texto quebrado acima e somente à esquerda).
Eu pensei que isso deveria ser relativamente fácil, mesmo que o float não tenha valor inferior, mas não fui capaz de fazê-lo usando várias técnicas e pesquisar na Web não apresentou nada além de usar posicionamento absoluto, mas isso não acontece forneça o comportamento de quebra de linha correto.
Eu pensei que este seria um design muito comum, mas aparentemente não é. Se ninguém tiver uma sugestão, terei que dividir meu texto em caixas separadas e alinhar a div manualmente, mas isso é bastante precário e eu odiaria fazê-lo em todas as páginas que precisarem.
EDIT: Apenas uma nota para quem vem aqui. A questão vinculada acima como duplicada não é de fato uma duplicata. A exigência de que o texto envolva o elemento inserido o torna completamente diferente. De fato, a resposta à resposta mais votada aqui deixa claro por que a resposta na pergunta vinculada está errada como resposta a essa pergunta. De qualquer forma, ainda não parece haver uma solução geral para esse problema, mas algumas das soluções postadas aqui e na pergunta vinculada podem funcionar em casos específicos.
Respostas:
Defina a div principal como
position: relative
, então a div interna como ...... e lá vai você :)
fonte
Uma maneira de fazê-lo funcionar é o seguinte:
Gire a div principal 180 graus usando
JSfiddle: http://jsfiddle.net/wcneY/
Agora gire todos os elementos que flutuam para a esquerda (dê uma aula) 180 graus para colocá-los retos novamente. Voila! eles flutuam para o fundo.
fonte
Depois de lutar com várias técnicas por alguns dias, devo dizer que isso parece impossível. Mesmo usando javascript (o que eu não quero fazer) não parece possível.
Para esclarecer para aqueles que podem não ter entendido - é isso que estou procurando: na publicação, é bastante comum fazer o layout de uma inserção (figura, tabela, figura etc.), de modo que seus pontos finais fiquem alinhados com os últimos linha de texto de um bloco (ou página) com o texto fluindo ao redor da inserção de maneira natural acima e para a direita ou esquerda, dependendo do lado da página em que está inserida. Em html / css, é trivial usar o estilo float para alinhar a parte superior de uma inserção com a parte superior de um bloco, mas, para minha surpresa, parece impossível alinhar a parte inferior do texto e inserir, apesar de ser uma tarefa de layout comum .
Acho que terei que revisar as metas de design desse item, a menos que alguém tenha uma sugestão de última hora.
fonte
Eu consegui isso no JQuery colocando um elemento de suporte de largura zero acima do flutuador à direita e dimensionando o suporte (ou tubo) de acordo com a altura dos pais menos a altura da criança flutuada.
Antes de o js começar, estou usando a abordagem de posição absoluta, que funciona, mas permite que o texto flua para trás. Portanto, mudo para a posição estática para permitir a abordagem do suporte. (cabeçalho é o elemento pai, recorte é o que eu quero no canto inferior direito e pipe é meu suporte)
CSS
O canal deve vir primeiro, depois o recorte e o texto na ordem HTML.
fonte
Isso coloca uma div fixa na parte inferior da página e fixa na parte inferior à medida que você rola para baixo
fonte
Coloque a div em outra div e defina o estilo da div pai como
position:relative;
Then no div filho, defina as seguintes propriedades CSS:position:absolute; bottom:0;
fonte
Se você estiver bem com apenas a linha inferior do texto indo para o lado do bloco (em vez de ficar completamente ao redor e embaixo dele, o que você não pode fazer sem terminar o bloco e iniciar um novo), é não é impossível flutuar um bloco para um dos cantos inferiores de um bloco pai. Se você colocar algum conteúdo em uma tag de parágrafo dentro de um bloco e quiser flutuar um link no canto inferior direito do bloco, coloque o link dentro do bloco de parágrafo e defina-o como float: right, em seguida, coloque uma tag div com clear : ambos definidos logo abaixo do final da tag de parágrafo. A última div é garantir que a tag pai rodeie as tags flutuantes.
fonte
Se você definir o elemento pai como posição: relativa, poderá definir o filho para a posição de configuração inferior: absoluta; e inferior: 0;
fonte
Se você deseja que o texto seja organizado de forma adequada: -
fonte
Eu sei que esse material é antigo, mas recentemente me deparei com esse problema.
use conselhos de divs de posição absoluta é realmente bobo, porque a coisa flutuante inteira perde ponto com posições absolutas.
agora, não encontrei uma solução universal, mas em muitos casos o prople usa divs flutuantes apenas para exibir algo em sequência, como uma série de elementos de amplitude. e você não pode alinhar verticalmente isso.
para obter um efeito semelhante, você pode fazer o seguinte: não faça a div flutuar, mas defina sua propriedade display como
inline-block
. então você pode alinhá-lo verticalmente, como quiser. você só precisa propriedade div conjunto dos paisvertical-align
, quertop
,bottom
,middle
oubaseline
espero que ajude alguém
fonte
Com a introdução do Flexbox , isso se tornou bastante fácil sem muitos hackers.
align-self: flex-end
no elemento filho o alinhará ao longo do eixo transversal .Resultado:
Mostrar snippet de código
fonte
Eu já encontrava essa solução há muito tempo. Isto é o que eu recebo:
alinhar-se: flex-end;
link: https://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/ No entanto, não me lembro de onde abri este link. Espero que ajude
fonte
Eu apenas faria uma mesa.
E o CSS:
Veja em ação:
http://jsfiddle.net/mLphM/1/
fonte
Eu tentei várias dessas técnicas, e o seguinte funcionou para mim; portanto, se tudo mais aqui, se tudo mais falhar, tente isso porque funcionou para mim :).
fonte
A escolheu esta abordagem do @ dave-kok. Mas funciona apenas se todo o conteúdo for adequado sem rolagem. Eu aprecio se alguém vai melhorar
Aqui está o código http://jsfiddle.net/d9t9joh2/
fonte
Agora isso é possível com a caixa flexível. Basta definir a 'exibição' da div pai como 'flex' e definir a propriedade 'margin-top' como 'auto'. Isso não distorce nenhuma propriedade da div.
fonte
Não tenho certeza, mas um cenário postado anteriormente parecia funcionar se você usasse a posição: relativa em vez de absoluta na div filho.
E sem mesas ...!
fonte
Se você precisar de um alinhamento relativo e as DIVs ainda não fornecerem o que você deseja, basta usar tabelas e definir valign = "bottom" na célula em que você deseja que o conteúdo seja alinhado ao final. Sei que não é uma ótima resposta para sua pergunta, já que as DIVs devem substituir as tabelas, mas foi o que tive que fazer recentemente com uma legenda de imagem e funcionou perfeitamente até agora.
fonte
Eu tentei esse cenário postado anteriormente também;
O posicionamento absoluto fixa a div na parte mais baixa do navegador ao carregar a página, mas quando você rola para baixo, se a página for mais longa, ela não rola com você. Mudei o posicionamento para ser relativo e funciona perfeitamente. O div vai direto para o fundo após o carregamento, para que você não o veja até chegar ao fundo.
fonte
Uma abordagem interessante é empilhar alguns elementos de flutuação corretos uns sobre os outros.
O único problema é que isso só funciona quando você conhece a altura da caixa.
fonte
A resposta de Stu chega mais perto de funcionar até agora, mas ainda não leva em consideração o fato de que a altura de sua div externa pode mudar, com base na maneira como o texto é inserido nela. Portanto, reposicionar a div interna (alterando a altura do "pipe") apenas uma vez não será suficiente. Essa alteração deve ocorrer dentro de um loop, para que você possa verificar continuamente se já obteve o posicionamento correto e reajustar, se necessário.
O CSS da resposta anterior ainda é perfeitamente válido:
No entanto, o Javascript deve se parecer mais com isso:
fonte
Eu sei que é um tópico muito antigo, mas ainda gostaria de responder. Se alguém seguir o css e html abaixo, ele funcionará. A div do rodapé filho ficará com o fundo como cola.
fonte
Usar a
margin-top
propriedade css com o objetivo de definir rodapé na parte inferior de seu contêiner. E usar atext-align-last
propriedade css para definir o conteúdo do rodapé no centro.fonte
Oh, jovens ... Aqui está você:
Nenhuma posição absoluta! Responsivo! Moda antiga
fonte
Pergunta bastante antiga, mas ainda assim ... Você pode flutuar uma div na parte inferior da página desta maneira:
Você pode ver onde a mágica acontece. Eu acho que você poderia fazer o mesmo flutuando para o fundo de uma div pai.
fonte
simples ...... no arquivo html à direita .... coloque o "rodapé" (ou a div que você deseja na parte inferior) na parte inferior. Então não faça isso:
Faça o seguinte: (coloque o rodapé embaixo.)
Depois de fazer isso, você pode acessar o arquivo css e fazer com que a "barra lateral" flutue para a esquerda. depois, o "conteúdo" flutua para a direita e o "rodapé" limpa ambos.
isso deve funcionar. fez para mim.
fonte
Consegui que isso funcionasse na primeira tentativa, adicionando
position:absolute; bottom:0;
ao ID da div dentro do CSS. Eu não adicionei o estilo paiposition:relative;
.Está funcionando perfeitamente no Firefox e no IE 8, ainda não o testou no IE 7.
fonte
uma resposta alternativa é o uso criterioso de tabelas e linhas. definindo todas as células da tabela na linha anterior (exceto a principal) para row (linha) = "2", você sempre terá um orifício de uma célula na parte inferior da célula da tabela principal e sempre poderá colocar valign = "bottom".
Você também pode definir sua altura para o mínimo necessário para uma linha. Assim, você sempre terá sua linha de texto favorita na parte inferior, independentemente de quanto espaço o restante do texto ocupe.
Eu tentei todas as respostas div, não consegui fazê-las fazer o que eu precisava.
fonte
aqui está a minha solução:
fonte
Você pode tentar usar um elemento vazio com uma largura de 1px e flutuá-lo. Em seguida, limpe o elemento que você deseja posicionar e use a altura do elemento vazio para controlar o quão baixo ele vai.
http://codepen.io/cssgrid/pen/KNYrey/
fonte