当前位置:首页 > 科技  > 软件

揭开空白网页背景色的神秘面纱

来源: 责编: 时间:2024-02-01 12:51:05 324观看
导读前言一个看似简单实则有坑的问题:空白网页的背景色是什么?大家是不是都会认为是白色,但事实并非如此,有时候我们眼睛看到的也不一定是真的。页面根元素背景色比如下面这段代码:<!-- ... --><style> body { background-

前言

一个看似简单实则有坑的问题:空白网页的背景色是什么?HB928资讯网——每日最新资讯28at.com

大家是不是都会认为是白色,但事实并非如此,有时候我们眼睛看到的也不一定是真的。HB928资讯网——每日最新资讯28at.com

页面根元素背景色

比如下面这段代码:HB928资讯网——每日最新资讯28at.com

<!-- ... --><style>  body {    background-color: skyblue;  }</style><body>    前端南玖</body>

这样我们能够看到整个页面都变成蓝色。HB928资讯网——每日最新资讯28at.com

HB928资讯网——每日最新资讯28at.com

看到这里可能有人会觉得是body填充了整个视图,但稍微有经验的同学知道,body的高度在没定义时应该是里面的内容撑起的HB928资讯网——每日最新资讯28at.com

不信我们可以为body加上边框再来观察:HB928资讯网——每日最新资讯28at.com

body {  background-color: skyblue;  border: 1px dashed black;}

HB928资讯网——每日最新资讯28at.com

那么问题又来了:既然body的高度只有内容区域那部分,那为什么整个页面的背景色都变成了蓝色?HB928资讯网——每日最新资讯28at.com

我们可以在w3c规则中找到Backgrounds of Special Elements这一节,可以看到这些内容:HB928资讯网——每日最新资讯28at.com

  1. 画布是呈现文档的无限平面。
  2. 根元素的背景成为画布背景,其背景绘制区域扩展到覆盖整个画布。

看到这两句话是不是就能够理解为什么body的高度只有内容区域那部分,而整个页面的背景色都变成蓝色了。这是因为根元素的背景色绘制再了整个画布上HB928资讯网——每日最新资讯28at.com

那这跟空白网页的背景是什么颜色也没关系呀?HB928资讯网——每日最新资讯28at.com

别急,在w3c规则中还有这样一句话:HB928资讯网——每日最新资讯28at.com

根元素不会再次绘制这个背景,也就是说,根元素的背景色是透明的。HB928资讯网——每日最新资讯28at.com

因为对于浏览器来说把根元素背景与画布背景绘制成同一个颜色是没有意义的!HB928资讯网——每日最新资讯28at.com

影响画布的根元素除了body,还有htmlHB928资讯网——每日最新资讯28at.com

比如我们再加上这段代码HB928资讯网——每日最新资讯28at.com

html {  background-color: red;  border: 3px dashed seagreen;}

我们为html加上了背景色及边框,大家可以思考下此时的页面会怎样渲染呢?HB928资讯网——每日最新资讯28at.com

HB928资讯网——每日最新资讯28at.com

这里我们可以看到html的背景色取代了body的背景色成为了画布的背景色,而html本身高度也是内容撑起的高度。HB928资讯网——每日最新资讯28at.com

这样就能够证明空白网页的根元素背景色是透明的,而不是我们认为的白色HB928资讯网——每日最新资讯28at.com

画布背景色

既然空白网页根元素的背景色是透明的,那我们看到的白色会不会是画布的颜色呢?HB928资讯网——每日最新资讯28at.com

这里我们可以使用CSS中的mix-blend-mode混合颜色来验证:HB928资讯网——每日最新资讯28at.com

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Document</title>    <style>        .name {            color: green;            mix-blend-mode: difference        }    </style></head><body>    <div class="name">前端南玖</div></body></html>

这里如果画布的背景色是白色的话,那此时的文字颜色应该会变成粉色 between(绿色 + 白色)= 粉色HB928资讯网——每日最新资讯28at.com

HB928资讯网——每日最新资讯28at.com

但事实上文字颜色还是绿色,我们再来给body添加一个白色的背景HB928资讯网——每日最新资讯28at.com

body {  background-color: white;  border: 1px dashed black;}.name {  color: green;  mix-blend-mode: difference}

HB928资讯网——每日最新资讯28at.com

此时可以看到文字颜色变成了粉色。HB928资讯网——每日最新资讯28at.com

所以这里可以证明空白网页的画布背景色也是透明的。HB928资讯网——每日最新资讯28at.com

浏览器底色

上面两个例子我们分别证明了空白网页的根元素背景色以及画布的背景色都是透明的。那么我们看到的“白色”到底是哪里来的?HB928资讯网——每日最新资讯28at.com

在w3c中还有这样一句话:HB928资讯网——每日最新资讯28at.com

HB928资讯网——每日最新资讯28at.com

如果画布背景不是不透明的,则其下方的画布表面会显示出来。画布表面的纹理取决于 UA(但通常是不透明的白色)。HB928资讯网——每日最新资讯28at.com

所以,我们看到的所谓白色其实是浏览器的底色。HB928资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-70447-0.html揭开空白网页背景色的神秘面纱

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 前端性能优化 — 保姆级 Performance 工具使用指南

下一篇: 一篇文章带你了解JavaScript for循环

标签:
  • 热门焦点
  • vivo TWS Air开箱体验:真轻 臻好听

    在vivo S15系列新机的发布会上,vivo的最新款真无线蓝牙耳机vivo TWS Air也一同发布,本次就这款耳机新品给大家带来一个简单的分享。外包装盒上,vivo TWS Air保持了vivo自家产
  • 如何正确使用:Has和:Nth-Last-Child

    我们可以用CSS检查,以了解一组元素的数量是否小于或等于一个数字。例如,一个拥有三个或更多子项的grid。你可能会想,为什么需要这样做呢?在某些情况下,一个组件或一个布局可能会
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了&mdash;&mdash;贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 网传小米汽车开始筛选交付中心 建筑面积不低于3000平方米

    7月7日消息,近日有微博网友@长三角行健者爆料称,据经销商集团反馈,小米汽车目前已经开始了交付中心的筛选工作,要求候选场地至少有120个车位,建筑不能低
  • 三星Galaxy Z Fold5今日亮相:厚度缩减但仍略显厚重

    据官方此前宣布,三星将于7月26日也就是今天在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
Top