Eu tenho um div
com algumas crianças:
<div class="content">
<h1>heading 1</h1>
<h2>heading 2</h2>
<p>Some more or less text</p>
<a href="/" class="button">Click me</a>
</div>
e eu quero o seguinte layout:
-------------------
|heading 1 |
|heading 2 |
|paragraph text |
|can have many |
|rows |
| |
| |
| |
|link-button |
-------------------
Independentemente da quantidade de texto em que p
eu quero manter o .button
sempre na parte inferior sem tirá-lo do fluxo. Ouvi dizer que isso pode ser possível com o Flexbox, mas não consigo fazê-lo funcionar.
postition: absolute; bottom 0;
?position:relative
- é ridículo porque acho que é relativo por padrão, mas você o definiu para que o posicionamento absoluto da criança seja contido. Entãobottom:0
vai caber nivelado.static
não érelative
.Respostas:
Você pode usar margens automáticas
Então você pode usar um destes (ou ambos):
Mostrar snippet de código
Como alternativa, você pode fazer o elemento antes do
a
crescimento para preencher o espaço disponível:Mostrar snippet de código
fonte
html { height: 100%; } body { min-height: 100%; display: flex; flex-direction: column; } #site-content { flex: 1; }
height: 100%
sobre o elemento pai do que você está tentando empurrar algo para baixo commargin-top: auto;
Você pode usar display: flex para posicionar um elemento na parte inferior, mas não acho que você queira usar flex nesse caso, pois isso afetará todos os seus elementos.
Para posicionar um elemento na parte inferior usando flex, tente o seguinte:
Sua melhor aposta é definir position: absoluto para o botão e configurá-lo para
bottom: 0
, ou você pode colocar o botão fora do contêiner e usar negativotransform: translateY(-100%)
para trazê-lo para o contêiner da seguinte maneira:Verifique este JSFiddle
fonte
A solução com
align-self: flex-end;
não funcionou para mim, mas esta funcionou caso você queira usar o flex:Resultado
Código
Nota: Ao "executar o snippet de código", é necessário rolar para baixo para ver o link na parte inferior.
fonte
Não tem certeza sobre o flexbox, mas você pode fazer isso usando a propriedade position.
definir
div
position: relative
elemento pai e filho que pode ser um<p>
ou<h1>
etc. definirposition: absolute
ebottom: 0
.Exemplo:
index.html
style.css
Código caneta aqui.
fonte
position:fixed
não funcionaria porque então não seria relativo ao contêiner em que está. Talvez você quis dizerposition:absolute
?Demonstração: https://codepen.io/ferittuncer/pen/YzygpWX
fonte
Ao definir sua exibição para flex , você pode simplesmente usar a
flex
propriedade para marcar qual conteúdo pode crescer e qual não.Propriedade Flex
fonte
Tente isto
fonte
Acabei de encontrar uma solução para isso.
para quem não estiver satisfeito com as respostas fornecidas, tente esta abordagem com o flexbox
CSS
HTML
fonte