css 中 em 单位怎么用

news2024/11/10 10:37:24

em 是 css 中的一个相对长度单位,相对于当前对象内文本的字体尺寸;如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器默认字体尺寸。可以作用在 width、height、line-height、margin、border 等样式的设置上。

一、什么是 em

1.em 的长度

em 是 CSS 中的一个相对单位,它的单位长度是根据元素的文本垂直长度来决定的。可以作用在width、height、line-height、margin、padding、border 等样式的设置上。

1em = 元素中文本的 1 个垂直高度

根据上面的规则:如果元素中文本的大小为 16px ,那么 1em = 16px ; 如果元素中文本大小为20px , 那么1em = 20px ……

2.em与HTML文本大小默认值

浏览器中的文本一般默认为 16px ,也就是说,默认的情况下:

1em = 16px
body {
  font-size: 24px;
  width: 10em;    /* 10em = 24px * 10 = 240px */
}

3.em与继承

在 CSS 中,如果一个元素没有设置 font-size ,那么它的 font-size 值就是它父元素的 font-size 值,这很好理解,就是简单的继承而已。

<style>
  body {
    font-size: 12px;
  }
  div {
    /* 该元素没有设置font-size,因此继承了父元素的font-size: 12px; */
    width: 10em;    /* 10em = 12px * 10 = 120px */
  }
</style>
<body>
  <div></div>
</body>

需要注意的是,子元素 p 继承了父元素 body 的 font-size ,所以其实在p的样式表中隐含了一句“font-size: 12px;”。现在如果显性的为子元素设置 font-size 的话,那么子元素将按照自己的 font-size 计算 em 的绝对长度。

<style>
  body {
    font-size: 12px;
  }
  div {
    font-size: 20px;
    width: 10em;    /* 10em = 20px * 10 = 200px */
  }
</style>
<body>
  <div></div>
</body>

注意上例中 p 的 font-size 使用了 px 作为单位,那如果想使用 em 怎么办呢?需要注意的是,在设置 font-size 中使用 em 作为单位,那么 em 将是其父元素 font-size 的相对值。

<style>
  body {
    font-size: 12px;
  }
  div {
    font-size: 2em; /* 2em = 12px * 2 = 24px */
    width: 10em;    /* 10em = 24px * 10 = 240px */
  }
</style>
<body>
  <div></div>
</body>

子元素 p 的 font-size 是根据其父元素 body 的 font-size 确定的,因此 2em = 12px * 2, = 24px;而 p 的 width 是相对于自己的 font-size 确定的,因此10em = ( 12px * 2 ) * 10 = 240px。所以 p 中2em=24px,10em=240px 也就不奇怪了。

事实上,不仅是 width,子元素中除了 font-size 的 em 是根据父元素的 font-size 确定的,其他所有 em 都是根据自身的 font-size 确定的。

<style>
  body {
    font-size: 16px;
  }
  div {
    font-size: 1.25em;  /* 1.25em = 16px * 1.25 = 20px */
    width: 10em;    /* 10em = 20px * 10 = 200px */
    height: 5em;    /* 5em = 20px * 5 = 100px */
    border: 0.05em solid #000;  /* 0.05em = 20px * 0.05 = 1px */
    margin: 0.25em; /* 0.25em = 20px * 0.25 = 5px */
    padding: 0.75em;    /* 0.75em = 20px * 0.75 = 15px */
    line-height: 1.5em; /* 1.5em = 20px * 1.5 = 30px */
  }
</style>
<body>
  <div></div>
</body>

二、根据 px 计算出正确的 em

1.使用PXtoEM计算器

