一文搞懂:viewpoint与rem、百分比、px

这篇具有很好参考价值的文章主要介绍了一文搞懂:viewpoint与rem、百分比、px。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础与面试题:viewpoint 与 rem、百分比高度、px

一、定义

​ 一个表总结:

名称 定义 使用示例
viewpoint 是指用户在网页上实际可见和可交互的区域,通常指的是浏览器窗口或移动设备的屏幕尺寸。 width:100vw;height:100vh
rem (root em)是相对于根元素(通常是 <html> 元素)的字体大小来计算的单位。 width:100rem;height:100rem
百分比 是相对于父元素的尺寸来计算所占大小 width:100%;height:100%
px 像素 width:100px;height:100px

知识点补充:

1、viewpoint 怎么来的?

注意:若要使用 viewpoint 必须在 <html><head> 中做如下声明:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  • width=device-width:使 viewport 宽度等于设备的屏幕宽度,确保网页在移动设备上可以完全显示。
  • initial-scale:设置初始缩放级别,通常设置为 1,以避免页面自动缩放。
  • minimum-scalemaximum-scale:指定允许用户进行缩放的最小和最大比例。
  • user-scalable:控制用户是否可以手动缩放页面。

​ “viewport” 是一个非常重要的概念,特别是在移动端开发中更为突出。

​ 在传统的桌面浏览器中,viewport 的大小通常是浏览器窗口的大小,而在移动设备上,情况会更加复杂,因为移动设备的屏幕尺寸各异,且用户可以缩放页面。为了使网页在移动设备上有良好的可视性和可交互性,开发者需要控制和优化 viewport。

​ Viewport 的计算方式可以用以下公式表示:(以 vw 为例子,vh 同理)

viewport width = device width / device pixel ratio

​ 其中,viewport width 表示视口的宽度,device width 表示设备的物理像素宽度,device pixel ratio 表示设备像素比。

​ 通过js进行计算示例:

// 获取视口宽度
const viewportWidth = window.innerWidth;

// 获取屏幕像素比
const pixelRatio = window.devicePixelRatio;

// 计算得到视点的大小
const viewportSize = viewportWidth / pixelRatio;

// 输出视口宽度
console.log("视点:" + viewportSize); // 这就是100vw的大小了,相当于正好屏幕的宽度

2、rem 单位大小是怎么计算的

​ rem 是指相对于根元素(<html> 元素)的字体大小的单位,它的计算方式是基于设备视口宽度和根元素字体大小的比例关系。

​ 为了适应不同设备的视口大小和分辨率,我们通常使用相对字体大小作为网页设计的基础单位。和相对于父级元素大小的 em 单位不同,rem 单位只相对于根元素的字体大小,因此可以确保网页布局在不同的设备和屏幕尺寸下一致。

​ 假设我们将根元素的字体大小设置为 16px,则 1rem 就等于 16px。例如,如果我们使用 font-size: 1.5rem 来设置某个元素的字体大小,则该元素的字体大小就等于 1.5 * 16px = 24px

​ 当根据构建响应式的设计时,rem 单位也可以用于设置其他的样式属性,例如 padding、 margin、width 等。

​ 为了确保使用 rem 单位时计算结果正确,我们需要考虑视口宽度和根元素字体大小的关系。一般来说,我们会将根元素字体大小设置为一个比较合适的基准大小,例如 16px、14px 等。然后,根据视口宽度的变化,调整字体大小和布局的比例关系。

具体计算方式如下:

rem = px / 基准字号

其中,px 表示元素属性的像素值,基准字号表示根元素的字体大小(单位为 px)。通过这个公式,我们可以将像素单位转换成 rem 单位,并保证网页在不同设备下的字体和布局一致。

需要注意的是:使用 rem 单位时,不同浏览器对于字体大小的计算方式可能会存在差异。因此,在实际开发中,你可能需要使用 @media 媒体查询或 JS 脚本来动态调整根元素的字体大小和 rem 单位的计算方式。

​ 使用 js 获取根节点的字体大小:

// 获取根元素
const rootElement = document.documentElement;

// 获取计算后的样式
const computedStyle = window.getComputedStyle(rootElement);

// 获取根元素上的字体大小
const fontSize = computedStyle.getPropertyValue('font-size');

// 输出字体大小
console.log("字体大小:" + fontSize); // 一般而言是 16px, 也就是 1rem

二、viewpoint 与 rem 的差异

  1. 单位类型:
    • rem(root em)是相对于根元素(通常是 <html> 元素)的字体大小来计算的单位。
    • viewport 是指用户在网页上实际可见和可交互的区域,通常指的是浏览器窗口或移动设备的屏幕尺寸。
  2. 适用范围:
    • rem 主要用于设置字体大小和元素尺寸,它是相对于根元素的字体大小来计算的,可以用于实现相对于根元素的等比缩放。
    • viewport 主要用于控制网页在移动设备上的显示效果,通过 <meta> 标签设置 viewport,以确保页面在不同设备上以正确的比例显示,并控制用户是否可以缩放页面。
  3. 计算方式:
    • rem 的计算是相对于根元素的字体大小,例如,1rem 等于根元素的字体大小。
    • viewport 的计算是相对于视口的大小,例如,1vw 等于视口宽度的 1%。
  4. 应用场景:
    • rem 通常用于实现相对于根元素的等比缩放,特别适用于响应式设计。
    • viewport 用于控制网页在移动设备上的显示效果,确保页面在不同设备上以正确的比例显示,并控制用户是否可以缩放页面

