我的编程空间,编程开发者的网络收藏夹
学习永远不晚

px、em和rem怎么应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

px、em和rem怎么应用

这篇文章主要讲解了“px、em和rem怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“px、em和rem怎么应用”吧!

1px有多大?

我们先了解几个概念:

关键概念

设备像素:设备屏幕实际拥有的像素点一般来说:宽度方向有1920个像素点,长度方向有1080个像素点。

逻辑像素:CSS 的像素单位(就是我们这次要讨论的css的px),其尺寸大小是相对的,也称为独立像素

分辨率:屏长的设备像素 × 屏宽的设备像素(1920 * 1080)

ppi(pixels per inch):像素密度,表示沿对角线每英寸长度的像素数目(单位是dpi),越大显示的越细腻

缩放因子(Scale Factor):逻辑像素相对于设备像素的放大比例,可通过` window.devicePixelRatio `获得,pc上可以用个个性化来设置,但二者并不完全等同

上面概念直接的关系

关系一:

  设备尺寸 × 像素密度 = 分辨率(设备像素)

举例:

  iphone6s 对角线长度为5.5 inches,像素密度401 ppi,分辨率 1920 * 1080,计算可得对角线的设备像素为2205.5。

  5.5 * 401 = 2205.5

关系二:

  逻辑像素(css的px) = 设备像素 × 缩放因子

举例:

  iphone6逻辑像素为375 * 667,分辨率为750 * 1334,缩放因子为2

  1个逻辑像素(1px) = 设备宽度的1/375

  1个设备像素 = 设备宽度的1/750

  1/375 = 1/750 * 2

由公式得出的结论

PC端分辨率一样的情况下,屏幕尺寸越大,显示的越模糊(因为dpi越小)。

举例说明:

我们的台式机电脑屏幕一般是32英寸,分辨率为:1920 * 1080。而一般笔记本是15.6英寸,分辨率也是:1920*1080的。由公式一:当分辨率一样时,设备尺寸越大,像素密度越小。所以32寸的台式电脑看上去模糊一些。

相同分辨率,相同缩放因子情况下,不同设备尺寸下,表现是一致的举例说明:

平时我们在pc上24英寸的电脑上开发的网页直接写的(px),在不做任何兼容处理的情况下,在15.6英寸的笔记本上也能正常显示。由公式二:因为一般pc端,默认情况下缩放因子为1(window.devicePixelRatio = 1),分辨率也一样(1920 * 1080),那么得到的**逻辑像素(css的px)**也是一样的。所以你在分辨率一样的情况下,在大屏电脑上设置的100px,在小屏电脑上也是100px。只是他们表现出来的大小不一致,小屏上面的1px更小。

如何将pc网页放到手机上展示?

我们可以调整网页在移动端上的缩放比例,这个值就是viewport。默认情况下,移动端浏览器会将 viewport 宽度设为980px(也有可能是1024px 或其它值),也就是说1px = 设备屏幕宽度的1/980。这跟缩放因子没有任何关系。这时的1px 非常小,所有的元素都变得非常小,移动端浏览器之所以这么做,是为了尽可能完整的显示 PC 端的网页,然后允许用户通过缩放来查看细节。显然体验就别的特别差了,很多本来就比较小的元素看都看不清了。第二种方式是我们设置一个适当的缩放比例。一般我们这样设置:

<meta name="viewport" content="width=device-width">

那么对于iphone6来说根据公式:1px = 1/750(分辨率) * 2(缩放因子) = 1/ 375。显然比刚才的1/980大了不少,那么我们的元素如果还是按照原来的px去设置,那么屏幕肯定展示不下去了,这时候,如果我们的元素的px值能根据1px的大小是动态调整,我们的网页就完美了,这时候em,rem就派上用场了。

em是什么?

上面提到,想让我们的网页在不同分辨率的设备(移动端)上正常显示,最好我们的元素长宽,外边距,内边距等都是动态的

方式一:

上面说到,我们在移动端一般这样设置:

