CSS中的em,rem,vm,vh详解

一:`em` 和 `rem` 是两种相对单位,它们常用于 CSS 中来设置尺寸、字体大小、间距等,主要用于更灵活和响应式的布局设计。它们与像素(`px`)不同,不是固定的,而是相对于其他元素的尺寸来计算的。

 1. `em` (相对于父元素的字体大小)

- `em` 是一个相对单位,表示相对于 **父元素** 的字体大小来计算。
- 例如,如果一个元素的字体大小为 `2em`,它的实际大小就是其父元素字体大小的两倍。

示例:
css
div {font-size: 16px;  /* 父元素的字体大小是 16px */
}p {font-size: 2em;  /* p 的字体大小是父元素的 2 倍,即 32px */
}


在这个例子中,`div` 的字体大小是 `16px`,而 `p` 的字体大小是 `2em`,即 `32px`(相对于 `div`)。

注意: `em` 会继承父元素的尺寸,意味着如果在嵌套元素中使用,尺寸会累积,导致子元素的尺寸越来越大(或越来越小)。

例子:
css
div {font-size: 16px;
}section {font-size: 2em;  /* 相对于 div,section 的字体大小是 32px */
}article {font-size: 0.5em; /* 相对于 section,article 的字体大小是 16px */
}

在这个例子中:
- `section` 的字体大小是 `32px`(2倍 `div` 的大小),
- `article` 的字体大小是 `16px`(0.5倍 `section` 的大小)。

 2. `rem` (相对于根元素的字体大小)

- `rem` 也是相对单位,但它与 `em` 不同,`rem` 是相对于 **根元素(`<html>`)的字体大小** 来计算的。根元素的字体大小通常默认是 16px(可以在 CSS 中更改)。
- `rem` 提供了更稳定的尺寸计算,因为它只依赖于根元素的字体大小,而不受父元素的影响。

 示例:
css
html {font-size: 16px;  /* 根元素字体大小是 16px */
}p {font-size: 2rem;  /* p 的字体大小是根元素字体大小的 2 倍,即 32px */
}


在这个例子中,`p` 的字体大小是根元素字体大小的 2 倍,也就是 `32px`,无论它的父元素的字体大小是多少。

与 `em` 的不同之处:
- `rem` 只依赖于根元素的字体大小,不受父元素影响,避免了 `em` 在嵌套元素中可能带来的累积效果。

 3. 总结 `em` 和 `rem` 的区别:

| 单位 | 解释 | 基础参考 | 用途 |
| --- | ---- | -------- | ---- |
| `em` | 相对单位 | 父元素的字体大小 | 适用于需要根据父元素动态调整的场景。 
| `rem` | 相对单位 | 根元素(`<html>`)的字体大小 | 适用于确保一致的布局和尺寸,避免父元素影响。 

 4. `em` 和 `rem` 在响应式设计中的应用:

这两种单位非常适合响应式设计,因为它们可以根据根元素的字体大小或父元素的大小动态调整。你可以通过调整根元素的字体大小,来控制整个页面的尺寸变化。

 示例:
css
html {font-size: 16px;  /* 默认字体大小 */
}@media (max-width: 600px) {html {font-size: 14px;  /* 屏幕宽度小于 600px 时,根元素字体大小变为 14px */}
}


使用 `rem` 和 `em` 时,元素的尺寸会随着根元素或父元素的字体大小变化,适应不同的屏幕尺寸。

---

总结来说:
- `em` 用于相对于父元素的尺寸,适合需要继承父元素大小的场景;
- `rem` 用于相对于根元素的尺寸,适合需要全局一致性的响应式布局。

二:`vm` 和 `vh` 是 CSS 中的 **视口单位(Viewport Units)**,用于设置与视口大小相关的元素尺寸。这些单位使得页面设计能够根据用户的浏览器窗口(视口)的大小进行自适应调整。

1. `vh` (Viewport Height)

- `vh` 是视口高度的 1%。
- 视口高度是浏览器窗口的可见区域的高度,不包括浏览器的工具栏、菜单栏等部分。

 示例:
css
div {height: 50vh;  /* 该元素的高度是视口高度的 50% */
}

在这个例子中,`div` 元素的高度会根据浏览器窗口的高度变化。如果浏览器窗口的高度为 800px,那么 `div` 的高度就是 400px。

2. `vw` (Viewport Width)

- `vw` 是视口宽度的 1%。
- 视口宽度是浏览器窗口的可见区域的宽度,不包括任何滚动条或边框。

示例:
css
div {width: 50vw;  /* 该元素的宽度是视口宽度的 50% */
}

