Qual é exatamente a diferença entre the inline
e inline-block
values of CSS display
?
607
Imagine um <span>
elemento dentro de a <div>
. Se você der ao <span>
elemento uma altura de 100px e uma borda vermelha, por exemplo, ele ficará assim com
display: embutido
display: bloco embutido
display: bloco
Código: http://jsfiddle.net/Mta2b/
Elementos com display:inline-block
são como display:inline
elementos, mas eles podem ter uma largura e uma altura . Isso significa que você pode usar um elemento de bloco embutido como um bloco enquanto o flui dentro de texto ou outros elementos.
Diferença de estilos suportados como resumo:
margin-left
, margin-right
, padding-left
,padding-right
margin
, padding
, height
,width
p
,div
obtêm uma linha inteira de largura (força uma quebra de linha), mas respeitam a largura / altura e todos os preenchimentos / margens horizontais / verticais. Elementos inline-bloco têm o mesmo comportamento como bloco, mas sem toda quebra de linha (outros elementos podem ser colocados ao lado deles)display: inline;
é um modo de exibição para usar em uma frase. Por exemplo, se você possui um parágrafo e deseja destacar uma única palavra, faça:O
<em>
elemento tem umdisplay: inline;
por padrão, porque essa tag é sempre usada em uma frase. O<p>
elemento tem umdisplay: block;
por padrão, porque não é nem uma frase nem em uma frase, é um bloco de frases.Um elemento com
display: inline;
não pode ter umheight
ou umwidth
ou um verticalmargin
. Um elemento comdisplay: block;
pode ter awidth
,height
emargin
.Se você deseja adicionar um
height
ao<em>
elemento, defina esse elemento comodisplay: inline-block;
. Agora você pode adicionar umheight
ao elemento e a qualquer outro estilo de bloco (ablock
parte deinline-block
), mas ele é colocado em uma frase (ainline
parte deinline-block
).fonte
display
valores.Uma coisa não mencionada nas respostas é que o elemento inline pode quebrar entre linhas, enquanto o bloco inline não pode (e obviamente bloqueia)! Portanto, os elementos embutidos podem ser úteis para estilizar frases de texto e blocos dentro deles, mas como eles não podem ser preenchidos, você pode usar a altura da linha .
fonte
Todas as respostas acima contribuem com informações importantes sobre a pergunta original. No entanto, há uma generalização que parece errada.
É possível definir largura e altura para pelo menos um elemento embutido (que eu possa pensar) - o
<img>
elemento.As duas respostas aceitas aqui e neste duplicado afirmam que isso não é possível, mas isso não parece uma regra geral válida.
Exemplo:
O
img
temdisplay: inline
, mas éwidth
eheight
foi definido com sucesso.fonte
A resposta de splattne provavelmente cobriu quase tudo, para não repetir a mesma coisa, mas:
inline
einline-block
se comportar de maneira diferente com adirection
propriedade CSS.No próximo trecho que você vê
one two
(em ordem) é renderizado, como nos layouts LTR. Eu suspeito que o navegador aqui detectou automaticamente a parte em inglês como texto LTR e a processou da esquerda para a direita.No entanto, se eu for em frente e defina
display
comoinline-block
, o navegador parece respeitar adirection
propriedade e renderizar os elementos da direita para a esquerda, para quetwo one
seja renderizado.Eu não sei se existem outras peculiaridades para isso, eu só descobri isso empiricamente no Chrome.
fonte