如果存在多个HTML元素,则HTML元素存在有趣的“问题”

如果存在多个HTML元素,则HTML元素存在有趣的“问题”,html,css,browser,Html,Css,Browser,有人能给我解释一下吗 在以下代码中,Firefox、Chrome和Opera中的所有文本均为红色 现在我知道实际上不应该在body标记中添加html元素,但是是什么让浏览器改变body中文本的颜色而不是第二个html 如果我在第一个html中添加style=blue,那么所有文本都是蓝色的 重申一下-我明白这不是一个实际问题,我只想知道是什么让浏览器以这种方式运行。使用firefox的firebug或在chrome中点击f12,查看浏览器如何解释代码。在Firefox和Chrome中,您将看到只

有人能给我解释一下吗

在以下代码中,Firefox、Chrome和Opera中的所有文本均为红色

现在我知道实际上不应该在body标记中添加html元素,但是是什么让浏览器改变body中文本的颜色而不是第二个html

如果我在第一个html中添加style=blue,那么所有文本都是蓝色的


重申一下-我明白这不是一个实际问题,我只想知道是什么让浏览器以这种方式运行。

使用firefox的firebug或在chrome中点击f12,查看浏览器如何解释代码。在Firefox和Chrome中,您将看到只有一个标签。有趣的是,与@Ragarokr的答案样式相反,外部标记优先于内部标记:


不做进一步的测试

如果没有与根级别html相关联的样式属性,则将删除任何前面的html元素,并将其样式添加到根级别html元素中

一旦有了与根级别html元素相关联的样式属性,那么样式的更改就无关紧要了

例如,在我的链接代码中,更改第一个html元素,使其后面有style=,则文字将为黑色


这是一个有趣的属性。

无效的HTML可能会导致不可预知的结果。我不明白这个问题的目的。我理解这一点,但对于大多数浏览器来说,以同样的方式处理这个问题似乎很奇怪。如果你加上第三个,并用不同的颜色,它似乎会用第二个作为颜色。@Toby:它在HTML规范中,但你必须自己阅读。如果你读了那么多,你会学到很多。专业提示:开始阅读HTML2规范,它没有太多的文本,例如与HTML5规范相比,因此更快地发现HTML的这一部分的几率更高。符合标准的用户代理只需接受最后定义的声明并覆盖任何先前定义的声明。由于HTML文档由头和体组成,所以无效的HTML文档会被浏览器自动修复。当然,浏览器不能创造奇迹,所以无效的HTML总是会导致不可预知的结果。@Toby:你刚刚链接了它。该规范还告诉您,浏览器会自动将一个元素放置在其正确的父元素中,例如,即使您将其放置在主体中,标题也将始终放在头部。实际上你根本不需要有一个身体。现在看到了吗?实际上,总是有一个html文档元素,即使html文件定义了该元素两次。这是由HTMLDTD实现的。然后,body元素就位于html文档元素内部——即使在html文件中,html元素位于html元素内部或body元素内部,甚至位于其他地方。类似于总是进入head的title元素——不管它在html文件中的位置如何。谢谢@hakre。我本来可以把我的回答措辞得更好。我还想提供一种方法,让人们能够看到这一点。
<html>
    <head><title>HTML TEST</title></head>
    <body>
        Test One
        <html style="color:red">Test Two</html>
    </body>
</html>