前端中rem,vh,vw

1. rem(Root EM)

参照对象

  • 基准:相对于 根元素(<html>)的 font-size 计算。

  • 默认情况下,浏览器的根 font-size 为 16px(即 1rem = 16px),但可通过 CSS 修改:

    html {font-size: 20px; /* 此时 1rem = 20px */
    }

不同分辨率下的表现

  • 变化规则

    • rem 的值 只取决于根元素的 font-size,与视口大小无关。

    • 若根 font-size 固定(如 20px),1rem 永远等于 20px

    • 若根 font-size 动态设置(如通过媒体查询或 JS 根据视口调整),rem 会按比例变化。

  • 常见用法

    /* 动态调整根 font-size(适配移动端) */
    html {font-size: calc(100vw / 375 * 16); /* 基于设计稿宽度 375px */
    }

 

2. vh(Viewport Height)

参照对象

  • 基准:相对于 视口(Viewport)高度的 1%

    • 1vh = 1% 的视口高度(如视口高度为 1000px,则 1vh = 10px)。

不同分辨率下的表现

  • 变化规则

    • vh 的值 随视口高度变化

    • 在移动端,浏览器地址栏的显示/隐藏会动态改变视口高度,导致 vh 值波动(可用 dvh 解决)。

  • 常见用法

    .full-screen {height: 100vh; /* 始终占满视口高度 */
    }

 

3. vw(Viewport Width)

参照对象

  • 基准:相对于 视口(Viewport)宽度的 1%

    • 1vw = 1% 的视口宽度(如视口宽度为 1200px,则 1vw = 12px)。

不同分辨率下的表现

  • 变化规则

    • vw 的值 随视口宽度变化

    • 适用于响应式布局(如替代百分比,避免嵌套元素计算问题)。

  • 常见用法

    .responsive-box {width: 50vw; /* 始终占视口宽度的一半 */
    }

 

 

4. 对比总结

单位参照对象是否随视口变化典型应用场景
rem根元素的 font-size否(除非动态修改根字号)字体大小、间距、整体缩放
vh视口高度全屏布局、高度自适应
vw视口宽度响应式宽度、栅格系统

5. 特殊注意事项

移动端 vh 的问题

  • 问题:在移动端浏览器中,100vh 可能包含地址栏高度,导致内容被遮挡。

  • 解决方案

    • 使用 CSS 新单位 dvh(Dynamic Viewport Height,动态视口高度):

      .mobile-section {height: 100dvh; /* 自动排除地址栏高度 */
      }

    • 或通过 JavaScript 动态计算:

      document.documentElement.style.setProperty('--vh', `${window.innerHeight}px`);
      .mobile-section {height: calc(var(--vh, 1vh) * 100);
      }

vw 的替代方案

  • 若需避免 vw 计算复杂性,可使用 CSS 容器查询(cqw)或 Flex/Grid 布局。

 

6. 不同分辨率下的计算示例

