当前位置: 首页 > 面试题库 >

是否应在html元素或body元素上设置全局CSS样式?

鲁浩渺
2023-03-14
问题内容

有时我看到人们将原始CSS和javascript都应用于全局CSS样式html,有时我看到他们将其应用于body

两者之间有什么区别吗?制作全局CSS样式的标准是什么?在它们之间进行选择时,我应该知道什么吗?


问题答案:

我假设这里的“全局页面样式”是指诸如字体,颜色和背景之类的东西。

就个人而言,我申请的全球页面样式,在大多数情况下,以body和简单的元素选择(ph1, h2, h3...inputimg,等)。这些元素与向用户呈现HTML页面的内容更紧密相关。

我给这理由很简单:表现属性bgcolorbackgroundtexttopmarginleftmargin和其他人给予的body元素,而不是html元素。这些属性现在在级联中以极低的优先级转换为它们各自的CSS规则:

UA可以选择使用HTML源文档中的表示属性。如果是这样,则将这些属性转换为对应的CSS规则,其特异性等于0,并且将它们视为在作者样式表的开头插入。

我知道的大多数(如果不是全部)实现将body基于HTML等效项将它们转换为on的CSS规则。其他如linkalinkvlink将成为a:linka:activea:visited规则分别。

当然,应该指出的是,CSS本身并没有真正有任何语义它 本身
,因为它本身就是一种造型语言,它是从一个HTML文档的内容结构完全分开。尽管CSS2.1的介绍涵盖了样式化HTML文档的基础,但是请注意,本节称其为非规范性(或信息性);这意味着它没有为CSS实现者设置任何严格的规则。相反,它只是为读者提供信息。

也就是说,某些样式可以应用于html修改视口行为。例如,要隐藏页面滚动条,请使用:

html {
    overflow: hidden;
}

您还可以将规则同时应用于html以及body产生有趣的效果。有关详细信息和示例,请参见以下问题:

  • 将CSS应用于html,body和*有什么区别?
  • 将背景应用于和/或

注意这html不是视口;视口将建立一个初始的包含块html。该初始包含块不能用CSS定位,因为在HTML中,根元素是html

还需要注意的是,在技术上,有应用性能没有区别html,并body在默认情况下被继承,如font-familycolor

最后但并非最不重要的一点是,这是一篇出色的文章,详细介绍了CSS
之间html以及bodyCSS方面的区别。总结(引自第一节):

  • 所述htmlbody元素是不同的块级实体,在父/子关系。
  • 所述html元件的高度和宽度是由浏览器窗口控制。
  • html元素具有(默认情况下)overflow:auto,导致在需要时显示滚动条。
  • body元素(默认情况下)是position:static,这意味着它的定位子html 元素相对于元素的坐标系定位。
  • 在几乎所有现代浏览器中,通过元素上而 不是元素margin上的a来应用距页面边缘的内置偏移量。body``padding``html

作为根元素,html它与浏览器视口的关联度更高body(这就是为什么它说html具有overflow: auto滚动条的原因)。但是请注意,滚动条不一定是由html元素本身生成的。默认情况下,是由 视口
生成这些滚动条。的值overflow被简单地转移(或 传播
之间)bodyhtml和视口,这取决于哪些值设置。所有这些的细节都在CSS2.1规范中介绍,该规范说:

UA必须将在根元素上设置的“溢出”属性应用于视口。当根元素是HTML“ HTML”元素或XHTML“ html”元素,并且该元素具有HTML“
BODY”元素或XHTML“ body”元素作为子元素时,用户代理必须改为应用’overflow’属性如果根元素上的值是“
visible”,则从第一个此类子元素到视口。用于视口的“可见”值必须解释为“自动”。从中传播值的元素必须具有“可见”的“溢出”使用的值。

最后一个要点可能源于元素的上述topmarginleftmargin属性body



 类似资料:
  • 问题内容: 是否可以为元素定义CSS样式,仅在匹配的元素包含特定元素(作为直接子项)时才适用? 我认为最好用一个例子来解释。 注意 :我正在尝试设置 父元素的样式 ,具体取决于其包含的子元素。 注意2 :我知道我可以使用javascript来实现,但是我只是想知道是否可以使用一些(对我而言)未知的CSS功能。 问题答案: 据我所知,基于子元素设计父元素的样式不是CSS的可用功能。您可能需要为此编写

  • 本文向大家介绍在不播放动画时为元素设置CSS样式,包括了在不播放动画时为元素设置CSS样式的使用技巧和注意事项,需要的朋友参考一下 不播放动画时,使用animation-fill-mode属性设置元素的样式 示例

  • 本文向大家介绍如何在HTML元素中使用内联CSS样式?,包括了如何在HTML元素中使用内联CSS样式?的使用技巧和注意事项,需要的朋友参考一下 使用style 属性设置内联CSS样式。以下是语法- 语法 在这里,mystyles 是一个或多个CSS属性。用分号分隔它们。 示例 您可以尝试运行以下代码以为HTML中的元素实现内联CSS样式-

  • 主要内容:HTML 元素,HTML 元素语法,嵌套的 HTML 元素,HTML 文档实例,HTML 实例解析,不要忘记结束标签,HTML 空元素,HTML 提示:使用小写标签HTML 文档由 HTML 元素定义。 HTML 元素 开始标签 * 元素内容 结束标签 * <p> 这是一个段落 </p> <a href="default.htm"> 这是一个链接 </a> <br> 换行   *开始标签常被称为起始标签(opening tag),结束标签常称为闭合标签(closing tag)。 HT

  • HTML 文档由 HTML 元素定义。 HTML 元素 开始标签 * 元素内容 结束标签 * <p> 这是一个段落 </p> <a href="default.htm"> 这是一个链接 </a> <br> 开始标签常被称为起始标签(opening tag) 结束标签常称为闭合标签(closing tag)。 HTML 元素语法 HTML 元素以开始标签起始 HTML 元素以结束标签终止 元素的内容

  • 问题内容: 我敢肯定,这一定是以前提到过/提出来的,但是一直在寻找一个没有运气的年龄,我的术语一定是错误的! 我模糊地记得我前一段时间看到的一条推文,它暗示有一个CSS规则可用,该规则将删除样式表中先前为特定元素设置的所有样式。 一个很好的使用示例可能是在移动优先RWD网站中,在小屏幕视图中用于特定元素的许多样式需要针对桌面视图中的同一元素进行“重置”或删除。 一个css规则可以达到以下目的: 用