Eu tenho uma div principal do wrapper que está definida como 100% de largura. Dentro disso, eu gostaria de ter dois divs, um com largura fixa e outro que preenche o resto do espaço. Como faço para flutuar a segunda div para preencher o restante do espaço. Obrigado por qualquer ajuda.
241
Respostas:
Há muitas maneiras de fazer o que você está pedindo:
Usando a propriedade CSS
float
:Usando a propriedade CSS
display
- que pode ser usada para fazer com quediv
aja comotable
:Existem mais métodos, mas esses dois são os mais populares.
fonte
O CSS3 introduziu caixas flexíveis (também conhecidas como flex box), que também podem atingir esse comportamento.
Simplesmente defina a largura da primeira div e, em seguida, dê à segunda um
flex-grow
valor1
que permita preencher a largura restante do pai.Demonstração do jsFiddle
Observe que as caixas flexíveis não são compatíveis com os navegadores antigos, mas são uma ótima opção para direcionar navegadores modernos (consulte também Caniuse e MDN ). Um ótimo guia abrangente sobre como usar caixas flexíveis está disponível em CSS Tricks .
fonte
Eu não sei muito sobre estratégias de design HTML e CSS, mas se você estiver procurando por algo simples e que caiba na tela automaticamente (como eu sou), acredito que a solução mais direta é fazer com que os divs se comportem como palavras em um parágrafo. Tente especificar
display: inline-block
Você pode ou não precisar especificar a largura dos DIVs
fonte
display:flex
é a melhor solução, mas acho queinline-block
também é excelente porque funciona em mais navegadores. A propósito, pode ser necessário agrupar as duas divs com a<div style="white-space:nowrap">
para evitar que o redimensionamento seja interrompido.inline-block
código.Você pode usar a grade CSS para conseguir isso. Esta é a versão em mão longa para fins de ilustração:
Ou o método mais tradicional usando float e margin.
Eu incluí uma cor de plano de fundo neste exemplo para ajudar a mostrar onde estão as coisas - e também o que fazer com o conteúdo abaixo da área flutuante.
Não coloque seus estilos alinhados na vida real, extraia-os em uma folha de estilos.
fonte
Dê à primeira div um float à esquerda e fixe com, a segunda div 100% de largura e um float à esquerda. Isso deve fazer o truque. Se você deseja colocar itens abaixo dele, é necessário um espaço livre: ambos no item que você deseja colocar abaixo
fonte
Isso será compatível com vários navegadores. Sem a margem esquerda, você terá problemas com o conteúdo que vai para a esquerda se o conteúdo for maior que a barra lateral.
fonte
Se você não estiver etiquetando o IE6, faça flutuar o segundo
<div>
e dê uma margem igual a (ou talvez um pouco maior que) a<div>
largura fixa do primeiro .HTML:
CSS:
A margem é responsável pela possibilidade de que o 'restante espaço'
<div>
possa conter mais conteúdo do que a 'largura fixa'<div>
.Não dê um segundo plano à largura fixa; se você precisar visualizá-las visivelmente como 'colunas' diferentes, use o truque Colunas do falso .
fonte