Eu li em algum lugar que esse <img>
elemento se comporta como ambos. Se correto, alguém poderia explicar com exemplos?
Eu li em algum lugar que esse <img>
elemento se comporta como ambos. Se correto, alguém poderia explicar com exemplos?
Respostas:
É 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á exibido display: inline
. Não há contexto de bloco acontecendo dentro da tag, portanto, não é correto chamá-la inline-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 os img
elementos como alinhados. Este post é o único lugar que eu encontrei até agora e diz que eles são inline-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.
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:
img.center {display:block;margin:0 auto;}
img.left {float:left;margin-right:10px;}
img.right {float:right;margin-left:10px;}
img.border {border:1px solid #333;}
É 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.