Eu tenho um layout fluido usando a inicialização do Twitter, em que tenho uma linha com duas colunas. A primeira coluna tem muito conteúdo, que eu quero preencher normalmente. A segunda coluna apenas possui um botão e algum texto, que eu quero alinhar na parte inferior em relação à célula na primeira coluna.
Aqui está o que eu tenho:
-row-fluid-------------------------------------
+-span6----------+ +-span6----------+
| | |short content |
| content | +----------------+
| that |
| is tall |
| |
+----------------+
-----------------------------------------------
Aqui está o que eu quero:
-row-fluid-------------------------------------
+-span6----------+
| |
| content |
| that |
| is tall | +-span6----------+
| | |short content |
+----------------+ +----------------+
-----------------------------------------------
Eu já vi soluções que tornam o primeiro período uma altura absoluta e posicionam o segundo período em relação a ele, mas seria preferível uma solução em que eu não tivesse que especificar a altura absoluta dos meus divs. Também estou aberto a um repensar completo de como obter o mesmo efeito. Não sou casada com esse uso do andaime, apenas parecia fazer mais sentido para mim.
Esse layout como um violino:
fonte
Respostas:
Atenção: para usuários do Bootstrap 4+, considere a solução da Christophe (o Bootstrap 4 introduziu o flexbox, que fornece uma solução somente CSS mais elegante). O seguinte funcionará para versões anteriores do Bootstrap ...
Consulte http://jsfiddle.net/jhfrench/bAHfj/ para obter uma solução funcional.
Do lado positivo:
pull-down
.Agora as más notícias:
fonte
.pull-left
e.pull-right
), sem afetar os irmãos. Isso pode ser feito com a solução somente CSS?Esta é uma solução atualizada para o Bootstrap 3 (embora deva funcionar para versões mais antigas) que usa apenas CSS / LESS:
http://jsfiddle.net/silb3r/0srp42pb/11/
Você define o tamanho da fonte como 0 na linha (caso contrário, você acaba com um espaço irritante entre as colunas), remove os flutuadores da coluna, define a exibição como
inline-block
, redefine o tamanho da fonte e, em seguida,vertical-align
pode ser definido como qualquer coisa que você precise.Não é necessário jQuery.
fonte
div
paravertical-align: middle;
..myrow
) ... isso não significa que você não pode ter uma coluna alinhada no topo, uma coluna alinhada no fundo e uma terceira coluna alinhada no topo?Você pode usar o flex:
fonte
Você precisa adicionar algum estilo para
span6
, smthg assim:e este é o seu violino: http://jsfiddle.net/sgB3T/
fonte
padding-left: 0
e coloquepadding-right: 0
todas as colunas nessa linha.Aqui também está uma diretiva angularjs para implementar essa funcionalidade
fonte
Basta definir o pai
display:flex;
e o filho paramargin-top:auto
. Isso colocará o conteúdo filho na parte inferior do elemento pai, assumindo que o elemento pai tenha uma altura maior que o elemento filho.Não há necessidade de tentar calcular um valor para
margin-top
quando você tem uma altura em seu elemento pai ou outro elemento maior que seu elemento filho de interesse no elemento pai.fonte
Com base nas outras respostas, aqui está uma versão ainda mais responsiva. Fiz alterações na versão de Ivan para oferecer suporte a viewports com largura <768px e para melhor suporte ao redimensionamento lento da janela.
fonte
margin-top
como 0 e defini-lo novamente para o novo valor? Além disso, por que essas coisas estão em doiseach()
"loops"?Isso é baseado na solução da cfx, mas em vez de definir o tamanho da fonte como zero no contêiner pai para remover os espaços entre colunas adicionados devido à exibição: bloco em linha e ter que redefini-los, eu simplesmente adicionei
para a coluna divs para compensar.
fonte
Bem, eu não gostava de nenhuma dessas respostas, a minha solução do mesmo problema foi adicionar o seguinte:
<div> </div>
. Portanto, no seu esquema, ficaria assim (mais ou menos), nenhuma mudança de estilo foi necessária no meu caso:fonte
a adicionar se o comprimento da célula esquerda for desconhecido?fonte