【问题标题】:css functionality for body tag works without body tag in html file [duplicate]body标签的css功能在html文件中没有body标签的情况下工作[重复]
【发布时间】:2021-02-18 02:17:36
【问题描述】:

下面是我的 style.css 文件包含的代码

body{
    background-color:pink;
    font-size: 130%;
}

我的 style_placement.html 文件包含的代码

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Style Placement</title>
    <link rel='stylesheet' href="style.css"> 

<style>

h2 {color:maroon}

</style>
</head>

<h1>Style Placement header</h1>
<p>This is heading one</p>

<h2>Subheading 1</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ex et similique cupiditate dignissimos delectus nulla dolore, eos dolorum quidem excepturi, facere non repellat accusamus, atque? Id voluptate eos et accusantium.</p>
<h2>Subheading 2</h2>
<p style='text-align:center'></p>

</html>

在这里,我什至没有在 html 文件中使用 body 标签,但已经应用了该标签的样式。谁能帮我知道幕后发生了什么? 下面是我的输出在网络浏览器中的截图

【问题讨论】:

  • 即使您省略添加body 标签,它也会自动添加以保持一致性。如果您检查您的页面,您将看到您的正文标签等。但我想不建议这样做,因为并非所有浏览器的行为方式都相同。

标签: html css


【解决方案1】:

根据the spec,body 元素的开始和结束标签是显式可选的。

他们可以从他们周围的内容中推断出来。即使标签不存在,元素仍然会被创建。

文本/html中的标记省略:

  • 如果元素为空,或者主体元素中的第一件事不是 ASCII 空格,则可以省略主体元素的开始标记 或注释,除非 body 元素内的第一件事是 元、链接、脚本、样式或模板元素。
  • 如果正文元素后面没有紧跟注释,则可以省略正文元素的结束标记。

情况一直如此。例如,请参阅the HTML 4 spec:

大部分 HTML DTD 由元素类型及其属性的声明组成。 &lt;!ELEMENT 关键字开始声明,&gt; 字符结束声明。在这些之间指定:

  • 元素的名称。
  • 元素的标签是否可选。元素名称后出现的两个连字符表示开始和结束标记是强制​​性的。 一个连字符后跟字母“O”表示结束标签可以 被省略。 一对字母“O”表示开头和 结束标签可以省略。
  • 元素的内容,如果有的话。元素允许的内容称为其内容模型。设计为没有的元素类型 内容称为空元素。此类元素的内容模型 类型是使用关键字“EMPTY”声明的。

and

<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->

【讨论】:

    【解决方案2】:

    浏览器正在处理“脏”的 html。不建议依赖它,因为并非每个浏览器都以相同的方式处理。

    Some further info

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 2016-03-18
      • 2019-01-02
      • 1970-01-01
      • 2011-04-20
      • 2014-11-12
      • 2018-01-23
      相关资源
      最近更新 更多