<img>元素块级别还是内联级别?

und*_*ack 148 html css image

我已经在某个地方读过这个<img>元素的行为.如果正确,有人可以用例子解释一下吗?

Dis*_*oat 176

确实,它们都是 - 或者更准确地说,它们是"内联块"元素.这意味着它们像文本一样以内联方式流动,但也具有像块元素一样的宽度和高度.

在CSS中,您可以设置元素display: inline-block以使其复制图像的行为*.

图像和对象也称为"替换"元素,因为它们本身没有内容,该元素基本上被二进制数据替换.

*请注意,浏览器在技术上使用display: inline(如开发人员工具中所示),但它们对图像进行了特殊处理.他们仍然遵循所有特征inline-block.

  • 这个答案在技术上并不正确.准确地说,`img`元素不是`inline-block`,而是`inline`元素.您可以在现代浏览器中通过右键单击图像,单击"检查元素",然后查看计算样式来检查这一点,该样式将显示"display:inline".标签内部没有发生块上下文,因此将其称为"inline-block"是不正确的.有关替换内联元素的更多信息,请参阅[Quentin的答案](http://stackoverflow.com/a/2402781/2234742)和[此MDN文章](https://developer.mozilla.org/en-US/docs/网络/ CSS/Replaced_element). (18认同)
  • @Max根据[this](http://www.w3.org/TR/CSS2/conform.html#replaced-element),替换元素超出了CSS格式化模型的范围.HTML或CSS规范中没有任何内容指定图像是内联的.因此,无论浏览器显示什么,图像的处理方式与设置为"display:inline-block"完全相同. (2认同)

Que*_*tin 46

一个img元件是一个replaced inline element.

它的行为类似于内联元素(因为它是),但有关内联元素的一些概括不适用于img元素.

例如

泛化:"宽度不适用于内联元素"

规范的实际内容是:"适用于:所有元素,但未替换的内联元素,表行和行组"

由于图像是替换的内联元素,因此它确实适用.


Rob*_*sto 12

IMG元素是内联的,这意味着除非它们是浮动的,否则它们将与文本和其他内联元素水平流动.

它们是"块"元素,因为它们具有宽度和高度.但在这方面,他们的行为更像是"内联阻止".


Mon*_*ynn 6

几乎所有目的都将它们视为具有宽度设置的内联元素.基本上,您可以自由决定如何使用CSS显示图像.我通常设置几个图像类,如下所示:

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;}
Run Code Online (Sandbox Code Playgroud)