CSS13_由html{height: 100%} 引发的CSS百分比宽高度的思考

news2024/11/17 21:30:49

一、html, body { height:100% }

CSS有一个常见设置:html,body{ height:100% },可能大家已经熟视无睹了,但细细思索,可能会有些奇怪,为什么html还需要设置height:100%呢?html不就代表整个页面了吗?
但当把html不设置height: 100%时,即使给body设置height:100%,整个页面也没有高度(子元素未设置固定高度或高度为百分比)

二、理论基础

我们首先需要知道的是

  • inline元素不可以设置宽高,默认宽度和高度被内容撑开
  • block元素默认宽度占满父元素(独占一行),默认高度由自己撑开
  • inline-block元素可以设置宽高,但默认宽度和高度由自身撑开

重点:

  • blockinline-block 设置百分比宽度时,基准都为父 / 祖先元素 (如果父元素未设置宽度,则继续向上找,直到body宽度)
  • blockinline-block 设置百分比高度时,基准只为父元素,若父元素未设置高度,爷元素有,也只由内容撑开!!!(因为父元素不设置高度即被子元素撑开)
    • 此时的情况是父元素高度依赖子元素堆砌撑高,而子元素依赖父元素的定高起作用,互相依赖,却都无法依赖,死循环了。

三、回到问题

假设页面中只有一个div,则div的父元素是bodybody的父元素是html,都通过height:100%层层向上,找到顶级获取定高。

那么htmlbody都设置height:100%,那html的上级是谁呢?

其实,浏览器可以分配块级元素的宽度,那么浏览器也一定可以分配高度(只是没有),那么浏览器本身是有宽度和高度的,设置htmlheight:100%,就可以获取浏览器的定高了,后面的body和div也就有了依赖。

四、背景颜色的补充

当我们给html和body同时设置background-color时,给body一个固定宽高,(通常不会这么干),但显而易见,红色会覆盖在cyan色上面。

html{
  height: 100%;
  background-color: cyan;
}
body{
  width: 200px;
  height: 200px;
  background-color: red;
}

在这里插入图片描述
但当我们将html背景色移除时,奇怪的事情发生了,即使body固定宽高为200px,红色的背景色依然遍布全屏!(而不是在200px*200px的方框中)
在这里插入图片描述
由此可以得出:

  • html标签无background-color时,浏览器的背景色为bodybackground-color,因而会占满全屏。
  • 当html标签含有background-color时,bodybackground-color只会在body标签中渲染,而此时的浏览器的背景色为html标签设置的背景色。

参考博文:

  • 由html,body{height:100%}引发的对html和body的思考
  • 对html与body的一些研究与理解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]java毕业设计网上书店管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SpringBoot项目使用JSP

