为什么没有 <flex> 或 <grid> 元素?
Why aren't there < flex > or < grid > elements?
其他display
值有一个或多个对应的HTML元素,例如:
block
- div, p
inline
- 跨度、强壮等
list-item
- 李
table
- table, table-行 - tr 等
- none - 模板
但 display: grid
和 display: flex
必须通过样式分配。如果 <flex>
和 <grid>
元素可用,我可以看到通过 DOM 阅读起来会更容易。
既然可以制作自定义元素,是否没有将新元素类型添加到规范中?
您问题的答案与样式与呈现数据的分离有关。
用于显示数据的 HTML 标签应该根据您显示的数据类型来选择。例如,您可以在制作列表时使用 <li>
,或者在您希望文本突出显示时使用 <strong>
。 CSS 为您提供了很大的灵活性来修改数据的显示方式,允许您更改数据的显示方式,例如 <strong>
或 <em>
标签中的文本。许多标签的样式都可以更改,以便它们的行为与其他标签相同。例如,您可以使 <span>
标签的行为类似于 <div>
标签,反之亦然。但是,您不应该这样做。换句话说,您 select 的标签应该基于显示的数据类型,例如 <li>
用于列表项或 <p>
用于段落。从技术上讲,您永远无法将数据与其显示方式完全分开,但您应该尽可能地尝试这样做。
<flex>
和 <grid>
对于您要显示的数据类型没有任何意义。因此,它们是可以使用 CSS(而不是标签)编辑的样式。
I could see it being easier to read through the DOM if <flex>
and <grid>
elements were available.
您建议结合内容和演示文稿,这违背了 CSS 旨在解决的 separation of concerns 原则。
HTML用于内容的组织。 CSS用于内容的呈现。您的 <flex>
和 <grid>
元素将结合这两个问题,这是 1990 年代的情况,在 CSS 出现之前,HTML 两者兼而有之。
此外,如果我希望我的 <article>
成为网格容器,或者我的 <aside>
成为弹性容器怎么办?
为什么不也有 <block>
和 <inline>
?
事情开始变得混乱。
另外,你提问的前提也不正确
Other display
values have one or more corresponding HTML elements ... but display: grid
and display: flex
must be assigned through styling.
实际上,所有HTML个元素的display
值被赋值。唯一的区别是样式的来源。
在原始形式中,HTML 元素没有样式。它们只有语义。
直到浏览器指定 default styles 元素才具有表示意义。
因此,您可以这样说的唯一原因...
Other display
values have one or more corresponding HTML elements,
such as:
block
- div, p
inline
- span, strong, etc.
list-item
- li
table
- table, table-row - tr, etc.
... 是因为浏览器用这样的方式定义了这些元素:
Appendix D. Default style sheet for HTML 4
如您所见,已分配 display
个值。
因此浏览器为 HTML 元素设置了基本级别的格式设置。这些样式的更改和添加留给作者。
这里有更多详细信息:
其他display
值有一个或多个对应的HTML元素,例如:
block
- div, pinline
- 跨度、强壮等list-item
- 李table
- table, table-行 - tr 等- none - 模板
但 display: grid
和 display: flex
必须通过样式分配。如果 <flex>
和 <grid>
元素可用,我可以看到通过 DOM 阅读起来会更容易。
既然可以制作自定义元素,是否没有将新元素类型添加到规范中?
您问题的答案与样式与呈现数据的分离有关。
用于显示数据的 HTML 标签应该根据您显示的数据类型来选择。例如,您可以在制作列表时使用 <li>
,或者在您希望文本突出显示时使用 <strong>
。 CSS 为您提供了很大的灵活性来修改数据的显示方式,允许您更改数据的显示方式,例如 <strong>
或 <em>
标签中的文本。许多标签的样式都可以更改,以便它们的行为与其他标签相同。例如,您可以使 <span>
标签的行为类似于 <div>
标签,反之亦然。但是,您不应该这样做。换句话说,您 select 的标签应该基于显示的数据类型,例如 <li>
用于列表项或 <p>
用于段落。从技术上讲,您永远无法将数据与其显示方式完全分开,但您应该尽可能地尝试这样做。
<flex>
和 <grid>
对于您要显示的数据类型没有任何意义。因此,它们是可以使用 CSS(而不是标签)编辑的样式。
I could see it being easier to read through the DOM if
<flex>
and<grid>
elements were available.
您建议结合内容和演示文稿,这违背了 CSS 旨在解决的 separation of concerns 原则。
HTML用于内容的组织。 CSS用于内容的呈现。您的 <flex>
和 <grid>
元素将结合这两个问题,这是 1990 年代的情况,在 CSS 出现之前,HTML 两者兼而有之。
此外,如果我希望我的 <article>
成为网格容器,或者我的 <aside>
成为弹性容器怎么办?
为什么不也有 <block>
和 <inline>
?
事情开始变得混乱。
另外,你提问的前提也不正确
Other
display
values have one or more corresponding HTML elements ... butdisplay: grid
anddisplay: flex
must be assigned through styling.
实际上,所有HTML个元素的display
值被赋值。唯一的区别是样式的来源。
在原始形式中,HTML 元素没有样式。它们只有语义。
直到浏览器指定 default styles 元素才具有表示意义。
因此,您可以这样说的唯一原因...
Other
display
values have one or more corresponding HTML elements, such as:
block
- div, pinline
- span, strong, etc.list-item
- litable
- table, table-row - tr, etc.
... 是因为浏览器用这样的方式定义了这些元素:
Appendix D. Default style sheet for HTML 4
如您所见,已分配 display
个值。
因此浏览器为 HTML 元素设置了基本级别的格式设置。这些样式的更改和添加留给作者。
这里有更多详细信息: