CSS: HTML 和 Body 的区别
在 CSS 中,<html>
和 <body>
的区别往往被忽略,全局样式或者定义在 <html>
上,或者定义在 <body>
上。实际上,两者是有区别的,不论是 CSS 老鸟还是新手,都应该了解。
HTML 和 Body 如何关联
<!DOCTYPE html> <html lang="en"> <head> <!-- Metadata and such --> </head> <body> <!-- Where the content begins --> <body> </html>
根据标准定义,<html>
是文档的根元素,<head>
、<body>
是 <html>
唯一的两个子元素。按照规范,<head>
才是和 <body>
相对照、需要加以区别的元素。
因此,<html>
和 <body>
是父子关系。在 HTML 文档中,:root
选择符对应 <html>
元素。
:root { } html { }
需要注意的是,:root
选择符(伪类)的优先级大于 html
选择符:(0, 0, 1, 0)
vs (0, 0, 0, 1)
。
哪些全局样式应该应用在 HTML
html { font-size: 62.5%; } body { font-size: 1.4rem; /* =14px */ } h1 { font-size: 2.4rem; /* =24px */ }
古怪的 background-color
CSS 中有一些古怪的行为,将 background-color
应用到 <body>
以后,即便 <body>
里的元素没有占满视口,背景颜色也会蔓延到整个视口。
给 html
设置 background-color
可以解决这个问题。
height: 100%
如果 <body>
及其子元素的高度需要设置为窗口高度时,<html>
元素上也需要添加:
html, body { height: 100%; }
哪些全局样式应该应用在 Body
早期的规范中,<body>
有以下行内属性:
- background
- bgcolor
- marginbottom
- marginleft
- marginright
- margintop
- text
这些行内属性对应的 CSS 样式应该应用在 <body>
。
Inline Attribute | CSS Property |
background | background |
bgcolor | background background-color |
marginbottom | margin-bottom |
marginleft | margin-left |
marginright | margin-right |
margintop | margin-top |
text | font |
总结
本文列举了一些 <html>
和 <body>
在 CSS 中的区别,在 JavaScript 中同样存在区别,例如 html
对应 document.documentElement
、body
对应 document.body
。
了解二者的区别可以帮助我们更有效的编写 CSS。欢迎补充。
参考链接
via CSS-Tricks - HTML vs Body in CSS
原文:https://csspod.com/html-vs-body-in-css/
本文转自:CSS: HTML 和 Body 的区别
相关推荐
background-color: blue;background-color: yellow;<input type="button" value="变蓝" @click="changeColorT