html - 除了属性,还有什么决定了 html 元素的行为?

标签 html browser

我想问一个比“浏览器如何工作??”更具体的问题,请耐心等待 :)

如果我理解正确的话,html 元素可能有一些默认属性决定它们的行为。例如,<div>display: block默认设置属性,而 spandisplay: inline

存在这些默认值是因为它们是在浏览器的默认样式表中定义的。

好的,我明白了(希望如此)。但是<br />呢?或 <img> ?那些行为不仅仅取决于它们的属性,对吗? 是否仅取决于浏览器的实现来使它们按照 W3 html5 规范规定的方式运行?

此外,对于这种元素行为是否有官方说法,或者它只是属于“浏览器实现”?

最佳答案

所以,您实际上是在问两个问题:

  1. HTML 元素的默认呈现和行为是什么?
  2. 谁/什么决定了它在浏览器中的工作方式?

让我们从问题 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)(不再正确 - 请参阅评论),但不是全部。 This article提供有关浏览器构建方式的一些见解(并带来更多见解),以及 here's一篇列出多个浏览器引擎的文章。

在大多数情况下,您可以通过更改 HTML 文档的 CSS 属性来影响其外观,但如果不使用 JavaScript 编写脚本,大多数 HTML 元素的行为是无法更改的。

浏览器应用的默认 CSS 样式由名为 User Agent Stylesheet 的样式表定义。 .这些通常是浏览器供应商设计的非常基本的样式,目的是在不显着影响文档的呈现的情况下使 HTML 文档更具可读性。

但是,不同浏览器应用的基本样式如此之多,对于 Web 开发人员/设计人员来说,所谓的 CSS 重置是很常见的。 Normalize.css就是一个很好的例子,也是最受欢迎的例子之一。

关于html - 除了属性,还有什么决定了 html 元素的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003367/

相关文章:

javascript - 浏览器后退按钮问题

css - 使用 div 作为段落

javascript - 如何设置段落内动态内容的样式?

java - 支持多浏览器/选项卡 session J2EE/Web 应用程序

javascript - 使用 AJAX 从跨源服务器检索图像

google-chrome - Chrome 扩展程序 : Execute background page only once when chrome starts

html - 动画 Div 到 100% 宽度 css

javascript - 使用javascript在python循环中更新HTML

html - 如何删除最后一项的边框

javascript - 调整浏览器大小