SpringBoot不推荐使用JSP,而是使用模板技术代替JSP视图 先创建个SpringBoot项目 使用JSP需要如下配置 加入一个处理JSP的依赖(使用该JSP依赖原因是SpringBoot的jar包是内嵌了一个Tomcat因此要用这个Jar包,如果你的SpringBoot需要打成war包,不使用内嵌Tomcat,可用通用的JSP依赖…

深度学习基础--神经网络(3)神经网络的学习,损失函数初识

文章目录神经网络的学习从数据中学习数据区分损失函数均方误差交叉熵误差mini-batch学习损失函数更新的思路本文为学习笔记整理参考书籍:《深度学习入门 : 基于Python的理论与实现 》/ (日) 斋藤康毅著 ; 陆宇杰译. – 北京 : 人民邮电出版社, 2018.7(20…

Android插件式换肤以及资源加载流程分析

前言 APP更换皮肤的方式有很多,如系统自带的黑夜模式、插件换肤、通过下发配置文件加载不同主题等等,我们这里就浅谈下插件换肤方式。想实现插件换肤功能,我们就需要先弄清楚 :APP是如何完成资源加载的。 资源加载流程 这里我们以ImageVie…

植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(中)

植物大战僵尸变态辅助开发系列教程(E语言实现和VC6实现)(中)26、第一种方法实现变态加速功能27、第二种方法找出变态攻击加速的方法28、加快阳光、金币生产速度29、全屏僵尸29、全屏减速第一课30、全屏减速第二课31、全屏奶油的找…

(Transferrin)TF-PEG-DBCO/TCO/tetrazine 转铁蛋白-聚乙二醇-二苯基环辛炔/反式环辛烯/四嗪

产品名称:转铁蛋白-聚乙二醇-二苯基环辛炔 英文名称:(Transferrin)TF-PEG-DBCO 质量控制:95% 原料分散系数PDI:≤1.05 存储条件:-20C,避光,避湿 用 途:仅供科研实验使用&#xff0c…

Android App开发动画特效中插值器和估值器的讲解以及利用估值器实现弹幕动画实战(附源码和演示视频 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、插值器和估值器 插值器用来控制属性值的变化速率,也可以理解为动画播放的速度,默认是先加速再减速。若要给动画播放指定某种速率形式,调用setInterpolator方法设置对应的插值器实现类即可…

Spring Boot 分离配置文件的 N 种方式

今天聊一个小伙伴在星球上的提问: 问题不难,解决方案也有很多,因此我决定撸一篇文章和大家仔细说说这个问题。 1. 配置文件位置 首先小伙伴们要明白,Spring Boot 默认加载的配置文件是 application.properties 或者 application…

【云计算大数据_牛客_Hbase】选择/判断——Hbase

1.Hive 1.下面关于Hive metastore的三种模式的描述错误的是() Derby方式是内嵌的方式,也是默认的启动方式,一般用于单元测试local模式中,使用MySQL 本地部署实现metastoreremote模式为远程MySQLDerby方式在同一时间只能有多个进程连接使用数据库 2. 百度文库 2、代码sel…

Android App开发中集合动画和属性动画的讲解及实战演示(附源码 简单易懂 可直接使用)

需要图片集和源码请点赞关注收藏后评论区留言~~~ 一、集合动画 有时一个动画效果会加入多种动画,比如一个旋转一边缩放,这时便会用到集合动画AnimationSet把几个补间动画组装起来,实现让某视图同时呈现多种动画的效果 因为集合动画和补间动…

Jetson Orin使用Yolo5开源数据集训练模型检测口罩

软硬件环境: 乌班图 20.04 64位蟒蛇与 3.8.10英伟AGX Orin库达11.4PyTorch1.12YOLOv5-6.1感谢开源数据集下载地址 正常都是自己收集完了训练,今天就省略这个步骤了。 如果想自己制作看下面的流程。 软硬件环境搭建教程链接 刷机的话使用官方教程或者…

DNS协议

DNS服务器 人类更喜欢记忆主机名,而路由器更喜欢定长的、有结构层次的IP地址,DNS应运而生:DNS能进行主机名到IP地址转换的目录服务。 DSN是: (1)一个由分层的DNS服务器(DNS server)实…

元数据管理-解决方案调研二:元数据管理解决方案——Saas/内部解决方案(2)

Saas/内部解决方案 2.5、Azure Purview 地址:Azure Purview - Unified Data Governance Solution | Microsoft Azure 特点: 1、创建跨整个数据资产的统一数据地图,为有效的数据治理和使用奠定基础 1.1、自动化和管理混合源的元数据&#xf…

重打包实现frida持久化 笔记

修改Dex Using Frida on Android without root 修改so [翻译]在未root的设备上使用frida 2个方法本质都是通过重打包让app自己加载frida-gadget.so (但感觉没有谁家app会让人轻易重打包吧。。。) apktool d org.telegram.messenger_4.8.4-12207.apk -r…

Tomcat配置SSL证书别名tomcat无法识别密钥项

Tomcat配置SSL证书一直启动失败,主要问题如下: java.io.IOException: Alias name tomcat does not identify a key entry at org.apache.tomcat.util.net.jsse.JSSEUtil.getKeyManagers(JSSEUtil.java:280) 别名tomcat无法识别密钥项,是因…

STM32单片机远程控制大棚种植系统

想要更多项目私wo!!! 一、电路设计 ​​​​​系统示意图硬件系统 系统由五个单片机系统组成的,其中51系列的单片机四个,STM32F407单片机一个,各个子系统之间通过NRF24L01无线模块进行通信。 系统硬件组成框图​​​​主控制板主要由STM32…

【VuePress2.0】快速开始(不用)

文章目录VuePress2.x1.1 安装安装VuePress2.x(手动安装)1.2 VuePress2.x 基本操作VuePress2.x主题2.1 安装VuePress2.x主题(yarn)2.2 报错解决(没效果,不用看)2.3 VuePress2.x主题 基本操作VueP…

Java基础深化和提高-------IO流

目录 IO流技术介绍 什么是IO 什么是数据源 流的概念 第一个简单的IO流程序 IO流的经典写法 IO流新语法经典写法 Java中流的概念细分 按流的方向分类: 按处理的数据单元分类: 按处理对象不同分类: Java中IO流类的体系 Java中IO的四大抽象…

CleanMyMac X真正好用的Mac电脑系统优化软件应用工具

最用户友好的Mac问题修复程序。删除系统垃圾、不需要的应用程序和恶意软件,并调整您的Mac以获得最高速度。对于速度较慢的计算机,CleanMyMac就能立即使用。 CleanMyMac2023之所以能够获得众多Mac的老用户们的喜爱,是因为其有着非常强大功能提…

数据可视化之大数据平台可视化

一 前言 在简化数据量和降低大数据应用的复杂性中,大数据分析发挥着关键的作用。可视化是其中一个重要的途径,它能够帮助大数据获得完整的数据视图并挖掘数据的价值。大数据分析和可视化应该无缝连接,这样才能在大数据应用中发挥最大的功效。…