先给进来看文章的你点个赞

尺寸适配应该由开发同事负责处理,处理不好是他的问题,你有兴趣了解这些让人头疼的事,证明你是共产主义好社畜,还有工作量不饱和, Good for you ~ 适配问题是影响设计复现的常见问题,在你 Mac 上秀气的设计图拿去让经验不足的开发写出来,就有可能变得傻大傻大。你没错,开发也很冤,是按着你给的数值做的呀,问题不是数错了,有可能是尺寸单位用错了。

怎么才能做好适配

首先来理解各种尺寸单位

上表囊括所有界面表现常用单位,只差兼容性奇差的「vm」和基本淘汰的「em」

「PX 像素」 设计师最熟悉的尺寸单位,px 是 pixel 的缩写,即像素,是 抽象的尺寸单位 ,表示位图中最小的一个像素信息点,每一个这样的点只会有一个色值。 例如 #FFFFFF 白色 或 rgba(255,255,255,0.5) 半透明白 但是这个信息点到底有多大,则依赖于显示屏的物理性能。 「PT-iOS研发用」 pt 是 point 的缩写,点,印刷行业常用单位,等于 1/72 英寸,是 绝对的固定的尺寸单位 。 软件开发时 iOS 使用 pt 作为尺寸单位,iOS 也是唯一使用绝对尺寸单位的平台,安卓和 H5 都不用 pt。这可能和乔帮主极致用户体验要求有关,各种设备上看到的东西必须是一样大,这样的体验才一致。

「DP-安卓研发用(控件)」 Density-independent Pixel 简称dp,是 安卓开发用长度单位 ,1dp 表示在160ppi 分辨率屏幕上的 1px。不同设备屏幕的 ppi 不同,不同设备上 1dp 代表几个像素也是不一样的。ppi后面会说。 下图是安卓屏幕密度对应表,mdpi、xhdpi 等相当于 iOS 中的@1x、@2x。 160dpi 的设备使用一倍图,320dpi 使用二倍图。这里说一个 750px 设计图一稿适配的小坑 750的二倍图上传到蓝湖,iOS端没问题,但安卓方面蓝湖会以 750 作为 xhdpi 的宽,安卓研发按照这个数据做出来的界面会比你的设计图放大4%。在信息密集的产品中界面被放大4%足以引发视觉灾难。 所以安卓需要手动将尺寸设置为 720,蓝湖会按比例等比缩小4%,这样实现出来的效果才是设计图表达的效果,设置方式见下图。 如果你是按安卓标准尺寸出图,即 360 一倍、720 二倍,那么 iOS 看图时同样需要手动调尺寸,但是不建议用 720 出图,因为小程序官方规定基于 750 出图,所以 720 不但不能直接适配 iOS,也不能直接适配小程序。 「SP -安卓研发用(文字)」 Scale-independent Pixel 简称sp,是 安卓开发用字号单位 ,安卓系统有单独调节文字大小的功能,所以字号单独有单位,在默认情况下,1sp = 1dp,文字放大时 1sp > 1dp。 「REM -H5用(字号)」 rem 是相对于某个根元素的 H5开发用字号单位 ,这个根元素是浏览器指定的一个字号值,默认情况下是16px。 例如,设计图中一行文本是24px,使用rem单位代码应写为  font-size: 1.5rem 当浏览器窗口尺寸刚好和设计图相同时,文字显示为24px,当浏览器窗口尺寸缩小50%后,JS脚本会动态更改浏览器默认字号为16px*50%=8px,此时实际展示字号就变成了1.5rem*8px=12px,由24px降到12px,也随之缩小50%。

「VW/VH -H5用(控件)」 有了相对字号单位就需要有 相对长度单位 ,vw、vh 全称是 View Width、View Height,即视图宽度、视图高度。 vw、vh 是相对于屏幕宽高的相对单位,1vw=屏幕宽度的1%。 vw+vh+rem 这个组合可以被用来写响应式页面,不过 vw vh 和 rem 一个是相对于屏幕,一个是相对于根元素,参照物不同,所以这个响应式解决方案大多应用于移动端 H5 开发中,因为移动端浏览器窗口尺寸和屏幕尺寸基本相同且不可变。 「RPX」 rpx  是 微信小程序专用的相对尺寸单位 ,设计师只需要按照750出二倍图即可,研发也只需要使用微信提供的开发者工具按二倍图写代码,其他适配工作由微信开发者工具自动处理。 「PPI-密度单位」 ppi 表示屏幕上每英寸(对角线)有多少个像素点。同一张位图的像素信息是固定的,这张图的真实视觉尺寸与屏幕的“物理尺寸”和“ppi”两者都有关系。 假设2台24寸显示器,一台是老款普通2k显示器 ppi = 94,另一台是 iMac Retina 4k ppi = 219,那么100%显示图片时看到的图像大小会相差一倍多。

现在屏幕 ppi 越来越高,不过不用担心看的图像会越来越小。Win 和 Mac 系统早就有整体 UI 缩放方案,让各种界面保持为用户习惯的视觉大小。 系统界面缩放方案会使用更多的点(Dot)来渲染像素,比如 Retina 屏幕用4个发光点渲染1个像素信息,再配以合适的算法补出图片中未包含的细节,这张图在这个高端显示器上显示的效果就会超级好。 下图是  Apple WWDC 2010 乔布斯介绍 Retina 屏幕,“我们有更多的像素,这很重要”。

点图片看完整视频 时长1'34"

