<div>
s 有一个块显示模型。
<span>
s 有一个内联显示模型。
是否有没有任何呈现目的的元素,其唯一目标是对其他元素进行分组?
不可以。每个元素都必须有一个display
属性值。CSS 不允许空值的可能性。
<div>
和<span>
是通用分组元素,并且有许多非通用分组元素。您只需为上下文选择正确的一个(这取决于所涉及的标记和语义,而不是 的默认值display
)。
好吧 - 至少使用 CSS3 你可以更好地控制它,例如在你的 div 中
style="all:unset;"
这可以用于与重置样式表相同的效果。
div
并且span
没有语义意义;它们完全是为了对元素进行分组而制作的。
不,没有用于对任何类型的视觉元素进行分组的元素。
您可以使用<thead>
和元素对表格中的<tfoot>
元素<tbody>
进行分组。<tr>
虽然<div>
和<span>
元素以及诸如<article>
, <aside>
, <footer>
, <header>
, <main>
,<nav>
等较新的语义元素<section>
实现了分组的目的,但它们都带有默认的用户代理样式。
尽管可以根据需要覆盖这些样式,但 DOM 树本身内的元素嵌套可能会产生不良影响。例如,在display: flex;
父元素上使用时,其直接子元素 ( >
) 的渲染会受此影响。
新的 CSSdisplay: contents;
属性值旨在解决此问题:
display: contents 使元素的子元素看起来好像是元素父元素的直接子元素,忽略元素本身。当使用 CSS 网格或类似布局技术时应该忽略包装元素时,这可能很有用。
然而,到 2020 年底,浏览器的支持并没有人们希望的那么好:
https://caniuse.com/css-display-contents
可以在规范中找到有关实现应如何详细工作的更多详细信息:
https://drafts.csswg.org/css-display/#valdef-display-contents