这两天在公司做手机端H5页面,第一次开发没什么经验,对rem, pt, ppi, dpr这些概念完全不懂,看了很多博客,现总结如下。

对于不同像素宽度的手机,如何做到每一个元素自动缩放?

rem: font size of the root element

rem作为一个单位,单位大小由它第一代老祖宗的font-size的大小决定,也就是html标签的font-size。例如我们设置html的font-size为10px,那么1.2rem就是12px,我们在所有需要用到px的地方全都使用rem来代替,这样我们只需要改变html的font-size就可以动态地改变内部所有元素的尺寸了。

实例

我们公司提供了宽度为375pt的设计图(pt后面会解释,暂时理解为px就好)。我以这个版本为基础来写页面。我设置html的font-size为10px,那么设计图上的所有关于pt的标注,我只要除以10,再加上rem作为单位就OK了。然后我只要在初始化页面的函数中加上如下代码,就完成了完美的适配。

let htmlFontSize = 10 * width / 375 + 'px'

document.getElementsByTagName('html')[0].style.fontSize = htmlFontSize

举个栗子:此时手机的宽度变成了414pt,那么根据公式,html的font-size动态地变成了11.04px,页面的其他元素也就跟着放大了。

PS:

375pt是iphone6/7/8的宽度。

414pt是iphone6/7/8 plus的宽度。

pt 和 px 是什么关系呢?

上面我们说到公司里给出的设计图的单位是pt,而我们写页面的时候使用的单位是px,这两者之间有什么联系呢?我们先了解一下逻辑像素和物理像素,以及一些引伸的概念。

逻辑像素pt(点)

html css中的使用的单位像素px实际上指的就是逻辑像素pt,一个逻辑像素可能包含多个物理像素(1个,2个或者3个)

物理像素px

这个px并不是我们css中用的px,而是一个一个真实的像素点。是photoshop中用的那个px。

dpr(device pixel ratio)

DPR = 物理像素 / 逻辑像素,iphone 3GS的dpr为1,iphone 4/4s的dpr为2。其他型号的dpr见下表。

ppi(Pixels Per Inch)

ppi = 像素数量(pixel) / 显示器的长或宽(inch)

第一代iphone手机的像素密度是163ppi,但是到了iPhone4的时候像素密度是326ppi (163 * 2),开发者发现初代的1px(物理像素)和iphone4下的1px(物理像素)显示尺寸(物理尺寸)不相等了,无疑将增加适配的工作量。于是iphone开发者提出了一个pt的概念,即采用初代iphone1个像素点的大小作为基准,记作1pt(point),也就是说1pt在iphone4下的大小=2px的宽高。

dpr 和 ppi的关系:ppi 和 dpr 成正比

安卓的dp

本质上和ios的pt是一样的

实例(iphone机型)

设备****iPhone

宽****Width

高****Height

对角线****Diagonal

逻辑分辨率(point)

Scale Factor(dpr)

设备分辨率(pixel)

PPI

3GS

2.4 inches (62.1 mm)

4.5 inches (115.5 mm)

3.5-inch

320x480

@1x

320x480

163

4(s)

2.31 inches (58.6 mm)

4.5 inches (115.2 mm)

3.5-inch

320x480

@2x

640x960

326

5c

2.33 inches (59.2 mm)

4.90 inches (124.4 mm)

4-inch

320x568

@2x

640x1136

326

5(s)

2.31 inches (58.6 mm)

4.87 inches (123.8 mm)

4-inch

320x568

@2x

640x1136

326

6

2.64 inches (67.1 mm)

5.44 inches (138.3 mm)

4.7-inch

375x667

@2x

750x1334

326

6+

3.07 inches (77.9 mm)

6.23 inches (158.2 mm)

5.5-inch

414x736

@3x

(1242x2208->)1080x1920

401

链接

