px? pt? dp? em?rem?vw?vh?ch?ex?这些单位你了解吗?

目录

前言

一、常见单位

 1、px单位

2、dp单位 

3、pt单位

4、百分比%

5、em单位

6、rem单位

7、vw和vh单位

8、ch、ex单位

二、如何换算

1、 pt和px换算

2、px和dp换算

3、em和px换算

4、rem和px换算

三、总结


前言

前端开发在日常设计中除了最常用的 px 以外,还会经常看到 dp、pt、em、rem 等单位,那么这些单位都有什么区别呢?今天我给大家归纳总结一下,大家记得收藏以备之后工作需要哦~。​​​​​​​

一、常见单位

 1、px单位

px像素,是网页设计和移动应用设计中最常用的单位。表示屏幕上的一个点,根据显示设备具有固定的大小,不受其他因素影响。常用于确定文本、图像和元素的大小和位置。

2、dp单位 

dp(也称为 dip):设备独立像素,是一个相对的尺寸单位,表示屏幕上的一个点。与 px 不同,dp 能够根据设备的像素密度进行自适应缩放,从而在不同设备上保持一致的大小。

3、pt单位

pt是磅值,常用于印刷品设计中。表示打印出来的一个点,和像素不同,它不是固定的,而是基于印刷设备的分辨率和输出质量来计算的。因此,使用磅值可以确保在不同设备上输出的印刷品大小一致。 

4、百分比%

百分比在前端开发中是一个动态单位,永远以当前元素的父元素作为参考进行计算。

元素尺寸百分比

我们可以创建一个容器,在容器中包含网页的主要内容。我们使用百分比来设置容器的宽度和高度,使其能够根据用户的屏幕尺寸自动调整大小。例如:

.container {width: 80%;height: 50%;
}

在这个例子中,容器的宽度和高度都设置为百分比,分别为80%和50%。这意味着无论用户的屏幕尺寸如何,容器都会自动调整大小,并且在任何设备上都能够很好地显示。

 元素位置百分比

通过使用百分比,我们还可以设置元素相对于其容器的位置。这对于设计一个具有居中或者自适应特点的网站非常有用。例如:

.box {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);
}

在这个例子中,我们使用百分比来设置元素的位置,使其在其容器中居中显示。我们首先使用position:absolute将元素定位为绝对定位,然后使用top:50%left:50%将其位置相对于其容器居中定位。最后,我们使用transform:translate(-50%,-50%)将元素的位置进行微调,使其居中。

 颜色和背景百分比

h1 {color: rgba(100%,0%,0%,0.5);background: linear-gradient(90deg, rgba(100%,0%,0%,0.6) 0%, rgba(100%,0%,0%,0) 100%);
}

在这个例子中,我们使用百分比来设置文本和背景的透明度。具体来说,我们将文本的颜色设置为红色,并将其透明度设置为50%。而背景则使用linear-gradient来设置一个红色渐变背景,同时将透明度从60%到0%进行渐变。这样,我们就可以创建出一个半透明的文本和背景效果。 

5、em单位

em是相对于当前元素的字体大小。通常用于网页设计中设置文本的大小,具有相对的特性,可以根据父元素的字体大小进行缩放。 

<style>div {font-size: 18px;  /* 设置父元素的字体大小 */}span:nth-child(1) {font-size: 1em;   /* 1em相当于1*18px=18px */}span:nth-child(2) {font-size: 18px;}
</style>
<body><div><span>em单位验证</span><br><span>px像素单位验证</span></div>
</body>

上面的代码两个span标签里面的文字是一样的,虽然第一个span标签设置的字体为1em,第二个span标签设置的字体大小为18px,但是最后得到的效果是一模一样的。这是因为span的父元素div设置的字体大小为18px,所以1em=18px。接验证了em单位是相对于父元素而言的。

em特点:

  1. em的值并不是固定的;
  2. em会继承父级元素的字体大小。

6、rem单位