「DPI-密度单位」 dpi 中的 d 为 Dot,上面提到过它是屏幕的最小物理发光点,一个最小发光点和一个像素可能不是一一对应关系,Retina 屏幕就是4个 dot 共同 对应1个 pixel。 请看下面两个列表, 同样是苹果设备,非 Retina 屏和  Retina 屏 dpi 差异巨大。 表格中还有一个叫「dppx 」的单位,也可称为 dpr,通俗解释为「每像素边由多少个 Dot 排列组成」。上表可见分辨率超过1k的 iPhone 基本都是 dppx = 3,即我们熟悉的@3x三倍图。 所有内容已说完!

H5和安卓因为对应的设备繁多,是尺寸适配问题重灾区,尤其H5开发同学通常比较抵触使用除px之外的相对单位,一是哪里要用相对单位,哪里要用px他不清楚,也没有问的动力;二是工作量会有一定增加,相应的bug率也会增加;三是H5相对单位或多或少会有兼容性问题,要hack这些兼容性问题也比较麻烦。 但是通过上面的内容我们已经了解到只用 px 这个单位写前端的话会受到各种影响导致最终呈现效果不理想。设计开发互相理解吧,都不容易,发现问题甩锅没有意义,还是要和开发同学一起把实现质量搞上去。

现在你搞清楚了关于UI的全部尺寸单位

有什么问题给本熊留言私聊

1ppi等于多少dpi_史上最全UI相关尺寸单位详解 | px、pt、dp、sp、rem、vwvh、rpx、ppi、dpi、dppx...相关推荐

  1. rem适配的浏览器_[史上最全]UI相关尺寸单位详解 | px、pt、dp、sp、rem、vwvh、rpx、ppi、dpi、dppx...

    先给进来看文章的你点个赞 尺寸适配应该由开发同事负责处理,处理不好是他的问题,你有兴趣了解这些让人头疼的事,证明你是共产主义好社畜,还有工作量不饱和,Good for you~适配问题是影响设计复现的 ...

  2. 史上最全互联网八大技术岗位详解

    "互联网技术岗位详解,涉及到前段开发.后端开发.移动端开发.大数据.项目管理.测试.运维.技术管理等八大领域. 架构师 每个产品线都有架构师,在技术平台部门也需要技术平台的架构师. 架构师负 ...

  3. 项目管理学习总结(9)——史上最全互联网八大技术岗位详解

    互联网技术岗位详解,涉及到前段开发.后端开发.移动端开发.大数据.项目管理.测试.运维.技术管理等八大领域. 架构师 每个产品线都有架构师,在技术平台部门也需要技术平台的架构师. 架构师负责设计系统整 ...

  4. 史上最全Android build.gradle配置详解

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项 ...

  5. 网络协议分析 | 传输层 :史上最全UDP、TCP协议详解,一篇通~

    文章目录 UDP 概念 格式 UDP如何实现可靠传输 基于UDP的应用层知名协议 TCP 概念 格式 保证TCP可靠性的八种机制 确认应答.延时应答与捎带应答 超时重传 滑动窗口 滑动窗口协议 后退n ...

  6. 首席架构师推荐:史上最全微服务架构简史详解!

    本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件.本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节. 要理解微服务,首先要先理解不是微服 ...

  7. Linux 史上最全top命令及参数详解

    总目录 **一.top简介** **二.top命令** 1.top -d:number代表秒数 默认5秒 刷新一次 2.top -b:以批次的方式执行top 3.top -b: '批量模式',用来将输 ...

  8. 也许是史上最全的一次CDN详解

    CDN 全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络 <img src="https://pic2.z ...

  9. 史上最全的 pom.xml 文件详解

    一.什么是POM Project Object Model,项目对象模型.通过xml可扩展标记语言(EXtensible Markup Language)格式保存的pom.xml文件.作用类似ant的 ...

最新文章

  1. selenium的基础知识点
  2. 两个datatable之间的复制
  3. async异步注解和aspect切面注解等注解的原理
  4. 微软获得O/R映射技术专利 业界担忧阻碍技术进展
  5. linux 运行scrapy,python 文件 运行 scrapy
  6. Windows Mobile 5.0
  7. 财务造假10年!贾跃亭被罚2.41亿
  8. 金蝶kis商贸采购单商品代码_金蝶大包装小包装多单位计量单位换算关系用法,看了这个秒懂...
  9. JPBC Element传输
  10. 虚拟usb打印机服务器,usb打印机服务器 云盘
  11. Java加密:四、非对称加密算法
  12. 织梦模板(dedecms) 文章页调用 浏览次数(阅读量,访问量)
  13. GIS 中地图分辨率与比例尺计算公式
  14. 《老路用得上的商学课1—5》成本
  15. AD软件绘制stm32最小系统电路原理图与PCB图
  16. 服务降级,限流,削峰
  17. STM32G4 蓝桥杯嵌入式 IIC AT24C02储存器
  18. 3.MySQL数据库的索引
  19. 加速你的安卓模拟器,让开发更迅速
  20. 获取微信公众号图文封面图的方法

热门文章

  1. 用鼠标左右拖拽 html,js实现鼠标拖拽div左右滑动
  2. LoRa点对点系统10 路往何方
  3. ubuntu 14.04 从零开始安装caffe
  4. 集成的故事 - 智慧管道
  5. MySQL 5.6参数优化详解
  6. laya开发微信小游戏《奇异水族馆》之 观察者模式应用
  7. UFS系列9:UFS数据安全
  8. 高性能、强稳定的工业级服务器冗余方案是怎样的?
  9. Anaconda创建、激活、退出、删除环境及管理环境中的包相关命令——最新全面直观版
  10. 贵州丹寨民众赶制特色“鸟笼”灯笼迎新春