正确使用 <del> 和 <ins> 以及它们作为容器的原因

Proper use of <del> and <ins> and why they act as containers

我正在开发一个用户可以 post 发表评论的网站。因此,我打算使用 <ins> 元素。当评论不准确时,将使用 <del>-元素将它们标记为已删除。

我的第一个问题是我是否正确使用了这些元素的语义?

当我在 W3C 上看到这两个元素可以在其中包含块级元素时,我感到很惊讶,因为对于设置为 display: inline;(不能有宽度、高度等)。我检查了计算出的浏览器值,对于 <del><ins>

肯定是 display: inline;

所以我的第二个问题是浏览器如何使这种特殊行为起作用? (或者它甚至很特别?-我错过了什么吗?)

尽量不要将样式 (CSS) 与 HTML 内容模型混淆。这些是故意分开和正交的概念。唯一的 link 是某些 HTML 元素具有一致的默认样式。

虽然 ins 和 del 可以按照您在 HTML4 中描述的方式使用,但 HTML5 使这种分离更加明显,因为它不使用术语 "block" 和"inline"。这些条款留给 CSS。 HTML5 的内容模型使用单独的分类,包括 "flow"、"phrasing",在这种情况下很重要,"transparent"

内容模型用于辅助文档内容的含义。但是浏览器不关心含义,只关心如何呈现。

CSS 提供了关于如何在行内元素内呈现块元素的明确规则,完全不管 HTML 的内容模型限制。看到这个答案:Is it wrong to change a block element to inline with CSS if it contains another block element? .

所以,不,行为不是 "special",浏览器除了使用正常的 CSS 规则来处理它之外不需要做任何事情。

关于您的第一个问题,很难判断 "inaccuracy" 是否应该暗示使用 <del>。如果评论者打算撤回这种不准确之处,那么 <del> 是合适的,否则可能不合适。