热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CSS百分比单位的取值依据是什么

本文详细探讨了CSS中百分比单位的取值依据,包括不同定位方式下的包含块概念及其应用。通过具体的示例和代码,帮助读者更好地理解和掌握这一知识点。

本文将详细探讨 CSS 中百分比单位的取值依据,帮助读者更好地理解和掌握这一知识点。

百分比单位是一个相对长度单位,其值取决于包含块(containing block)的尺寸。包含块的概念不能简单地理解为父元素,而是根据不同的定位方式来确定。

对于静态定位和相对定位的元素,包含块通常是其父元素,因此百分比值相对于父元素的尺寸来计算。

对于绝对定位的元素,包含块是离它最近的 position 非 static 属性的祖先元素,因此百分比值相对于该祖先元素的尺寸来计算。

对于固定定位的元素,包含块是视口(viewport),因此百分比值相对于视口的尺寸来计算。

实现代码:

CSS 百分比单位的取值依据

结果图:

CSS 百分比单位的取值依据

从图中可以看出:设置 5em 的 div 第一行字符刚好为 5 个字符大小,因为它是相对于当前元素字体的尺寸,宽度占用 90px,5 × 18 = 90px。设置 5rem 的 div 第一行字符要小一些,因为它是相对于根元素字体大小(默认为浏览器大小 16px),比 18px 小一些,宽度占用 80px,5 × 16 = 80px。设置百分比显示的第一行最大,因为它是相对于父元素的尺寸比例,宽度占用 160px,200 × 80% = 160px。

常见场景中的百分比单位的使用

(1)盒模型中的百分比

CSS 盒模型包含的属性有:width、max-width、min-width、height、max-height、min-height、padding、margin 等。这些属性在使用百分比时,参照物不尽相同:

  • width、max-width、min-width:值为百分比时,其相对于包含块的 width 进行计算;
  • height、max-height、min-height:值为百分比时,其相对于包含块的 height 进行计算;
  • padding、margin:值为百分比时,如果是水平的值,就是相对于包含块的 width 进行计算;如果是垂直的值,就是相对于包含块的 height 进行计算。

(2)文本中的百分比

CSS 中文本控制的属性有 font-size、line-height、vertical-align、text-indent 等。这些属性在使用百分比时,参照物不尽相同:

  • font-size:根据父元素的 font-size 进行计算;
  • line-height:根据 font-size 进行计算;
  • vertical-align:根据 line-height 进行计算;
  • text-indent:如果是水平的,则根据 width 进行计算;如果是垂直的,则根据 height 进行计算。

(3)定位中的百分比

CSS 中用于控制 position 位置的 top、right、bottom、left 都可以使用百分比作为单位。其参照物就是包含块的同方向的 width 和 height。不同定位的包含块不尽相同:

  • 如果元素为静态(static)或相对定位(relative),包含块一般是其父容器;
  • 如果元素为绝对定位(absolute),包含块应该是离它最近的 position 为 absolute、relative 或 fixed 的祖先元素;
  • 如果元素为固定定位(fixed),包含块就是视窗(viewport)。

(4)变换中的百分比

CSS 中的 transform 属性中的 translate 和 transform-origin 值也可以设置百分比。

  • translateX() 根据容器的 width 计算;
  • translateY() 根据容器的 height 计算;
  • transform-origin 中横坐标(x)相对于容器的 width 计算;纵坐标(y)相对于容器的 height 计算。

注意,在 translate 还有一个 z 轴的函数 translateZ()。它是不接受百分比为单位的值。

百分比的继承

如果某个元素设置了百分比的属性,则后代元素继承的是计算后的值。例如:

p { font-size: 10px; line-height: 120%; }

那么 p 的子元素继承到的值是 line-height: 12px,而不是 line-height: 120%

感谢各位的阅读,以上就是“CSS 百分比单位的取值依据是什么”的内容了,经过本文的学习后,相信大家对 CSS 百分比单位的取值依据有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程笔记,小编将为大家推送更多相关知识点的文章,欢迎关注!


推荐阅读
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 鼠标悬停出现提示信息怎么做
    概述–提示:指启示,提起注意或给予提醒和解释。在excel中会经常用到给某个格子增加提醒信息,比如金额提示输入数值或最大长度值等等。设置方式也有多种,简单的,仅为单元格插入批注就可 ... [详细]
  • 本文详细介绍如何使用 HTML5 和 JavaScript 实现一个交互式的画板功能。通过具体代码示例,帮助读者理解 Canvas API 的基本用法及其在绘图应用中的实际应用。 ... [详细]
  • 本文详细探讨了如何通过分析单个或多个线程在瓶颈情况下的表现,来了解处理器资源的消耗。无论是单进程还是多进程环境,监控关键指标如线程数量、占用时间及调度优先级等,有助于揭示潜在的性能问题。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • 本文探讨了如何利用NFC技术,将存储在Android手机中的患者信息安全高效地传输到台式计算机。重点介绍了适用于医院场景的NFC USB读卡器(如ACR122U)的应用方法。 ... [详细]
author-avatar
三生石512606
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有