Eu li em algum lugar que esse <img>
elemento se comporta como ambos. Se correto, alguém poderia explicar com exemplos?
163
É verdade, eles são os dois - ou mais precisamente, são elementos de "bloco embutido". Isso significa que eles fluem em linha como texto, mas também têm largura e altura como elementos de bloco.
No CSS, você pode definir um elemento para display: inline-block
replicar o comportamento das imagens *.
Imagens e objetos também são conhecidos como elementos "substituídos", uma vez que não possuem conteúdo em si, o elemento é essencialmente substituído por dados binários.
* Observe que os navegadores usam tecnicamente display: inline
(como visto nas ferramentas do desenvolvedor), mas estão dando tratamento especial às imagens. Eles ainda seguem todas as características de inline-block
.
img
elementos não são,inline-block
na verdade,inline
elementos. Você pode verificar isso em um navegador moderno clicando com o botão direito do mouse em uma imagem, clicando em "Inspecionar elemento" e depois visualizando o estilo calculado, que será exibidodisplay: inline
. Não há contexto de bloco acontecendo dentro da tag, portanto, não é correto chamá-lainline-block
. Para obter mais informações sobre elementos inline substituídos, consulte a resposta de Quentin e este artigo do MDN .img
elementos estão alinhados - as ferramentas de desenvolvimento do Google Chrome mostram osimg
elementos como alinhados. Este post é o único lugar que eu encontrei até agora e diz que eles sãoinline-block
. Curiosamente, eu também não encontrei nenhuma autoridade que diga que éinline
. É como tratar a tag dependente da implementação, talvez?display:inline-block
.Um
img
elemento é um elemento embutido substituído .Ele se comporta como um elemento embutido (porque é), mas algumas generalizações sobre elementos embutidos não se aplicam a
img
elementos.por exemplo
Generalização: "Largura não se aplica a elementos embutidos"
O que a especificação realmente diz : "Aplica-se a: todos os elementos, exceto elementos inline não substituídos, linhas da tabela e grupos de linhas"
Como uma imagem é um elemento embutido substituído, ela se aplica.
fonte
Os elementos IMG estão embutidos, o que significa que, a menos que sejam flutuados, eles fluirão horizontalmente com texto e outros elementos embutidos.
Eles são elementos de "bloco", pois possuem largura e altura. Mas eles se comportam mais como "bloqueio em linha" a esse respeito.
fonte
Para quase todos os fins, pense neles como um elemento embutido com um conjunto de largura. Basicamente, você é livre para ditar como você gostaria que as imagens fossem exibidas usando CSS. Geralmente, defino algumas classes de imagem da seguinte forma:
fonte
Sempre que você insere uma imagem, apenas assume a largura que a imagem possui originalmente. Você pode adicionar qualquer outro elemento html próximo a ele e verá que ele permitirá. Isso faz da imagem um elemento "inline".
fonte
É verdade, eles são os dois - ou mais precisamente, são elementos de "bloco embutido". Isso significa que eles fluem em linha como texto, mas também têm largura e altura como elementos de bloco.
fonte