Evite quebra de linha após </div>

94

Existe uma maneira de evitar uma quebra de linha após um div com css?

Por exemplo eu tenho

<div class="label">My Label:</div>
<div class="text">My text</div>

e deseja que seja exibido como:

Minha etiqueta: Meu texto

Fabiano
fonte

Respostas:

152

display:inline;

OU

float:left;

OU

display:inline-block; - Pode não funcionar em todos os navegadores.

Qual é o propósito de usar um divaqui? Eu sugeriria a span, pois é um elemento de nível embutido, enquanto a divé um elemento de nível de bloco.


Observe que cada opção acima funcionará de maneira diferente.

display:inline;transformará o divno equivalente a a span. Vai ser afetado por margin-top, margin-bottom, padding-top, padding-bottom, height, etc.

float:left;mantém o divcomo um elemento de nível de bloco. Ele ainda ocupará espaço como se fosse um bloco, porém a largura será ajustada ao conteúdo (assumindo width:auto;). Pode requerer um clear:left;para certos efeitos.

display:inline-block;é a opção "melhor dos dois mundos". O divé tratado como um elemento de bloco. Ele responde a todas as margin, paddinge heightregras como esperado para um elemento de bloco. No entanto, ele é tratado como um elemento embutido para fins de colocação em outros elementos.

Leia isto para mais informações.

Jeff Rupert
fonte
3
Usei tags div porque foram gerados automaticamente por um template
Fabiano
Um div com display: inline nele é basicamente o mesmo que um span. É um contêiner semanticamente sem sentido. A única diferença é o modo de exibição padrão (bloco vs embutido)
Joeri Hendrickx
Um div com display: inline não funciona no Safari, ele quebra mesmo assim. Estou usando span.
Gustavo
inline-block apenas ajudou. Obrigado!
Drey
12
.label, .text {display: inline}

Embora se você usar isso, você também pode alterar os div's para span's.

Mikemerce
fonte
10

Um DIV é, por padrão, um elemento de exibição BLOCK, o que significa que fica em sua própria linha. Se você adicionar a propriedade CSS display: inline, ela se comportará da maneira que você deseja. Mas talvez você deva considerar um SPAN em vez disso?

David M
fonte
7
<span class="label">My Label:</span>
<span class="text">My text</span>
Mike
fonte
5

o div elementos são elementos de bloco, portanto, por padrão, ocupam toda a largura disponível.

Uma maneira é transformá-los em elementos embutidos:

.label, .text { display: inline; }

Isso terá o mesmo efeito que usar spanelementos em vez de divelementos.

Outra forma é flutuar os elementos:

.label, .text { float: left; }

Isso mudará como a largura dos elementos é decidida, de modo que eles sejam tão largos quanto seu conteúdo. Isso também fará com que os elementos flutuem lado a lado, da mesma forma que as imagens fluem lado a lado.

Você também pode considerar a alteração dos elementos. O divelemento destina-se a divisões de documentos, geralmente uso um labele um spanelemento para uma construção como esta:

<label>My Label:</label>
<span>My text</span>
Guffa
fonte
4

divs são usados ​​para dar estrutura a um site ou para conter muitos textos ou elementos, mas você parece usá-los como um rótulo, você deve usar span, ele colocará ambos os textos um ao lado do outro automaticamente e você não precisará escrever código css para ele.

E mesmo que outras pessoas digam para você flutuar os elementos, é melhor que você apenas altere as tags.

Christophe
fonte
3

Acho que não vi esta versão:

<div class="label">My Label:<span class="text">My text</span></div>
Maxhirez
fonte
2
<div id="hassaan">
     <div class="label">My Label:</div>
     <div class="text">My text</div>
</div>

CSS:

#hassaan{ margin:auto; width:960px;}
#hassaan:nth-child(n){ clear:both;}
.label, .text{ width:480px; float:left;}
Hassaan
fonte
5
Você pode querer explicar sua resposta para o benefício do OP
Luca
1

Tente aplicar o clear:noneatributo css ao rótulo.

.label {
     clear:none;
}
eles chamam de morte
fonte
1
Isso não tem efeito, pois divainda tem o padrão width:autoque o faz ocupar toda a largura disponível.
Guffa
0

tente flutuar seu div em css

.label {
float:left;
width:200px;
}
.text {
float:left;
}
Tim
fonte
1
Lembre-se de fazer o próximo elemento clear: left;para retornar o documento ao fluxo normal.
Pete
0

Muitas vezes consegui obter divs sem quebras de linha depois deles, brincando com o atributo float css e o atributo width css.
Obviamente, depois de trabalhar na solução, você deve testá-la em todos os navegadores e, em cada navegador, redimensionar as janelas para se certificar de que funciona em todas as circunstâncias.

Yoel Halb
fonte
0

use este código para div normal display: inline;

use este código se você usá-lo na tabela display: inline-table; melhor do que na tabela

Mo.
fonte
0

tente isto (in CSS) para evitar quebras de linha em divtextos:

white-space: nowrap;
Gustavz
fonte