除了属性,是啥决定了 html 元素的行为?
Posted
技术标签:
【中文标题】除了属性,是啥决定了 html 元素的行为?【英文标题】:Other than attributes, what determines the behavior of html elements?除了属性,是什么决定了 html 元素的行为? 【发布时间】:2015-01-16 04:13:00 【问题描述】:我试图问一个比“浏览器如何工作??”更具体的问题,请多多包涵:)
如果我理解正确的话,html 元素可能有一些默认属性来决定它们的行为。比如<div>
默认设置了display: block
属性,而span
有display: inline
这些默认值存在是因为它们是在浏览器的默认样式表中定义的。
好吧,我明白了(希望如此)。但是<br />
或<img>
呢?那些人的行为不仅仅是由他们的属性决定的吗? 是否只能由浏览器的实现来让它们按照 W3 html5 规范的要求行事?
此外,这种元素行为是否有官方说法,或者它只是属于“浏览器实现”?
【问题讨论】:
默认属性在 HTML5 中变得更加复杂。元素现在可以分为多个(甚至没有)content categories。 【参考方案1】:所以,你真的在这里问了两个问题:
-
HTML 元素的默认呈现方式和行为是什么?
谁/什么决定了它在浏览器中的工作方式?
让我们从问题 2 开始
HTML 规范由W3C 中的一个名为HTML Working Group 的小组编写和审核。当他们就规范达成一致时,他们将其作为建议书发布。您可以阅读 HTML 5 规范 here,但我不建议阅读整篇文章 - 它很长而且无聊充满了技术术语。
但是,W3C 的建议仅定义了 HTML 功能的语法和预期用途 - 它没有定义浏览器应如何呈现 HTML。浏览器供应商,如 Microsoft (IE)、Mozilla (FireFox)、Apple (Safari) 和 Google (Chrome),可以确定他们的浏览器如何呈现和实现 HTML 的功能。
幸运的是,大多数常见的 HTML 元素在不同浏览器之间的行为几乎完全相同。供应商之间保持一致符合供应商的最大利益,因为如果他们中的一个决定做一些与其他人截然不同的事情,那么构建网站的人将不得不花费更多时间来支持该特定浏览器,并且它会被淘汰。支持(就像 IE 6 直到 IE 11 的情况一样)。
什么决定了 HTML 元素的行为?
浏览器的渲染引擎。一些浏览器共享相同的渲染引擎 (如 Safari 和 Chrome)(不再适用 - 请参阅 cmets),但并非全部。 This article 提供了一些关于如何构建浏览器的见解(并导致更多见解),here's 一篇文章列出了几个浏览器引擎。
在大多数情况下,您可以通过更改其 CSS 属性来影响 HTML 文档的外观,但如果不使用 javascript 编写脚本,大多数 HTML 元素的 行为 是无法改变的。
浏览器应用的默认 CSS 样式由名为 User Agent Stylesheet 的样式表定义。这些通常是浏览器供应商设计的非常基本的样式,目的是使 HTML 文档更具可读性,而不会严重影响文档的呈现。
但是,不同的浏览器应用了如此多的基本样式,对于 Web 开发人员/设计师来说,所谓的 CSS 重置是很常见的。 Normalize.css 就是一个很好的例子,也是最受欢迎的例子之一。
【讨论】:
你确定现在 Safari 和 Chrome 共享同一个渲染引擎吗? 不同的 JavaScript 引擎,但我很确定它们都使用 WebKit 进行布局。 来自***关于 Webkit 的文章:“WebKit 被用作 Safari 中的渲染引擎,以前被 Google 的 Chrome 网络浏览器使用。” 这很有趣。那么为什么 webkit 供应商前缀仍然可以在 chrome 中使用? 因为他们保留它们是为了向后兼容。【参考方案2】:我相信这取决于浏览器的实现。它将出现在屏幕上的方式取决于浏览器的实现。 虽然,所有浏览器都同意它应该在屏幕上的显示方式。 这些标准由World Wide Web Consortium - (wikipedia) 定义。
我想您正在寻找的这些信息可以在这些网站上找到!
【讨论】:
以上是关于除了属性,是啥决定了 html 元素的行为?的主要内容,如果未能解决你的问题,请参考以下文章
单击 <button> 元素时的标准行为是啥?它会提交表格吗?