在阅读 CSS2 规范 的 height 属性时遇到如下问题:
适用于:除非替换内联元素、表格列和列组之外的所有元素
我了解替换元素( <img>
)或内联元素( <button>
, <a>
找到非问题元素的例子)是,但
原文由 Michael Z 发布,翻译遵循 CC BY-SA 4.0 许可协议
David Baron 在他的网站上对此进行了讨论。
内联元素有两种类型:可替换内联元素和不可替换内联元素。一般来说,非替换元素是那些内容包含在文档中的元素,而替换元素是那些内容在文档之外的元素。例如,在代码中:
访问
<a href="http://www.w3.org/">World Wide Web Consortium</a>
了解…a
元素的内容是“万维网联盟”。替换元素是那些内容来自某些外部源的元素,例如object
或img
元素。然而,就内联盒模型而言,除了具有显示类型
inline-table
和inline-block
的元素之外,定义如上所述(后者是CSS3建议的类型以适应表单元素)被认为是替换元素。
Good examples of non-replaced inline elements are span
, strong
, i
, b
, em
, etc .
原文由 cereallarceny 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2.4k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
5 回答969 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
4 回答2.5k 阅读
4 回答1.7k 阅读
出于大多数实际目的,最好将“替换”理解为“嵌入”。所以“非替换元素”只是一个被渲染的元素,而不是让一些外部内容出现在它的位置上。
“不可替换的内联元素”这个表达没有自己的定义:它只是指任何既是不可替换元素又是内联元素的元素。例如
<a>
。 HTML 中的大多数元素都是不可替换的。非替换元素只是一个不是替换元素的元素。然而,在 CSS 规范中,对于“可替换元素”的概念只是笼统的描述,并没有明确列出这些元素。这是可以理解的,因为 HTML 的发展完全独立于 CSS。
随着时间的推移,这个概念有所改变。 CSS 1 规范 说:“在 HTML 中,IMG、INPUT、TEXTAREA、SELECT 和 OBJECT 元素可以是替换元素的示例。”在较新的规范中,不再包含表单字段。这反映在 HTML5 草案中,其中 渲染 部分明确列出了非替换元素下的表单控件。根据它,唯一被替换的元素是那些将外部内容(例如图像、视频、小程序或 HTML5 画布)嵌入到 HTML 文档中的元素——除了也提到了改进的
menu
元素(它预计将以与浏览器控件相呼应的方式实现,因此它也有点嵌入外部内容)。此更改反映了浏览器的开发。早期的浏览器使用系统例程以不受 CSS 中任何内容影响的方式实现表单字段,并且仍然存在一些这种方法,但现在表单字段大多可以使用 CSS 进行格式化,因此它们实际上已经从替换变为非 -被替换的元素。