在这个例子中,`div` 元素的宽度会根据浏览器窗口的宽度变化。如果浏览器窗口的宽度是 1000px,那么 `div` 的宽度就是 500px。

 3. 总结 `vh` 和 `vw` 的使用:

| 单位 | 解释 | 用途 |
| ---- | ---- | ---- |
| `vh` | 相对于视口高度的单位,1vh = 视口高度的 1% | 用于根据视口的高度设置元素的高度或其他尺寸。 
| `vw` | 相对于视口宽度的单位,1vw = 视口宽度的 1% | 用于根据视口的宽度设置元素的宽度或其他尺寸。 

 4. 示例场景:

- 响应式设计:使用 `vh` 和 `vw` 单位可以使元素的大小和布局适应不同设备和屏幕尺寸。
- 全屏背景或元素:如果你希望某个元素(如背景图像)填满整个视口,可以使用 `100vw` 或 `100vh` 来设置其宽度或高度。

 例子:
css
.fullscreen {width: 100vw;  /* 宽度为视口宽度的 100% */height: 100vh; /* 高度为视口高度的 100% */
}


在这个例子中,`.fullscreen` 元素会占据整个浏览器窗口的宽度和高度。

 5. `vm`

- 注意:`vm` 不是一个有效的 CSS 单位。如果你看到这个单位,可能是某个拼写错误,或者是特定框架中的自定义单位。标准 CSS 中没有 `vm` 这个单位。

 小结:
- `vh` 和 `vw` 是视口相关的单位,分别表示视口的高度和宽度的百分比。
- `vh` 用于调整元素的高度,`vw` 用于调整元素的宽度。

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

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

相关文章

《非暴力沟通》第十二章 “重获生活的热情” 总结

《非暴力沟通》第十二章 “重获生活的热情” 的核心总结&#xff1a; 本章将非暴力沟通的核心理念延伸至生命意义的探索&#xff0c;提出通过觉察与满足内心深处的需要&#xff0c;打破“义务性生存”的桎梏&#xff0c;让生活回归由衷的喜悦与创造。作者强调&#xff0c;当行动…

MySQL数据库精研之旅第五期:CRUD的趣味探索(上)

专栏&#xff1a;MySQL数据库成长记 个人主页&#xff1a;手握风云 目录 一、CRUD简介 二、Create新增 2.1. 语法 2.2. 示例 三、Retrieve检索 3.1. 语法 3.2. 示例 一、CRUD简介 CURD是对数据库中的记录进行基本的增删改查操作&#xff1a;Create(创建)、Retrieve(检索…

【银河麒麟系统常识】需求:安装.NET SDK

前提 网络状态正常(非离线安装)&#xff1b; 终端命令如下所示 根据不同系统的版本&#xff0c;自行选择&#xff0c;逐行执行即可&#xff1b; # 基于 Ubuntu/Debian 的银河麒麟系统 wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O…

行业智能体大爆发,分布式智能云有解

Manus的一夜爆红&#xff0c;在全球范围内引爆关于AI智能体的讨论。 与过去一般的AI助手不同&#xff0c;智能体&#xff08;AI Agent&#xff09;并非只是被动响应&#xff0c;而是主动感知、决策并执行的应用。Gartner预测&#xff0c;到2028年&#xff0c;15%的日常工作决策…

工作记录 2017-03-13

工作记录 2017-03-13 序号 工作 相关人员 1 修改邮件上的问题。 开始处理操作日志部分。 测试了C#和MySql的连接。 更新RD服务器。 郝 更新的问题 1、 修改了CMS1500的打印&#xff0c;NDC的内容用了小的字体。 2、在Cliams List中可以查看Job的Notes。 3、Payment Po…

【七层分析框架:寒门贵子消亡的系统性绞杀】

七层分析框架&#xff1a;寒门贵子消亡的系统性绞杀 第一层&#xff1a;教育资源断层 结论&#xff1a;基础教育投入差已达量子级差距 机制&#xff1a; 北京海淀小学生均经费&#xff08;&#xffe5;47,800&#xff09; 云南山区&#xff08;&#xffe5;6,200&#xff09;…

Codeforces Round 1014 (Div. 2)(A-D)

题目链接&#xff1a;Dashboard - Codeforces Round 1014 (Div. 2) - Codeforces A. Kamilka and the Sheep 思路 最大值-最小值 代码 void solve(){int n;cin>>n;vi a(n10);int mx0;int miinf;for(int i1;i<n;i){cin>>a[i];mimin(mi,a[i]);mxmax(mx,a[i])…

