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

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

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

前言

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

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

页面根元素背景色

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

画布背景色

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

这里我们可以使用CSS中的mix-blend-mode混合颜色来验证:xv928资讯网——每日最新资讯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(绿色 + 白色)= 粉色xv928资讯网——每日最新资讯28at.com

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

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

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

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

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

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

浏览器底色

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

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

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein&ldquo;利用市场支配力量强迫服装厂商与之签订独家
  • ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 当家的盒马,加速谋生

    来源 | 价值星球Planet作者 | 归去来自己&ldquo;当家&rdquo;的盒马,开始加速谋生了。据盒马官微消息,盒马计划今年开放生鲜供应链,将其生鲜商品送往食堂。目前,盒马在上海已经与
  • 消息称小米汽车开始筛选交付中心:需至少120个车位

    IT之家 7 月 7 日消息,日前,有微博简介为“汽车行业从业者、长三角一体化拥护者”的微博用户 @长三角行健者 发文表示,据经销商集团反馈,小米汽车目前
  • 超闭合精工铰链 彻底消灭缝隙 三星Galaxy Z Flip5与Galaxy Z Fold5发布

    2023年7月26日,三星电子正式发布了Galaxy Z Flip5与Galaxy Z Fold5。三星新一代折叠屏手机采用超闭合精工铰链,让折叠后的缝隙不再可见。同时,配合处
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top