三、viewpoint 与 百分比 的差异

  1. 基准不同:
    • 百分比是相对于父元素的尺寸来计算的,而vw/vh是相对于视口的尺寸来计算的。
    • 如果父元素的尺寸与视口尺寸相同,那么百分比和vw/vh可能会产生相似的效果。但如果父元素的尺寸与视口尺寸不同,那么它们就会产生不同的效果。
  2. 响应式性:
    • 使用vw/vh更具有响应式的特性,因为它们是相对于视口的大小来计算的,可以随着视口的变化而变化,从而更好地适应不同设备的屏幕尺寸。
    • 百分比相对于父元素的大小计算,如果父元素的大小发生变化,那么百分比计算出的大小也会相应变化,但它不直接与视口大小相关联。
  3. 用途不同:
    • 在某些情况下,使用百分比可能更适合,特别是当元素的尺寸应该相对于其父元素而不是整个视口时。
    • 使用vw/vh通常更适合于实现基于视口大小的布局和设计,尤其是在移动设备上。

四、像素(px)

一块屏幕的能显示的部分都是由一个一个的像素点构成的。在网页和UI中,这也是不可再细分的单位,也是最小的单位。

上述 viewpoint、 rem、em、百分比 其实本质上都是要确定需要在屏幕上使用多少个宽度像素作为一个基准单位来适应不同屏幕大小,以正常显示网页内容。

​ 像素是图像显示和数字图形处理中的基本单位,用于描述图像的分辨率和清晰度。一个像素代表图像中的一个最小的、不可分割的点或颜色单元,是构成数字图像的基本单元之一。

​ 在计算机图形学中,像素通常表示为一个有限的方块或矩形区域,每个像素可以包含一个颜色值,用于描述图像在该点的色调、亮度和饱和度等信息。根据颜色深度的不同,每个像素可以包含不同位数的颜色信息,例如 8 位颜色(256 色)、24 位真彩色(约 1677 万色)等。

​ 像素密度指的是每英寸包含的像素数量,通常表示为每英寸的像素数(PPI,Pixels Per Inch)。像素密度越高,图像显示的细节和清晰度就会更高,比如高分辨率的 Retina 显示屏就有更高的像素密度。

在不同的设备和显示器中,像素的大小和显示方式可能有所不同。例如,传统液晶显示器中的像素是一个固定大小的点,而在 Retina 显示屏等高密度显示器中,一个逻辑像素可能会对应多个物理像素,以提供更高清晰度的显示效果。

​ 总的来说,像素是数字图像中描述图形、图像和文本的基本单元,它在计算机视觉、数字图形处理、网页设计等领域都有着重要的作用。我们通过调整像素的颜色、位置和密度等属性,可以创造出各种丰富多彩的视觉效果。

五、使用方法推荐

本文并没有对 em 做重点讲解,但我考虑再三,还是把它加上,方便自己,也方便大家。

不同的单位在网页设计和布局中有各自的优势和适用场景,下面简单介绍一下它们的特点和使用时机:

  1. viewport 单位(vw、vh、vmin、vmax):
    • 最适用时机:viewport 单位是相对于视口大小的单位,适用于创建响应式布局和元素尺寸的动态调整。可以使用 vw、vh 来设置视口宽度和高度的百分比,vmin 和 vmax 可以根据视口的最小或最大维度来设置大小。
  2. rem 单位:
    • 最适用时机:rem 单位是相对于根元素(<html>)字体大小的单位,适用于字体大小、间距和布局的一致性调整。通过设置根元素的字体大小,可以灵活地调整整个页面的布局比例。
  3. em 单位:
    • 最适用时机:em 单位是相对于父元素字体大小的单位,适用于定义相对于父元素的尺寸比例。可以用于嵌套元素样式的简化和响应式设计中的相对大小设置。
  4. 百分比单位(%):
    • 最适用时机:百分比单位可以相对于父元素的大小进行设置,适用于创建相对于父元素的大小比例调整,实现响应式设计以及布局的弹性调整。
  5. 像素单位(px):
    • 最适用时机:像素单位是绝对长度单位,适用于固定尺寸的元素设置,如边框、阴影等。在某些情况下,使用像素单位可以确保元素大小的准确性和稳定性。

根据以上介绍,在实际 web 开发中,我们可以根据布局的需求和设计的灵活性来选择合适的单位。通常情况下,我们会结合使用不同单位来实现网页布局的灵活性和响应式设计的需求。在具体实践中,根据设计的要求和布局的需要,选择合适的单位来辅助网页设计和开发。

补充:(基准字号)