视口尺寸1rem(根 font-size: 16px1vh(视口高度 900px1vw(视口宽度 1200px
桌面端16px9px12px
移动端竖屏16px6.5px(含地址栏)3.75px(宽度 375px
移动端横屏16px3.75px(高度 375px6.5px(宽度 650px

 

7. 如何选择单位?

  • 全局缩放:用 rem(结合媒体查询动态调整根 font-size)。

  • 视口适配:用 vw/vh(或 dvh 解决移动端问题)。

  • 精确控制:结合 calc() 使用(如 calc(1rem + 1vw))。

通过合理选择单位,可以轻松实现跨设备的响应式布局。

 

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

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

相关文章

详解 MySQL 常见的存储引擎及它们之间的区别

MySQL 支持多种存储引擎&#xff0c;每种引擎针对不同的应用场景提供了特定的特性和优化。下面是几种常见的存储引擎以及它们之间的主要区别&#xff1a; 常见存储引擎 1. InnoDB&#xff08;重点&#xff09; 事务支持&#xff1a; 完全支持 ACID 事务&#xff0c;确保数据一…

html+css+js 实现一个贪吃蛇小游戏

目录 游戏简介 游戏功能与特点 如何玩转贪吃蛇 游戏设计与实现 HTML结构 JavaScript核心实现 代码结构&#xff1a; 效果 关于“其他游戏” 游戏简介 贪吃蛇是一款经典的单人小游戏&#xff0c;玩家通过控制蛇的移动&#xff0c;吃掉食物来增加长度&#xff0c;避免撞…

GLSL(OpenGL 着色器语言)基础语法

GLSL&#xff08;OpenGL 着色器语言&#xff09;基础语法 GLSL&#xff08;OpenGL Shading Language&#xff09;是 OpenGL 计算着色器的语言&#xff0c;语法类似于 C 语言&#xff0c;但提供了针对 GPU 的特殊功能&#xff0c;如向量运算和矩阵运算。 着色器的开头总是要声明…

ngx_http_core_merge_srv_conf

定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) {ngx_http_core_srv_conf_t *prev parent;ngx_http_core_srv_conf_t *conf child;ngx_str_t name;ngx_http_server_name_t…

uni-app:firstUI框架的选择器Select改造,添加一个搜索的插槽

<fui-select :show"showSiteType" :options"siteTypeList" textKey"dict_label" title"请选择站点类型" confirm"chooseSiteType" close"onCloseSiteType"><template v-slot:search><view><…

Debian/Ubuntu的networking的`/etc/network/interfaces`配置文件,如何配置route路由

Debian/Ubuntu的networking的/etc/network/interfaces配置文件,如何配置route路由 在 Debian/Ubuntu 系统中&#xff0c;通过 /etc/network/interfaces 配置文件配置路由&#xff08;静态路由或默认路由&#xff09;可以通过以下方式实现。以下是详细配置方法及示例&#xff1…

天梯赛 L2-024 部落

一个并查集题目&#xff0c;难点就在于统计总人数&#xff0c;使用map即可&#xff0c;还有需要注意的是编号不一定是小于N的&#xff0c;小于10000的&#xff0c;需要注意。 #include<bits/stdc.h> using namespace std; const int N 10010; int fa[N]; int find(int …

uniapp 微信小程序 使用ucharts

文章目录 前言一、组件功能概述二、代码结构分析2.1 模板结构 总结 前言 本文介绍一个基于 Vue 框架的小程序图表组件开发方案。该组件通过 uCharts 库实现折线图的绘制&#xff0c;并支持滚动、缩放、触摸提示等交互功能。文章将从代码结构、核心方法、交互实现和样式设计等方…

Axure项目实战:智慧运输平台后台管理端-承运商管理(中继器筛选)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:智慧运输平台后台管理端 主要内容:承运商管理 应用场景:条件筛选、增删改查操作、台账制作 案例展示: 正文内容: 承运商管理模块主要解决平台对承运商的管理,包括新增承运商作,审核承运商申请,修…

[论文笔记] Deepseek技术报告解读: MLAMTP

1. RMSNorm 归一化层 class RMSNorm(nn.Module):def __init__(self, dim: int, eps: float = 1e-8):super().__init__()self.eps = epsself.weight = nn.Parameter(torch.ones(dim)) # 可学习的缩放参数def _norm(self, x: torch.Tensor):return x * torch.rsqrt(x.pow(2).me…

八款内网电脑监控软件:探寻适配企业需求的数字化监管方案组合

数字化办公的时代背景下&#xff0c;企业管理面临着前所未有的挑战。如何实现对员工办公行为的高效管理&#xff0c;确保网络资源的合理利用&#xff0c;成为众多企业决策者和高级管理人员亟待解决的重要问题。内网电脑监控软件作为一种有效的管理工具&#xff0c;应运而生。本…

Flutter求助贴

报错信息&#xff1a;The Dart VM Service was not discovered after 30 seconds. This is taking much longer than expected... 基本情况&#xff1a; 硬件&#xff1a;mac(15.3.1)&#xff0c;iPad(iOS 16.6),iPhone 16 pro(iOS 18.4) 项目环境 flutter&#xff1a;3.16…

React(九)React Hooks

初识Hook 我们到底为什么需要hook那? 函数组件类组件存在问题 函数组件存在的问题&#xff1a; import React, { PureComponent } from reactfunction HelloWorld2(props) {let message"Hello world"// 函数式组件存在的缺陷&#xff1a;// 1.修改message之后&a…

数据清洗的具体内容

&#xff08;一&#xff09;ETL介绍 “ETL&#xff0c;是英文Extract-Transform-Load的缩写&#xff0c;用来描述将数据从来源端经过抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;、加载&#xff08;Load&#xff09;至目的端的过程。ETL一词较…

【动手学深度学习】#7 现代卷积神经网络

主要参考学习资料&#xff1a; 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李牧学AI 概述 硬件性能和大数据的发展为深度卷积神经网络&#xff08;AlexNet&#xff09;的实现提供了条件。VGG首次将块的思想用于搭建网络。NiN将多层感知机应用在…

Jenkins + CICD流程一键自动部署Vue前端项目(保姆级)

git仓库地址&#xff1a;参考以下代码完成,或者采用自己的代码。 南泽/cicd-test 拉取项目代码到本地 使用云服务器或虚拟机采用docker部署jenkins 安装docker过程省略 采用docker部署jenkins&#xff0c;注意这里的命令&#xff0c;一定要映射docker路径&#xff0c;否则无…

使用 libevent 处理 TCP 粘包问题(基于 Content-Length 或双 \r\n)

在基于 libevent 的 TCP 服务器开发中,处理消息边界是常见需求。以下是两种主流分包方案的完整实现: 一、基于 Content-Length 的分包方案 1.1 数据结构设计 typedef struct {struct bufferevent *bev;int content_length; // 当前消息的预期长度int received_bytes; //…

酶动力学预测工具CataPro安装教程

简介&#xff1a;预测酶动力学参数是酶发现和酶工程中的一项重要任务。在此&#xff0c;研究人员基于蛋白质语言模型、小分子语言模型和分子指纹&#xff0c;提出了一种名为 CataPro 的新酶动力学参数预测算法。该研究从 BRENDA 和 SABIO-RK 数据库中收集了最新的转化率&#x…

项目实战:基于Spring WebFlux与LangChain4j实现大语言模型流式输出

一、背景 在大语言模型&#xff08;LLM&#xff09;应用场景中&#xff0c;GPT-4等模型的响应生成往往需要数秒至数十秒的等待时间。传统同步请求会导致用户面对空白页面等待&#xff0c;体验较差。本文通过Spring WebFlux响应式编程与SSE服务器推送技术&#xff0c;实现类似打…

Go语言入门经典:数组与切片详解

Go语言入门经典&#xff1a;数组与切片详解 数组和切片是Go语言中两种重要的数据结构。数组是一种固定长度的集合&#xff0c;而切片则是一种灵活的动态集合。本章将详细讲解数组和切片的定义、初始化、访问元素、动态操作等内容&#xff0c;帮助读者全面掌握这两种数据结构。…