什么是非replace的内联元素?

在阅读CSS2规范的高度属性时遇到以下情况:

适用于:所有元素,但未replace的内联元素,表列和列组

我知道replace元素( <img> )或内联元素( <button><a> )是什么,但无法find未replace的内联元素的示例。

expression式“非replace内联元素”没有自己的定义:它只是指任何既是非replace元素又是内联元素的元素。 如<a> 。 HTML中的大多数元素都未被replace。 非replace的元素只是一个不是replace元素的元素。

然而,在CSS规范中,只有一般概念“替代元素”的概念,而不是任何这样的元素的明确列表。 这是可以理解的,因为HTML的发展与CSS无关。

这个概念随着时间而有所改变。 CSS 1规范说:“在HTML中,IMG,INPUT,TEXTAREA,SELECT和OBJECT元素可以作为replace元素的例子。”在更新的规范中,表单字段不再包含在内。 这反映在HTML5草案中,其中“ 渲染”部分明确列出了“非replace元素”下的表单控件。 根据它,唯一被replace的元素是将外部内容(如图像,video,小程序或HTML5canvas)embedded到HTML文档中的元素 – 除了修改后的menu元素也被提及(预计将在一种回应浏览器控制的方式,所以它也embedded了外部内容)。

这一变化反映了浏览器的发展 早期的浏览器通过使用系统例程来实现表单字段,这种方式对于CSS中的任何东西都是免疫的,并且仍然存在一些这样的方法,但是现在表单字段大部分都可以用CSS来格式化,replace元素。

对于大多数实际用途,最好将“replace”看作“embedded”。 所以“非replace元素”就是这样呈现的元素,而不是导致一些外部内容出现在它的位置。

David Baron 在他的网站上讨论这个问题 。

有两种内联元素:replace内联元素和非replace内联元素。 通常,非replace元素是其内容包含在文档中的元素,而replace元素是那些内容在文档之外的元素。 例如,在代码中:

访问<a href="http://www.w3.org/">World Wide Web Consortium</a>以了解…元素的内容是“万维网联盟”。 replace的元素是那些内容来自某些外部来源的元素,例如objectimg元素。

然而,就内联框模型而言,定义如上所述,除了具有显示typesinline-tableinline-block元素(后者是CSS3的提议types以容纳表单元素)被认为是被replace的元素。

非replace内联元素的好例子是spanstrongibem等。

您可以在索引中findreplace元素的定义:

内容超出CSS格式模型范围的元素,如图像,embedded式文档或小程序。 例如,HTML IMG元素的内容通常被其“src”属性指定的图像取代。 replace的元素通常具有固有的尺寸:固有宽度,固有高度和固有比率。 例如,位图图像具有以绝对单位指定的固有宽度和固有高度(从中可明显确定固有比率)。 另一方面,其他文档可能没有任何固有的尺寸(例如,空白的HTML文档)。

如果认为这些维度可能会泄露敏感信息给第三方,用户代理可能会认为被replace的元素没有任何内在维度。 例如,如果一个HTML文档根据用户的银行余额改变了内在大小,那么UA可能希望这个资源没有固有的维度。

CSS渲染模型中不考虑replace元素的内容。

非replace的内联元素是内联的并且不符合上述内容。 粗略地说,它是一个包含(或可以包含)可以正常样式化的文本的元素。 ( abcitedefem等)