css几种常见的单位

1、px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。Windows系统默认是96dpi,Apple系统默认是72dpi。

2、em(相对长度单位,相对于当前对象内文本的字体尺寸):是一个相对长度单位,最初是指字母M的宽度,故名em。现指的是字符宽度的倍数,用法类似百分比,如:0.8em, 1.2em,2em等。通常1em=16px。

3、pt (point,磅):是一个物理长度单位,指的是72分之一英寸。pt=1/72(英寸), px=1/dpi(英寸)

4、rem(root em,根em):是CSS3新增的一个相对单位,这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

1、em与px的问题

px是何物?

px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。(引自CSS2.0手册)

em是相对长度单位。相对于当前对象内文本的字体尺寸。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。(引自CSS2.0手册)

PX特点

  1. IE无法调整那些使用px作为单位的字体大小;

  2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位;

  3. Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。

em是何物?
em 指字体高,任意浏览器的默认字体高都是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作为单位就行了。

em特点:
1em指的是一个字体的大小,它会继承父级元素的字体大小,因此并不是一个固定的值。任何浏览器的默认字体大小都是16px。因此,12px = 0.75em。实际应用中为了方便换算,通常会如下设置样式:
CSS代码
html { font-size: 62.5%; }

这样,1em = 10px。我们常用的1.2em理论上就是12px。但是,这个换算在IE浏览器下不成立,1.2em会比12px稍大一些,解决办法是把html标签样式中的62.5%改成63%,即:
CSS代码
html { font-size: 63%; }

在 中文的文章中,一般会在段首空两格。如果用px作为单位,对12px字体来说需要空出24px,对14px字体来说需要空出28px……这样换算非常不通 用。如果用上em单位,这个问题就很好解决了,1个字的大小就是1em,那两个字的大小就是2em。因此,只需这样定义就行了:
CSS代码
p { text-indent: 2em; }

em和px两种字体单位的区别
字体单位应该用em而不用px,原因简单来说就是支持IE6下的字体缩放,在页面中按ctrl+滚轮,字体以px为单位的网站没有反应。px是绝对单位,不支持IE的缩放,em是相对单位。
我在调整本blog的时候,发现不仅仅是字体,将行距(line-height),和纵向高度的单位都用em。保证缩放时候的整体性。

em有如下特点:

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

em重写步骤:

  1. body选择器中声明Font-size=62.5%;
  2. 将你的原来的px数值除以10,然后换上em作为单位;
    简 单吧,如果只需要以上两步就能解决问题的话,可能就没人用px了。经过以上两步,你会发现你的网站字体大得出乎想象。因为em的值不固定,又会继承父级 元素的大小,你可能会在content这个div里把字体大小设为1.2em, 也就是12px。然后你又把选择器p的字体大小也设为1.2em,但如果p属于content的子级的话,p的字体大小就不是12px,而是1.2em= 1.2 * 12px=14.4px。这是因为content的字体大小被设为1.2em,这个em值继承其父级元素body的大小,也就是16px * 62.5% * 1.2=12px, 而p作为其子级,em则继承content的字体高,也就是12px。所以p的1.2em就不再是12px,而是14.4px。
  3. 重新计算那些被放大的字体的em数值。避免字体大小的重复声明,也就是避免以上提到的1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。
    IE中的12px汉字:
    完成 em转换时还发现了一个诡异的现象,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而 是稍大一点。你只需在body选择器中把62.5%换成63%就能正常显示了。原因可能是IE处理汉字时,对于浮点的取值精确度有 限。本现象只发生在12px的汉字,英文不存在此现象。解决方法就是把style.css中的62.5%换 为63%。

一个px、em、pt单位转换工具:

地址:http://pxtoem.com/

2、rem特点

    rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

举例:

p {font-size:14px; font-size:.875rem;}

注意:

    选择使用什么字体单位主要由你的项目来决定,如果你的用户群都使用最新版的浏览器,那推荐使用rem,如果要考虑兼容性,那就使用px,或者两者同时使用。

