热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

csspxemrem%vwvhvm区别

前言在传统项目开发中,我们只会用到px、%、em这几个单位长度,它们可以适用大部分项目的开发,并且拥有较好的兼容性。而从css3开始,浏览器对逻辑单位的支持又提升了新的境界,增加了

前言

在传统项目开发中,我们只会用到 px、%、em 这几个单位长度,它们可以适用大部分项目的开发,并且拥有较好的兼容性。

而从 css3 开始,浏览器对逻辑单位的支持又提升了新的境界,增加了 rem、vh、vw、vm 等新的单位长度。

新技术的出现必然是为了解决旧技术存在的问题和不便,我们利用这些新的单位可以开发出更为完善的响应式页面,从而覆盖更多不同分辨率的终端。

下面介绍下它们分别是什么?以及如何使用?


px

px 像素(Pixel),是指由图像的小方格组成的,可以将像素视为整个图像中不可分割的单位或者是元素。

比如我们常常听到的电脑像素是 1024x768 的,表示的是水平方向是 1024 个像素点,垂直方向是 768个 像素点。

px 是图像的绝对长度单位,是相对于显示器屏幕分辨率而言的,是图像上最小的一个点,一旦设置了就无法因为适应页面大小而改变。

为了解决 px 的问题,提出了相对长度单位 em 。


em

em 是相对长度单位,在 font-size 中使用是相对于父元素的字体大小;在其他属性中使用是相对于当前对象内文本的字体尺寸。如没有对行内文本的字体尺寸设置,则相对于浏览器的默认字体尺寸,一般为16px。


em 单位如何转换为像素值

任意浏览器的默认字体高 (font-size) 都是 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 作为单位就行了。

所以我们在写 CSS 的时候,需要注意两点:



  1. body选择器中声明 Font-size=62.5%

  2. 将你的原来的 px 数值除以 10,然后换上 em 作为单位;

  3. 重新计算那些被放大的字体的 em 数值。避免字体大小的重复声明。

也就是避免 1.2 * 1.2= 1.44 的现象。比如说你在 #content 中声明了字体大小为 1.2em,那么在声明 p 的字体大小时就只能是 1em,而不是1.2em, 因为此 em 非彼 em,它因继承 #content 的字体高而变为了 1em=12px。

em 的值并不是固定的,而是会继承父级元素的字体大小,所以 em 使用起来依旧有诸多不便,复杂的嵌套逻辑使得更改了部分元素会产生字体大小变化的连锁反应


rem

rem 是 CSS3 新增加的相对单位,即 root em,是相较于根元素(html)。rem 的根据根节点使得计算更清晰。

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

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

下面就是一个例子:

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

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



rem 单位如何转换为像素值

当使用 rem 单位,他们转化为像素大小取决于页根元素的字体大小,即 html 元素的字体大小。

html {
font-size: 16px;
}

例如,根元素的字体大小 16px,10rem 将等同于 160px,即 10 x 16 = 160。

rem 值等于,实际 px 值除以 font-size 值。


px 与 rem 的选择?

对于只需要适配少部分手机设备,且分辨率对页面影响不大的,使用 px 即可 。

对于需要适配各种移动设备,使用 rem,例如只需要适配 iPhone 和 iPad 等分辨率差别比较挺大的设备。


vw、vh

vw、vh、vmax、vmin 这四个单位都是基于视口

vw 是相对视口(viewport)的宽度而定的,长度等于视口宽度的 1/100

假如浏览器的宽度为 200px,那么 1vw 就等于 2px(200px/100)

vh 是相对视口(viewport)的高度而定的,长度等于视口高度的 1/100

假如浏览器的高度为 500px,那么 1vh 就等于 5px(500px/100)

vmin 和 vmax 是相对于视口的高度和宽度两者之间的最小值或最大值


%(百分比)

在许多情况下,百分比与长度的处理方法是一样的。百分比的问题在于,它们总是相对于其他值设置的。例如,如果将元素的字体大小设置为百分比,那么它将是元素父元素字体大小的百分比。如果使用百分比作为宽度值,那么它将是父值宽度的百分比。

1、对于普通定位元素就是我们理解的父元素

2、对于 position: absolute; 的元素是相对于已定位的父元素

3、对于 position: fixed; 的元素是相对于 ViewPort(可视窗口)


vm

css3 新单位,相对于视口的宽度或高度中较小的那个

其中最小的那个被均分为 100 单位的 vm

比如:浏览器高度 900px,宽度 1200px,取最小的浏览器高度,1 vm = 900px/100 = 9 px

缺点:兼容性差



推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文讨论了为什么在main.js中写import不会全局生效的问题,并提供了解决方案。在每一个vue文件中都需要写import语句才能使其生效,而在main.js中写import语句则不会全局生效。本文还介绍了使用Swal和sweetalert2库的示例。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
author-avatar
莫念暧昧_zTq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有