浅析 em 和 rem

news/2024/12/27 4:23:13/

em 和 rem 都是相对长度单位
em 是相对于父级元素的font-size 大写来定义自身的大小
rem 是相对于根节点(html{}, body{}, :root{})font-size来定义大小

Talk is cheap, show me the code !(空谈无用,上代码)

em

<html><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><title>em demo</title><meta name="description" content=""><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href=""><style>* {margin: 0;padding: 0;}/*1. 浏览器默认的字体大小是 16px,所以 1em = 16px2. 使用 em 时如果嵌套的子元素过多,而且子元素会继承父元素的 font-size 属性,使得的计算起来比较繁琐, 先检查自身有没有 font-size属性,如果有则使用自身的,3. 如果没有,则查看父级元素的 font-size值4. 因此不推荐使用 em,替代方案是 rem (root element)*/.div {width: 20em;height: 20em;font-size: 20px;background-color: skyblue;margin: 0 auto;margin-top: 15px;}.div1 {/*如果自身没有 font-size这个属性,则使用父级的font-size属性值*/width: 15em; height: 15em;background-color: lightblue;}   .div2 {/*如果自身有 font-size这个属性,则使用自身的属性值*/font-size: 10px;width: 10em;height: 10em;background-color: lightgreen;}.div3 {/*div3 自身没有 font-size属性,则使用父级 div2 的 font-size值*/width: 8em;height: 8em;background-color: lightpink;}</style></head><body><div class="div">我是 div<div class="div1">我是 div1<div class="div2">我是 div2<div class="div3">我是 div3</div></div></div></div></body>
</html>

rem

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>rem demo</title><style>* {margin: 0;padding: 0;}/* :root {font-size: 30px;}html {font-size: 50px;} *//*1. 浏览器默认的字体大小是 16px,所以 1rem = 16px2. :root{} 就等同于 html{},总之,是根元素3. 因此不推荐使用 em,替代方案是 rem (root element)4. 1rem = 16px*/html {font-size: 20px;}.div {width: 20rem;height: 20rem;background-color: lightblue;}.div1 {width: 15rem;height: 15rem;background-color: lightgreen;}.div2 {width: 160px;height: 160px;font-size: 16px;background-color: lightgray;}</style>
</head>
<body><div class="div">我是 div 元素</div><div class="div1">我是 div1 元素</div><div class="div2">我是 div2 元素</div>
</body>
</html>

em和rem


http://www.ppmy.cn/news/1885.html

相关文章

【深度学习】常用算法生成对抗网络、自编码网络、多层感知机、反向传播等讲解(图文解释 超详细)

觉得有帮助请点赞关注收藏~~~ 一、生成对抗网络GAN Generative Adversarial Network 两个组件组成&#xff1a;一个生成器&#xff0c;用于生成虚拟数据&#xff0c;另一个是鉴别器&#xff0c;用于(GAN)生成式深度学习算法&#xff0c;可创建类似于训练数据的新数据实例。 G…

SpringBoot的创建的使用

哈喽呀&#xff0c;你好呀&#xff0c;欢迎呀&#xff0c;快来看一下这篇宝藏博客吧~~~ 目录 1、Spring Boot快速扫盲 2、Spring Boot 项目创建 3、运行项目 4 、输出hello world 5、注意事项--包路径错误 6、小结 1、Spring Boot快速扫盲 在创建SpringBoot项目前,我们得…

postgresql 数据库导出和导入

简介 本篇文章主要介绍PostgreSQL库和表的导出和导入以及常用的数据库管理工具的使用 一、数据库的导出和导入 1. 使用pgAdmin导出和导入数据库 导出 导入 新建数据库&#xff0c;右键Restore 2. 使用Navicate导出和导入数据库 导出 选择要导出的数据库&#xff0c;点…

数据库 - [ 视图 事务 ]

目录 视图 事务&#xff08;Transaction&#xff09; Oracle对象教程&#xff1a;视图(View)创建使用&#xff0c;视图(View)实际上是一张或者多张表上的预定义查询&#xff0c;这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即…

c++的构造函数赋值函数重载运算符等

文章目录一、前言二、正文1、拷贝构造函数2、赋值函数3、operator()() 重载()运算符4、类中方法前面的template5、类实例化的方式(1)调用构造函数实例化和指针实例化(2)类对象和类指针的区别(3) 类指针和智能指针的区别(4) 类指针和智能指针的转换三、后记一、前言 c的类的特殊…

前端入门学习笔记四十六

<!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><p>JavaScript 赋值运算符</p><p id "a"></p><script>var h 10;h / 3;document.getEl…

【小f的刷题笔记】(JS)数组 - 差分数组 LeetCode1109 LeetCode1094

【数组】 差分数组&#xff1a; &#x1f31f; 频繁对原始数组的某个区间的元素进⾏增减 ✔ 把每个数与前一个数的差值计算出来存在一个新数组里&#xff0c;区间的加减通过把新数组中区间开始下标的值加/减&#xff0c;区间结束下标对应的值减/加&#xff08;反一下&#x…

LSTM内部结构及前向传播原理——LSTM从零实现系列(1)

一、前言 作为专注于时间序列分析的玩家&#xff0c;虽然LSTM用了很久但一直没有写过一篇自己的LSTM原理详解&#xff0c;所以这次要写一个LSTM的从0到1的系列&#xff0c;从模型原理讲解到最后不借助三方框架自己手写代码来实现LSTM模型。本文本身没有特别独到之处&#xff0c…