使用在线工具 PXtoEM(http://pxtoem.com/)可以轻松快捷的根据 px 计算出所需要的 em 值。

2.手动计算em

由下面的例子可以反向推导出 px 转 em 的计算公式

<style>
  div {
    font-size: 16px;
    width: 2em; /* 2em = 16px * 2 = 32px */
  }
</style>

px = 参考文本大小 * em  =>  em = px / 参考文本大小

3.注意事项

上面的公式中,“ 参考文本大小”需要格外注意:

  • 如果元素自身设置了 font-size,那么参考文本大小就是自身的 font-size 大小

  • 如果元素自身没有设置 font-size,那么参考文本大小就是父元素的 font-size 大小

  • 为元素设置 font-size 时,如果使用 em 作为单位,那么参考文本大小是父元素的 font-size 大小

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

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

相关文章

消息队列-Kafka(概念篇)

1 为什么需要消息队列&#xff1f; 消息队列是一种基于消息的异步通信机制&#xff0c;用于在分布式系统中不同组件或服务之间传递数据和通知。实际上可以将消息队列看作为存放消息的容器&#xff0c;参与消息传递的分别称为生产者&#xff08;发送消息&#xff09;和消费者&am…

【macOS】【zsh报错】zsh: command not found: python

【macOS】【zsh Error】zsh: command not found: python 本地已经安装了Python&#xff0c;且能在Pycharm中编译Python程序并运行。 但是&#xff0c;在macOS终端&#xff0c;运行Python&#xff0c;报错。 首先要确认你在macOS系统下&#xff0c;是否安装了Python。 如果安…

打不开Qtcreator(This application fail to start...........)

目录 今天突然打不开Qtcreator,报错如下 解决方案 1.检查环境变量配置(我就是通过这个解决好的) 2.如果也弹出跟我一样的AMD窗口,可以更新AMD驱动试试 3.重装qtcreator 4.检查 qtcreator下的bin\plugins\platforms是否缺少提示的相关.dll文件 总结 今天突然打不开Qtcreat…

马来西亚交通标志检测系统源码分享

马来西亚交通标志检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Comp…

VSCode语法提示的配置

ctrlshiftP打开Command Palette,运行C/Cpp: Edit configurations...生成c_cpp_properties.json c_cpp_properties.json是什么&#xff1f; 这个文件主要是用于VSCode语法提示的配置&#xff0c;例如&#xff1a;指定 include 路径&#xff0c;问题匹配类型等。CtrlShiftP打开C…

nvm list available报错Could not retrieve https://nodejs.org/dist/index.json.

今天在查看nvm list available时出现如下错误&#xff1a; 首先找到nvm所在文件夹settings.txt 打开此文件后&#xff0c;加入两段代码&#xff0c;如果有就替换掉 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror: https://npmmirror.com/mirrors/npm/ 再次运行…

Android轻量级RTSP服务使用场景分析和设计探讨

技术背景 好多开发者&#xff0c;对我们Android平台轻量级RTSP服务模块有些陌生&#xff0c;不知道这个模块具体适用于怎样的场景&#xff0c;有什么优缺点&#xff0c;实际上&#xff0c;我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景&#…

golang操作mysql利器-gorm

1、傻瓜示例 GORM通过将数据库表中的数据映射到面向对象的模型中&#xff0c;简化了数据库操作&#xff0c;使得开发者可以很方便的使用代码来操作数据库&#xff0c;而无需编写SQL语句。 目前有个mysql表&#xff1a;miniprogram_orders&#xff0c;其存储了所有用户对应的订…

PyCharm和VS Code 安装通义灵码,可本地安装包安装,解决插件安装不上问题

PyCharm和VS Code 安装通义灵码&#xff0c;可本地安装包安装&#xff0c;解决插件安装不上问题 PyCharm、VS Code 安装通义灵码介绍主要应用场景支持编程语言安装指南JetBrains IDEs 中安装指南步骤 1&#xff1a;准备工作步骤 2&#xff1a;在 JetBrains IDEs 中安装通义灵码…

实验3 Hadoop集群运行环境搭建和使用

实验3 Hadoop集群运行环境搭建和使用 一、实验介绍 本节实验旨在引导学生通过实际操作搭建一个基本的Hadoop集群,并进行基本的使用验证。实验包括在集群节点上添加域名映射以实现节点间的相互识别,配置免密SSH登录以便无密码访问各节点,安装和配置JDK以满足Hadoop的运行需求…

Flink1.18.1 Standalone模式集群搭建

Flink1.18.1 Standalone模式集群搭建 Flink1.18.1 Standalone模式集群搭建1. 环境准备1.1 Flink下载地址1.2 集群角色分配 2. Flink 集群安装步骤2.1 下载并解压 Flink2.2 解压安装包2.3 配置环境变量2.4 配置 SSH 免密登录 3. 配置 Flink 集群3.1 修改 flink-conf.yaml 配置文…

jmeter得到的文档数据处理

通过前面jmeter得到的输出文档&#xff0c;这里是txt文档&#xff0c;里面包含了很多条数据&#xff0c;每条数据的结构如下&#xff1a; 【request】 uuid&#xff1a;xxxxxxx timestamp&#xff1a;xxxxxxxx No.x question&#xff1a;xxxxxxx 【response】 code&#…

DMA学习

一、DMA简介 DMA是一种无需CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制。使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来&#xff0c;从而大大提高系统的吞吐率。 DMA方式的数据传输由DMA控制器&#xff08;DMAC&#xff09;控制&#xff0c;在传…

sensitive-word 敏感词 v0.20.0 数字全部匹配,而不是部分匹配

敏感词系列 sensitive-word-admin 敏感词控台 v1.2.0 版本开源 sensitive-word-admin v1.3.0 发布 如何支持分布式部署&#xff1f; 01-开源敏感词工具入门使用 02-如何实现一个敏感词工具&#xff1f;违禁词实现思路梳理 03-敏感词之 StopWord 停止词优化与特殊符号 04-…

AAAI2024--频谱在多模态表示和融合中的作用更为有效:A Multimodal Spectrum Rumor Detector

https://github.com/dm4m/FSRU 多模态内容&#xff0c;如将文本与图像混合&#xff0c;对社交媒体中的谣言检测提出了重大挑战。现有的多模态谣言检测侧重于在空间和序列位置之间混合令牌进行单模态表示&#xff0c;或者在模态间融合谣言真实性的线索。然而&#xff0c;它们受…

将本地离线Jar包上传到Maven远程私库上,供项目编译使用

背景 因项目对接需求&#xff0c;需对接第三方Jar(海康人脸识别服务网关API)&#xff0c;在项目集成时&#xff0c;处于本地编译、远程持续构建的需要将离线Jar推送到远程Maven仓库。 实施步骤 进入到离线Jar包同文件夹下 配置Maven配置文件中远程账户信息 需要在Idea配置的…

Java 数据类型转换详解:隐式转换(自动转换)与强制转换(手动转换)

目录 前言 取值范围从小到大的关系&#xff1a; 隐式转换&#xff08;自动转换&#xff09; &#x1f4dc;示例 1&#xff1a;基本类型隐式转换 &#x1f4dc;示例 2&#xff1a;算术运算中的类型提升 &#x1f4dc;示例 3&#xff1a;byte、short 和 char 的自动转换 隐…

Hive基本原理与数据开发

目录 1.什么是Hive 2.Hive的特点和优势 2.1.Hive的特点 2.1.1.易用性 2.1.2.高效性 2.1.3.兼容性 2.1.4.可扩展性 2.1.5.容错性 2.2.与传统数据库的区别 3.hive的架构 3.1.hive的核心组件(如 Metastore、Driver、Query Compiler、Execution Engine 等) 3.1.1.用户接…

Apache的ab压力测试工具与性能监控

【图书介绍】《软件性能测试、分析与调优实践之路&#xff08;第2版&#xff09;》_软件性能测试分析与调优实践之路-CSDN博客《软件性能测试、分析与调优实践之路&#xff08;第2版&#xff09;》(张永清)【摘要 书评 试读】- 京东图书 (jd.com) Apache的ab压力测试工具 A…

go语言中的切片详解

1.概念 在Go语言中&#xff0c;切片&#xff08;Slice&#xff09;是一种基于数组的更高级的数据结构&#xff0c;它提供了一种灵活、动态的方式来处理序列数据。切片在Go中非常常用&#xff0c;因为它们可以动态地增长和缩小&#xff0c;这使得它们比固定大小的数组更加灵活。…