开源AI智能体项目OpenManus的部署

关于开源AI智能体项目OpenManus的部署与背景信息整理如下&#xff1a; 1. OpenManus 背景与核心亮点 开发背景&#xff1a;Manus作为一款闭源的通用型AI智能体产品&#xff0c;因内测邀请码稀缺&#xff08;二手平台炒至10万元&#xff09;引发争议。开源社区迅速反应&#xff…

使用jieba库进行TF-IDF关键词提取

文章目录 一、什么是TF-IDF&#xff1f;二、为什么选择jieba库&#xff1f;三、代码实现1.导入必要的库2. 读取文件3.将文件路径和内容存储到DataFrame4.加载自定义词典和停用词5.分词并去除停用词 四、总结 一、什么是TF-IDF&#xff1f; TF-IDF&#xff08;Term Frequency-I…

【学Rust写CAD】20 平铺模式结构体(spread.rs)

这个 Spread。rs文件定义了渐变超出定义区域时的扩展方式&#xff0c;通常用于处理渐变在边界之外的行为。 源码 //color/spread.rs #[derive(Debug, Clone, Copy)] pub struct Pad; // 空结构体&#xff0c;表示 Pad 模式#[derive(Debug, Clone, Copy)] pub struct Reflect…

[操作系统,学习记录]3.进程(2)

1.fork(); 玩法一&#xff1a;通过返回值if&#xff0c;else去执行不同的代码片段 玩法二&#xff1a;if&#xff0c;else然后调用execve函数去执行新的程序 2.进程终止&#xff1a; 退出码&#xff0c;子进程通过exit/return返回&#xff0c;父进程wait/waitpid等待而得&am…

Masked Attention 在 LLM 训练中的作用与原理

在大语言模型&#xff08;LLM&#xff09;训练过程中&#xff0c;Masked Attention&#xff08;掩码注意力&#xff09; 是一个关键机制&#xff0c;它决定了 模型如何在训练时只利用过去的信息&#xff0c;而不会看到未来的 token。这篇文章将帮助你理解 Masked Attention 的作…

【自学笔记】PHP语言基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. PHP 简介2. PHP 环境搭建3. 基本语法变量与常量数据类型运算符 4. 控制结构条件语句循环语句 5. 函数函数定义与调用作用域 6. 数组7. 字符串8. 表单处理9. 会话…

css选择最后结尾的元素DOM

前言 选中最后一个元素&#xff0c;实际使用非常频繁。 解决方案 使用 CSS 提供的选择器&#xff0c;即可完成。 如下代码示例&#xff0c;两种选择器均可实现。 <p>...</p>p:last-child{ background:#ff0000; }p:nth-last-child(1){background:#ff0000; }p&…

Axios 相关的面试题

在跟着视频教程学习项目的时候使用了axios发送请求&#xff0c;但是只是跟着把代码粘贴上去&#xff0c;一些语法规则根本不太清楚&#xff0c;但是根据之前的博客学习了fetch了之后&#xff0c;一看axios的介绍就明白了。所以就直接展示axios的面试题吧 本文主要内容&#xff…

瑞芯微RKRGA(librga)Buffer API 分析

一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中&#xff0c;有两组配置 buffer 的API&#xff1a; importbuffer 方式&#xff1a; importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式&#xff1a; wrapbuffer_virtualaddr wrapb…

C语言:多线程

多线程概述 定义 多线程是指在一个程序中可以同时运行多个不同的执行路径&#xff08;线程&#xff09;&#xff0c;这些线程可以并发或并行执行。并发是指多个线程在宏观上同时执行&#xff0c;但在微观上可能是交替执行的&#xff1b;并行则是指多个线程真正地同时执行&…

Linux线程池实现

1.线程池实现 全部代码&#xff1a;whb-helloworld/113 1.唤醒线程 一个是唤醒全部线程&#xff0c;一个是唤醒一个线程。 void WakeUpAllThread(){LockGuard lockguard(_mutex);if (_sleepernum)_cond.Broadcast();LOG(LogLevel::INFO) << "唤醒所有的休眠线程&q…

微信小程序逆向开发

一.wxapkg文件 如何查看微信小程序包文件&#xff1a; 回退一级 点击进入这个目录 这个就是我们小程序对应的文件 .wxapkg概述 .wxapkg是微信小程序的包文件格式&#xff0c;且其具有独特的结构和加密方式。它不仅包含了小程序的源代码&#xff0c;还包括了图像和其他资源文…

多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测

多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSTM冠豪猪算法优化长短期…