css几种常见的单位相关推荐

  1. CSS几种常见的页面布局方式介绍

    问题:CSS几种常见的页面布局方式介绍? CSS常见的有以下7种,必须要掌握的是前3种: flex弹性盒子(弹性布局): rem布局(一般都是flex+rem使用的比较多): 响应式布局(响应式布局的 ...

  2. CSS几种常见的文字动态效果

    前言:要实现CSS字体动态效果,就要用到CSS3的animation和@keyframes属性.关于这两个属性就不过多的解释了,在我上上上篇文章有过讲解在目录的'动画和过滤样式'进入 ,想了解的,可以 ...

  3. css 几种常见的百分比设置和使用,百分比是相对哪个元素或属性的比例

    前端写样式时我们为了满足自适应通常会使用百分比来设置元素的宽高间距等,只有明确的知道设置百分比是相对哪个元素的哪个属性而言的才能正确的得到期望的效果. 说在前面,包含块的W3C解释 1.width:相 ...

  4. html中页面布局技术,CSS基础之几种常见的页面布局

    CSS基础之几种常见的页面布局 本人前端菜鸟一枚,在学习 CSS 过程中发现网上流传的教程参差不齐,要么内容不够详细,要么方法就是错的,按照它给出的方法不能实现我想要的目的.于是自己决定写一篇经验.如 ...

  5. CSS元素高度塌陷的几种常见解决办法!

    同学们在进行页面布局的时候,经常会使用到float浮动进行样式控制,但如果我们没有设置父元素的高度的时候使用浮动就会导致后面的子元素出现问题,也就是高度塌陷.下面小千就给大家介绍几种常见的解决CSS高 ...

  6. 5 种常见的 CSS 布局,快看看你会几种?

    作者 | 浪里行舟 责编 | 胡巍巍 本文将介绍如下几种常见的布局: 其中实现三栏布局有多种方式,本文着重介绍圣杯布局和双飞翼布局.另外几种可以猛戳实现三栏布局的几种方法. 单列布局 常见的单列布局有 ...

  7. css 水平垂直居中的几种常见方式

    下面是几种常见的水平垂直居中方式,可在不同情形下方便采用不同的方式 html <body><div class="box"><div class=&q ...

  8. 使用CSS替代JS实现几种常见的特效

    本文介绍用CSS代替JS来实现我们页面中所需要的几种常见效果.包括导航高亮,下拉菜单等. 1. 导航高亮      导航高亮是一种很常见的问题,包括当前页面的导航在菜单里面高亮和hover时高亮.你可 ...

  9. 用JS来动态设置CSS样式的常见8种方式。

    转自:微点阅读  https://www.weidianyuedu.com 如何用JS来动态设置CSS样式,常见的有以下几种 1. 直接设置style的属性  某些情况用这个设置 !important ...

最新文章

  1. Redis源码分析-TCMalloc
  2. SaaS到底是什么,如何做?这份笔记讲明白了
  3. Facebook人工智能实验室提出「全景分割」,实现实例分割和语义分割的统一
  4. 下列符合c语言语法的字符常量是,C语言程序设计(周经亚)选择题练习-chapter 5.doc...
  5. 实验结果报告与实验总结_教科版科学四年级上册实验报告
  6. TensorFlow 2.0 快速上手教程与手写数字识别例子讲解
  7. 文件系统(文件系统目录结构、磁盘分区、虚拟文件系统)、linux内核结构框图
  8. HTML的xmlns的作用
  9. yiilite.php,YII Framework学习教程-YII的V-view的render若干函数-2011-11-17 | 学步园
  10. Flutter基础—常用控件之文本
  11. 剧情介绍:“造雨人”
  12. 搜狗输入法界面简化设置
  13. 计算机名、有线网卡mac地址、无线网卡mac地址
  14. 自制Beamer主题
  15. java实现基于okhttp3的http请求封装(GET/POST/PUT/DELETE等方法)
  16. 二代证|港澳台居民居住证|电子护照阅读器 读卡器MEPR200+的应用与二次开发攻略
  17. 九度 OJ 之 题目1538:GrassLand密码
  18. 阿里云总监课,存储系统设计——NVMe SSD性能影响因素一探究竟
  19. 安卓手机测评_鲁大师又在找事?一季度安卓系统流畅度排名出炉,小米MIUI吊车尾...
  20. RationalDMIS 7.1 建立坐标系(3-2-1法)

热门文章

  1. 共襄信创产业生态建设之力|DataPipeline加入北京信创工委会
  2. 真机安装AKP 遇到的问题
  3. 亚马逊服务器修改盘大小
  4. 感谢德福德矩阵研发团队成功研发
  5. python九九乘法表下三角_使用循环语句编程输出下三角形状的九九乘法表
  6. 关于PDF.js插件页面旋转的问题
  7. The Ludlows
  8. matlab 同花顺接口,数据不够?研究不透?iFinD免费版数据接口来“宠”你
  9. 测试开发工作者日记:2020.11.27
  10. 2020计算机考研院校推免,2020考研:热门院校推免比例超90%?他们说尝试了就不后悔!...