<meta name="viewport" content="width=device-width;initial-scale=1" >

这个时候我们1px的大小就已知,iPhone6上为:1px = 1/750(分辨率) * 2(缩放因子) = 1/ 375。既然1px的大小固定了,那么我们只能动态改变一个元素设置的px了,比如说在iPhone8上是120px;而在iPhone6上需要是100px。这时候我们可以用js去动态计算,根据屏幕大小。但是显然很麻烦,需要对每一个元素的长宽,内边距,外边距都需要调整,这显然是一个巨大的工程。这时候我们就可以用到em这个单位了,em单位的名称为相对长度单位,是根据它父元素的字体大小来计算的,一般默认情况下:16px = 1em。如果父元素font-size:16px,子元素margin:0.8em。那么得到的大小就是:0.8 * 16 =12.8。当所有单位都采用em时,我们只需要改变body的font-size,那么其他的元素宽度就能动态变化了,显然方便很多。

rem是什么?

'rem’是’css3’新增的一个相对长度单位,它的出现是为了解决em的缺点,em可以说是相对于父级元素的字体大小,当父级元素字体大小改变时,又得重新计算。rem出现就可以解决这样的问题,rem只相对于根目录,即HTML元素。有了rem这个单位,我们只需要调整根元素html的font-size就能达到所有元素的动态适配了,附上一段常用适配代码:

 
(function (doc, win) {
 var docEl = win.document.documentElement;
 var resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
 
 var refreshRem = function () {
   var clientWidth = win.innerWidth
                     || doc.documentElement.clientWidth
                     || doc.body.clientWidth;

   console.log(clientWidth)
   if (!clientWidth) return;
   var fz;
   var width = clientWidth;
   fz = 16 * width / 375;
   docEl.style.fontSize = fz + 'px';//这样每一份也是16px,即1rem=16px
 };

 if (!doc.addEventListener) return;
 win.addEventListener(resizeEvt, refreshRem, false);
 doc.addEventListener('DOMContentLoaded', refreshRem, false);
 refreshRem();

})(document, window);

感谢各位的阅读,以上就是“px、em和rem怎么应用”的内容了,经过本文的学习后,相信大家对px、em和rem怎么应用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

px、em和rem怎么应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

px、em和rem怎么应用

这篇文章主要讲解了“px、em和rem怎么应用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“px、em和rem怎么应用”吧!1px有多大?我们先了解几个概念:关键概念设备像素:设备屏幕实际拥
2023-06-03

CSS 单位属性指南:em,rem,px 和 vw/vh

CSS 单位属性指南:em,rem,px 和 vw/vh在编写CSS样式时,选择合适的单位属性是非常重要的。本文将介绍几种常用的单位属性:em,rem,px 和 vw/vh,并提供具体的代码示例。emem(字体尺寸单位)是相对于父元素字体尺
2023-10-25

CSS 单位属性优化技巧:em,rem,px 和 vw/vh

引言:在网页设计和开发中,CSS 单位属性起着非常重要的作用。正确选择和使用合适的单位属性可以使得页面在不同的设备和屏幕尺寸下展示得更加美观和一致。本文将介绍一些常用的 CSS 单位属性,并提供具体的代码示例来帮助读者更好地掌握这些优化技巧
2023-10-21

CSS中px、em、rem、%、vw、vh单位之间的区别是什么

这篇文章将为大家详细讲解有关CSS中px、em、rem、%、vw、vh单位之间的区别是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1 、pxpx就是pixel(像素)的缩写,相对长度单位,相对于屏幕
2023-06-08

vue px转rem怎么配置

本篇内容主要讲解“vue px转rem怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue px转rem怎么配置”吧!方法一一、配置与安装步骤:1、在 Vue 项目的 src 文件夹下创
2023-06-22

使用Rem怎么实现自适应布局

本篇文章给大家分享的是有关使用Rem怎么实现自适应布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在移动端我们一般会设置布局视口宽度=设备宽度,即内容呈现的区域在设备屏幕内。
2023-06-08

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录