(CSS) px,pt,em,rem的区别

news/2024/6/18 22:00:23

一、绝对长度单位

绝对长度单位代表一个物理测量,当输出介质的物理性质是已知的,如用于打印布局。这是通过将一个单元锚定到一个物理单元,并将其定义为相对于它的另一个。对于低分辨率的设备,如屏幕、高分辨率设备,如打印机,该锚定是不同的。

1.1 px(像素)

像素与显示设备相关。对于屏幕显示,通常是一个设备像素(点)的显示。对于打印机和高分辨率的屏幕,一个px意味着多个设备像素,因此,每英寸的像素的数量保持在96左右。

当你需要精确地像素时,用px设定字体大小是一种好方法。一像素的大小是固定的。这是一个不取决于平台的、跨浏览器的准确设置字体大小高度为你所想的像素大小的方法。因为不同浏览器为得到同样效果的算法可能不同,所以显示效果可能有微小的不同。

用像素字体定义使得字体大小不可由用户的浏览器改变。所以,如果想创造能广泛使用的设计请避免使用像素设定字体。

1.2 pt(磅)

1pt = (1 / 72)in
另外:1in = 96px3pt = 4px25.4mm = 96px等。

二、相对长度单位

相对字体大小的单位

2.1 em

em值的大小是动态的。当定义font-size属性时,1em等于元素的父元素的字体大小。如果你在网页中任何地方都没有设置文字大小的话,那它将等于浏览器默认文字大小,通常是16px。所以通常1em = 16px2em = 32px。如果你设置了body元素的字体大小为20px,那1em = 20px2em = 40px。那个2就是当前em`大小的倍数。

<body>
  <div class = "parent">
    <div class = "child></div>
  </div>
</body>
body {
  font-size: 62.5%; /* 1em = 10px */
}
.parent {
  font-size: 2em; /* 2em = 20px */
}
.child {
  font-size: 2em; /* 2em = 40px 相对于.parent元素 */
}

使用时需注意1em指的是父元素的字体大小。

2.2 remroot em

remCSS3新增的单位,1rem等于html根元素的字体大小。通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

<body>
  <div class = "parent">
    <div class = "child></div>
  </div>
</body>
body {
  font-size: 62.5%; /* 1rem = 10px */
}
.parent {
  font-size: 2rem; /* 2rem = 20px */
}
.child {
  font-size: 2rem; /* 2rem = 20px 相对于body元素 */
}

IE8及以下不支持rem,可多写一个px为单位的样式即可。

参考

  1. font-size - MDN

  2. <lengh> - MDN


http://www.niftyadmin.cn/n/647553.html

相关文章

(一)数组或对象中最会一个属性是否该加逗号的测试

1、结论&#xff1a;在IE8中有兼容问题、会将逗号后面的空也算作一个属性&#xff0c;所以最后一个属性末不要加逗号 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title> </hea…

Java进阶之深入理解Java的接口和抽象类

前言 对于面向对象编程来说&#xff0c;抽象是它的一大特征之一。在Java中&#xff0c;可以通过两种形式来体现OOP的抽象&#xff1a;接口和抽象类。这两者有太多相似的地方&#xff0c;又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用&#xff0c;但是实际…

Apache的HttpClient创建CloseableHttpClient的例子

Apache的HttpClient可以被用于从客户端发送HTTP请求到服务器端, 使用Apache的HttpClient发送GET和POST请求的步骤如下: 1. 使用帮助类HttpClients创建CloseableHttpClient对象. 2. 基于要发送的HTTP请求类型创建HttpGet或者HttpPost实例. 3. 使用addHeader方法添加请求头部…

Java synchronized关键字用法(清晰易懂)

本篇随笔主要介绍 java 中 synchronized 关键字常用法&#xff0c;主要有以下四个方面&#xff1a; 1、实例方法同步 2、静态方法同步 3、实例方法中同步块 4、静态方法中同步块 我觉得在学习synchronized关键字之前&#xff0c;我们首先需要知道以下一点&#xff1a;Java 中每…

StringUtils.isNumeric使用

网上查"java 判断字符串为数字"阅资料&#xff0c;大部分资料都在讲字符串转为整数的情况&#xff0c;很少资料提及关于负数和小数的情况&#xff0c;最终决定采用StringUtils.isNumberic这个方法差别&#xff0c; 在测试导出时发现有报错&#xff0c;用debug模块一…

Terminator 安装与使用

2019独角兽企业重金招聘Python工程师标准>>> 对Linux系统进行管理时&#xff0c;我们经常需要通过终端窗口输入各种操作命令。在GNOME桌面环境下&#xff0c;GNOME终端(gnome-terminal) 是我们经常使用的终端程序&#xff0c;每次运行该程序都将打开一个单独的终端窗…

在javaweb中将excel表格导入存放数据库

在jsp页面 <html> <body> <head> <script type"text/javascript"> function fileChange(input){var fileName input.value;if(fileName.length > 1 && fileName ) { var ldot fileName.lastIndexOf(".");var …

Android获取View对应的Bitmap

我的应用里面有一个需求&#xff0c;将一个画面分享出去&#xff0c;这个画面底层是一个View&#xff0c;所以首先要把这个View转换成Bitmap&#xff0c;然后在分享这个bitmap即可。话不多说&#xff0c;直接上代码。 有个地方需要注意一下&#xff1a;就是//Draw background的…