h5适配华为手机_手机端H5页面适配 踩坑相关推荐

  1. h5适配华为手机_手机端h5适配mete标签

    使用viewport meta标签可以提升页面在设备上的表现效果,典型地,你可以设置视口(viewport)的宽度和初始缩放比例. 举个例子来说,如果页面的宽度小于980px,你可以设置视口的宽度以适 ...

  2. h5适配华为手机_知道为什么建站大多选H5自适应网站吗?现在我就告诉你

    H5自适应网站能满足所有类型终端用户的需求,能带给所有终端用户最优的访问体验.虽然专门为手机或者平板电脑设计的移动网站,一样能满足部分访问者的需求.但据数据调查显示,网民常用常用的移动终端设备有230 ...

  3. h5可拖动悬浮按钮_手机端H5悬浮按钮怎么实现的呢?

    最近公司项目需要在H5页面上悬浮一个按钮,同时要求按钮是可以拖动的并且需要可以自动贴边,无奈前端小伙伴不怎么给力,无奈只能我顶上了.我觉得这种情况应该可以抽出一个组件,这次就仔细探讨一下悬浮按钮的实现 ...

  4. h5精准定位_手机端H5地理定位结合腾讯地图API实现精准定位!

    最近项目需求,需要精准定位,但是网上搜了好久都没有解决办法,当然微信定位的方案还是可行的,手机H5 就没有这方面的教程了. 捣鼓好久啊,花了一早上的时间研究出来了.这里有个大坑,要开启手机的定位才能获 ...

  5. html实现手机显示效果,手机端分类页面的效果图实现

    先谈谈这个问题怎么解决吧,一开始直接设定了leftBar的高度为100%,但发现没什么用.在老大的提示下,先设置了html.body等leftBar的父元素的高度为100%,再设leftBar的高度为 ...

  6. 手机端H5开发,屏幕不同尺寸适配方法(屏幕自适应)

    最近在接触手机端H5开发,然后设计师将设计图发给我们进行开发,对于第一次接触详细设计图开发的我来说,觉得很新颖毕竟一直没有接触这么正规的设计图(字体样式,颜色,大小等等),之后再开发的时候,就遇到了一 ...

  7. pc网站和手机端h5网站开发接入微信支付

    有关支付类开发,现在比以前要简单很多了,微信和支付宝两大支付巨头早已经给出了非常详细的接入文档,并且迭代了好多版本,但在实际开发中其实文档的可读性还是有些磕磕绊绊的,而且也有一些坑需要注意.以微信支付 ...

  8. 奔图无线版的打印机_手机端WPS打印文档的操作步骤

    奔图无线版的打印机_手机端WPS打印文档的操作步骤 操作思路: 1. 先到打印机上打印出一份打印机自己内部的热点WiFi名称和密码: 2. 然后手机端连接这个热点WiFi(会整个手机断开网络的哦,连流 ...

  9. php 手机端播放器,用JS代码适配电脑端和手机端播放器代码

    用JS代码适配电脑端和手机端播放器代码 蓝叶    网站设计    2016-08-10    10668    9评论 随着html5的崛起,很多网站都采用html5代码来设计,让网站美观大气,但是 ...

最新文章

  1. [精品]CSAPP Bomb Lab 解题报告(七)——隐藏关卡
  2. 语言之输出png图片_什么是PPML?如何输出PPML文档?
  3. mysql boolean 和bool_关于 MySQL 的 boolean 和 tinyint(1)
  4. android 导航动画,安利一个Android导航库
  5. 从链接中获取文件名及扩展名
  6. 点击键盘上的“Next”button实现文本框焦点跳转
  7. java jshell_JDK11 | 第二篇 : JShell 工具
  8. 如何安装服务器操作系统 HP服务器系统安装
  9. mysql 查询当前时间到毫秒_MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
  10. 电脑重复文件扫描工具清理:Easy duplicate finder 5.10注册破解版
  11. 模仿努比亚网站二(广告区域)
  12. 刘作虎:二次购机潮即文艺复兴时
  13. 主流智能手机屏幕材质介绍
  14. 贪吃蛇之一维数组实现
  15. 3D游戏建模:游戏建模都要用到哪些软件?
  16. 数据库系统概论----关系运算之除运算
  17. 俄大神 lopatkin Windows 精简优化系统 - 工具软件
  18. Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明
  19. Python文件读写 w+ 与 r+ 到底如何操作
  20. fxsvr2.exe

热门文章

  1. IPv4、IPv6地址、组播地址及子网子划分详解四
  2. SAR成像(四):多普勒频移的计算
  3. 什么是DNS劫持与DNS劫持常见手段总结
  4. 09-Figma-工具栏-预览以及分享设置
  5. 微生物差异丰度分析方法的综合评价:现状及潜在解决方案
  6. 关于Altium Designer10(AD10)原理图中文乱码变问号?的问题
  7. 统计数组长度函数php_php数组长度函数的例子
  8. 北风:如何获取带有留言功能的微信公众号?我如何通过它来套利
  9. gdp 栅格数据_AE 栅格数据使用总结
  10. Linux,用户与用户组的创建与分配