rem是相对于根元素的字体大小。也是用于网页设计中设置文本的大小,但相对于 em,它是相对于根元素的字体大小进行缩放,因此更加稳定和一致。比如我定义:

html{ font-size:14px}

那么设为2rem的话就相当于 2*14px。也就是 

.box{font-size:2rem;/*font-size:28px;*//*2*14px/
}

使用rem为元素设定字体大小时,是相对大小,但相对的只是HTML根元素。因此我们一般使用rem作为移动端的主流单位,可以很好的来控制整个页面的元素大小比例。

优点:

这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

缺点:

目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

7、vw和vh单位

vw 相对于视口的宽度。视口被均分为100单位。

h1 {font-size: 8vw;
}

再举个例子:浏览器宽度1200px, 1 vw = 1200px/100 = 12 px

vh 相对于视口的宽度。视口被均分为100单位

h1 {font-size: 8vh;
}

再举个例子:浏览器高度900px, 1 vh = 900px/100 = 9 px

总结:

  •  vw:1vw等于视口宽度的1%。
  •  vh:1vh等于视口高度的1%。

 缺点:兼容性很差,不推荐使用,目前用的很舒服的还是px和rem。

8、ch、ex单位

ch单位

ch 单位通常被定义为数字0的宽度。你可以在Eric Meyers的博客里找到关于它的一些有意思的讨论,例如将一个等宽字体的字母”N”的宽度设置为40ch,那么在另一种类型的字体里它却可以包含40个字母。常用于设置固定宽度的元素,如表格、代码块等,可以保证每个字符的宽度一致。

使用场景:

用途主要是盲文的排版,但是除此之外,肯定还有可以应用他的地方。

ex单位

ex 定义为当前字体的小写x字母的高度或者 1/2 的 1em。很多时候,它是字体的中间标志。

使用场景:

有很多用途,大部分用于版式的微调。比方说,sup 元素(上角文字标),可以通过position:relative;bottom: 1ex;实现 。

不同点:

这两是基于字体的度量单位,依赖于设定的字体。

二、如何换算

1、 pt和px换算

公式一: 1pt= (DPI / 72) px

当photoshop中新建画布的分辨率为72ppi( 即 72dpi时 ), 1pt=1px; 当新建画布分辨率为72*2=144ppi时,1pt=2px

2、px和dp换算

dp为安卓开发时的长度单位,根据不同的屏幕分辨率,与px有不同的对应关系。

安卓端屏幕大小各不相同,根据其像素密度,分为以下几种规格:

1dp定义为屏幕密度值为160ppi时的1px,即,在mdpi时,1dp = 1px。 以mdpi为标准,这些屏幕的密度值比为:ldpi : mdpi : hdpi : xhdpi : xxhdpi = 0.75 : 1 : 1.5 : 2 : 3;即,在xhdpi的密度下,1dp=2px;在hdpi情况下,1dp=1.5px。其他类推。

1dp=(屏幕ppi/ 160)px

以WVGA屏为例,该屏幕为480px*800px,按3.8寸屏算,点密度 √ (480^2 + 800^2) / 3.8 = 245,约等于240,对应于hdpi屏幕,所以该屏幕1dp=1.5px

3、em和px换算

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em。为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

4、rem和px换算

1rem等于html根元素设定的font-size的px值 如果css里面没有设定html的font-size,则默认浏览器以1rem= 16px来换算。

假如我们在css里面设定下面的css。那么后面的CSS里面的rem值则是以这个14来换算。

 html{font- size:14px} 

例如设定一个div宽度为3rem,高度为2.5rem. 则它换算成px为width:42px.height:35px 同理,假如一个设计稿为宽度42px,高度为35px 则换成rem,则是42/14=3rem, 35/14=2.5rem。 (14就是html的font-size)。

三、总结

总的来说,选择合适的设计计量单位要根据具体的设计场景和需求来决定。例如,在网页设计中,使用 em 和 rem 可以实现响应式设计,而使用 vw 和 vh 可以实现流体布局。在印刷品设计中,则需要使用 pt 来保证输。

如果文章对你有所帮助,❤️关注+点赞❤️鼓励一下博主会持续更新。。。。

我的线上博客:富朝阳的博客

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

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

相关文章

第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射

文章目录 第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射将集合属性映射到 XML 模式 第二十八章 控制到 XML 模式的映射 - 流类到 XML 类型的映射 如果类或属性基于流&#xff0c;则它将投影为 XML 类型&#xff0c;如下表所示&#xff1a; IRIS 流的 XML 类型 …

使用BeautifulSoup 4和Pillow合并网页图片到一个PDF:一种高效的方式来处理网页图像

背景 ​ 网页上的培训材料&#xff0c;内容全是PPT页面图片。直接通过浏览器打印&#xff0c;会存在只打印第一页&#xff0c;并且把浏览器上无效信息也打印出来情况。但目标是希望将页面图片全部打印为pdf形式。 实现方案 利用网页“另存为”&#xff0c;将页面内所有图片资…

官宣!「湾区之光群星演唱会」拉开2024新年音乐华丽序幕!

万众期待&#xff0c;群星荟萃&#xff01;青春宝安时尚湾区——湾区之光群星演唱会即将在2024年1月5日闪耀亮相深圳宝安。 华语歌坛巨星天后齐聚一堂&#xff0c;携手多位实力唱将&#xff0c;共同呈现一场无与伦比的演唱会盛宴&#xff01;在深情而又充满力量的歌声之中&…

Linux修复磁盘坏道,重新挂载硬盘

修复磁盘 挂载报错&#xff1a; [rootlocalhost ~]$ mount /dev/sdb /mnt/mydevmount: /dev/sdb is write-protected, mounting read-only mount: wrong fs type, bad option, bad superblock on /dev/sdb,missing codepage or helper program, or other errorIn some cases …

15、lambda表达式、右值引用、移动语义

前言 返回值后置 auto 函数名 (形参表) ->decltype(表达式) lambda表达式 lambda表达式的名称是一个表达式 (外观类似函数)&#xff0c;但本质绝非如此 语法规则 [捕获表] (参数表) 选项 -> 返回类型 { 函数体; }lambda表达式的本质 lambda表达式本质其实是一个类…

textarea文本框回车enter的时候自动提交表单,根据内容自动高度

切图网近期一个bootstrap5仿chatgpt页面的项目遇到的&#xff0c;textarea文本框回车enter的时候自动提交表单&#xff0c;根据内容自动高度&#xff0c;代码如下&#xff0c;亲测可用。 <textarea placeholder"Message ChatGPT…" name"" rows"&q…

TypeScript 第五节:条件语句

一、TypeScript 中常用的条件语句 TypeScript 的条件语句与 JavaScript 的条件语句类似&#xff0c;包括 if 语句、if...else 语句、switch 语句等。 1、if 语句 if 语句用于判断指定条件是否为 true&#xff0c;如果是 true&#xff0c;则执行一段代码块。 示例&#xff1a;…

命名空间this_thread

命名空间 - this_thread 在C11中不仅添加了线程类&#xff0c;还添加了一个关于线程的命名空间std::this_thread&#xff0c;在这个命名空间中提供了四个公共的成员函数&#xff0c;通过这些成员函数就可以对当前线程进行相关的操作了。 1.get_id() 调用命名空间std::this_t…

java脚本引擎Groovy动态执行

1.java脚本引擎Groovy实战_groovy脚本-CSDN博客 2.java可用的动态脚本引擎和动态代码执行_java动态执行代码片段-CSDN博客 3.Groovy动态加载Java代码的使用方法和工具类_groovy调用java类方法-CSDN博客 4.springboot应用动态运行groovy脚本-附源码 - 简书 (jianshu.com) 5.…

是不是学了低代码就自动放弃了高薪?内部资深解答来了!

目录 前言低代码开发&#xff1a;点餐还是自助烹饪&#xff1f;低代码的“菜单”低代码的局限性 市场影响的分析&#xff1a;一场关于低代码的对话低代码开发与程序员职业&#xff1a;名人视角解析总结 前言 近年来&#xff0c;低代码开发因其低门槛、高效率和易集成的特点受到…

conda 计算当前包的个数

Conda是一个强大的包管理器和环境管理器&#xff0c;它用于安装和管理来自不同源的软件包。若要计算当前conda环境中安装的包的数量&#xff0c;你可以使用以下命令&#xff1a; 首先&#xff0c;激活你想要检查的conda环境&#xff08;如果不是默认的base环境&#xff09;&am…

虹科新闻丨广州市“强企增效”项目助力虹科高质量发展!

来源&#xff1a;虹科电子科技有限公司 虹科新闻丨广州市“强企增效”项目助力虹科高质量发展&#xff01; 原文链接&#xff1a;https://mp.weixin.qq.com/s/9pUXx5ZZpIi5S4s4o90GJA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 2023年12月6日至7日&#xff0c;工…

hive/spark用法记录

1. cast()更改数据类型 cast(column_name as type) 2. get_dt_date()自定义日期操作函数&#xff08;返回不带横线的日期&#xff09; select get_dt_date();–获取当前日期&#xff0c;返回 20170209 select get_dt_date(get_date(-2));–获取当前日期偏移&#xff0c;转为…

如果将视频转化为gif格式图

1.选择视频转换GIF&#xff1a; 2.添加视频文件&#xff1a; 3.点击“开始”&#xff1a; 4.选择设置&#xff0c;将格式选择为1080P更加清晰&#xff1a; 5.输出后的效果图&#xff1a;

postgresql设置免密登录

您提供的步骤描述了在 PostgreSQL 数据库环境中配置服务器间的 SSH 无密码登录和数据库用户认证的过程。这些步骤主要用于设置一个高可用性、负载平衡的数据库集群环境。让我们逐一解释这些步骤的目的和应用场景&#xff1a; 1. 启动 PostgreSQL 服务 systemctl start postgr…

ReetrantReadWriteLock底层原理

文章目录 一、读写锁介绍二、ReentrantReadWriteLock底层原理1. 读写锁的设计 一、读写锁介绍 现实中有这样一种场景:对共享资源有读和写的操作&#xff0c;且写操作没有读操作那么频繁(读多写少)。在没有写操作的时候&#xff0c;多个线程同时读一个资源没有任何问题&#xf…

jQuery-操作DOM

使用jQuery操作DOM dom : 文档对象模型 就是HTML元素 $() 函数的2个用法: 用法1:放入一个字符串(选择器)表示获取元素 例如 $("p") $("#abc") $(".del") 用法2:放入一个函数&#xff0c;表示文档就绪函数 例如 $(function(){代…

TikTok挑战榜单:全球用户如何共襄盛举

TikTok作为全球最受欢迎的短视频应用之一&#xff0c;在这个平台上&#xff0c;用户们通过参与各种挑战&#xff0c;创造了无数令人惊叹的短视频。 本文将深入探讨TikTok挑战榜单的现象&#xff0c;探究全球用户如何共襄盛举&#xff0c;以及这种创意激发和社交互动如何成为Ti…

go-zero开发入门-API网关鉴权开发示例

本文是go-zero开发入门-API网关开发示例一文的延伸&#xff0c;继续之前请先阅读此文。 在项目根目录下创建子目录 middleware&#xff0c;在此目录下创建文件 auth.go&#xff0c;内容如下&#xff1a; // 鉴权中间件 package middlewareimport ("context""e…

前端开发常用的Vscode插件整理(持续更新)

本文记录用vscode进行前端开发时&#xff0c;常用到的有用的vscode插件&#xff0c;将不定时更新&#xff5e; 1、Chinese (Simplified) 将编辑器变成简体中文 2、vscode-icon 让 vscode 资源树目录加上图标&#xff0c;官方出品的图标库 3、Import Cost 引入包大小计算,对于…