首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS中HTML和Body到底有什么区别?「前端每日一题v22.11.20」

CSS中HTML和Body到底有什么区别?「前端每日一题v22.11.20」

作者头像
FE情报局
发布2022-12-05 10:22:02
6010
发布2022-12-05 10:22:02
举报
文章被收录于专栏:FE情报局FE情报局

CSS中HTML和Body到底有什么区别?「前端每日一题v22.11.20」

背景

在我们日常的开发中,经常会把一些样式写在body上,比如页面的最小宽度,最小高度,以及初始化的一些属性

如果body上不生效,我们常用的做法就是再往html上写一份,但是这两个具体的区别有哪些,其实作为我们来说通常是不关心的,毕竟对我们日常开发来说,没有任何的影响,无非就是多加一个

作为一个开发人员,对于事物的了解不能只停留在表层,这篇文章将结合实例,了解这两者具体的区别,以及一些属性设置在html和body上的区别,优缺点,日常开发我们应该怎么处理这些css

Html和Body

先看一下最基本的HTML文档结构

<!DOCTYPE html>
<html lang="en">
  <head>
    ...
  </head>
  <body>
    ...
  </body>
</html>

我们都知道,一个html文档的最顶层的标签是html标签,然后从html开始,下面有head和body两个子标签。从这里看,那是不是我们选择器选到html就OK了?

确实是这样,选择到html就相当于是根元素,那可能就有人问了,css中不是还有个:root伪类么?root其实指代的就是文档元素的根元素,那对html来说其实就是html元素,所以它们两个是等价的,但是:root优先级更高

:root {

}
html {

}

问题

既然html是根元素,那是不是我们就应该将全局样式写在html上?毕竟这样的话所有的子元素都能够继承html上面的样式,这样body可以继承,body下面的元素也能继承

实际上,下面这几个属性在规范上最初是给到body的

  • background
  • background-color
  • margin-bottom
  • margin-left
  • margin-right
  • margin-top
  • font

这些属性源头来自body,那么我们应该将这些属性设置在body上,而不是html上

那这样是不是就代表我们应该把全局样式放在body上?

也不是,分情况,比如下面的情况更适合放在html上

事例

1. 项目中使用rem

当你项目中使用rem作为基本单位的时候,这个时候rem的基准为根元素字体大小,所以你需要将字体大小设置在html上

2. 背景颜色

css中有一个奇怪的点,那就是在body上设置背景颜色会铺满整个屏幕,不论你的内容是否铺满整个屏幕,举个例子

<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    body{
      background-color: red;
    }
  </style>
</head>
<body>
  <h1>FE情报局</h1>
</body>
</html>

这种情况下我的整个视图都是红色的,即使我body中没有内容,并且即便我添加了一个内容,整个视图也是红色的

这个时候你只需要在html上设置一个背景颜色,这个状态就会消失

希望根据这两个例子能够说明html和body的差异,当然,这个差异在javascript中也比较明显

  • html: document.rootElement
  • body: document.body

html vs body[1]

Reference

[1]

参考文章: https://css-tricks.com/html-vs-body-in-css/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FE情报局 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • Html和Body
  • 问题
  • 事例
    • 1. 项目中使用rem
      • 2. 背景颜色
        • Reference
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档