基准字号的确定并没有一个固定的规定,它可以根据具体的设计需求和开发者的偏好来进行选择。一般来说,基准字号可以根据以下几个方面来确定:

  1. 设计师的建议:设计师通常会提供一些基准字号的建议,以适应设计稿的比例和整体效果。你可以与设计团队或者设计师讨论,并根据他们的建议来设定基准字号。

  2. 浏览器的默认字号:浏览器默认字号一般设置为 16px,因此在没有显式设置基准字号的情况下,可以将其作为默认的基准字号。

  3. 用户体验和可读性:考虑到网页的可读性和用户体验,合适的基准字号应该在保持字体清晰度的同时,不会过大或过小,以免影响用户的阅读和浏览体验。通常建议基准字号在 14px 到 18px 之间。

  4. 响应式布局考虑因素:如果你的网页设计是响应式的,需要适应不同的设备和屏幕尺寸,可以根据不同的媒体查询设置不同的基准字号,以满足不同屏幕大小下的显示需求。

当你确定了基准字号后,可以将其应用于根元素 <html> 的样式中,例如:

html {
  font-size: 16px; /* 基准字号 */
}

然后,使用 rem 单位来设置其他元素的字体大小、间距等属性,像这样:

h1 {
  font-size: 2rem; /* 相当于 32px(2 * 16px) */
  margin-bottom: 1.5rem; /* 相当于 24px(1.5 * 16px) */
}

值得注意的是,为了确保不同设备上的一致性,通常会使用媒体查询或 JavaScript 等技术根据设备的宽度动态调整基准字号。这样可以确保在不同设备上字体大小和布局的比例关系相对一致。例如,可以通过媒体查询来设置不同视口宽度下的基准字号,以适应不同屏幕大小。文章来源地址https://www.toymoban.com/news/detail-841336.html

到了这里,关于一文搞懂:viewpoint与rem、百分比、px的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在视频中选定/截取部分区域画面,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端

    在视频中选定部分区域,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端 播放 flv 格式视频 点击“截取”按钮,将视频当前画面截取为一张图片并回显图片, 使用 Cropper 插件截取图片部分区域(可以获取到截取图片左上角点坐标和截取部分的宽高) cropperjs 参数

    2024年02月03日
    浏览(35)
  • (vue)多级表头且转为百分比显示

    2024年02月11日
    浏览(37)
  • 移动端布局之流式布局1(百分比布局)

    流式布局,就是百分比布局,也称非固定像素布局 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充 流式布局方式是移动web开发使用的比较常见的布局方式 max-width 最大宽度(max-height 最大高度) min-width 最小宽度(min-height

    2024年02月06日
    浏览(41)
  • 鸿蒙OS应用开发之百分比显示组件

    前面学习了动态加载的组件,在本文里将要学习百分比显示组件,这个组件可以把数据按百分比的情况进行图形显示出来。百分比图形显示还是很有用的,比如一个班里学生的成绩占比,还有软件项目开发进度的情况,还有软件下载进度等等。 在鸿蒙系统里定义这个组件接口

    2024年01月20日
    浏览(44)
  • 记录vue项目用到的水波纹 百分比 进度

     echarts-liquidfill  git地址:mirrors / ecomfe / echarts-liquidfill · GitCode 示例:echarts图表集 前置条件,安装echarts,同时还需要安装echarts-liquidfill 注意 :echarts-liquidfill@3 版本匹配 echarts@5 版本,echarts-liquidfill@2 版本匹配 echarts@4 版本 在main.js中引入 初始化图形方法

    2024年02月16日
    浏览(47)
  • Echarts饼状legend如何自动显示值和百分比

    效果图如下,   重点在legend里如何设置   显示值和百分比     重点在legend里如何设置   显示值和百分比  

    2024年02月11日
    浏览(42)
  • js 四舍五入保留一位小数 求百分比

    概览:一个数据占一组数据的比率,并且四舍五入保留一位小数。通过Math.round()四舍五入。 参考链接: mdn中文文档Math.round() 实现思路: Math.round(x)  函数返回一个数字四舍五入后最接近的整数。参数x是一个数值 实现代码: 保留一位小数: Math.round(num* 1000) / 10 

    2024年02月15日
    浏览(41)
  • C语言如何实现将一个小数以百分比的形式输出

    在C语言中我们用连着的两个百分比符号表示一个百分比符号,即“%%”就表示一个百分比符号,例如我们想输出40%这个数到屏幕上我们可以执行以下语句: 这样就可以将40%输出在屏幕上了 若我们想要将0.857这个浮点数以百分制的形式输出在屏幕上呢?我们知道将0.857这个数转

    2024年02月06日
    浏览(37)
  • html浏览器进行缩放百分比 界面和文字保持不变

    400%效果 50%效果

    2024年02月03日
    浏览(49)
  • 物联网远程智能控制设备——开关量/正反转&百分比控制

    如今生产生活的便利性极大程度上得益于控制技术的发展,它改变了传统的工作模式,并将人们从【纯劳力】中解放出来。如今,随着科学技术的进步,控制器的种类及应用领域也越来越多。 物联网远程智能控制设备就是一种新型的、能够用于多种行业且拥有多种控制方式的

    2024年02月14日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包