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

尺寸适配应该由开发同事负责处理,处理不好是他的问题,你有兴趣了解这些让人头疼的事,证明你是共产主义好社畜,还有工作量不饱和,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的全部尺寸单位

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

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

  1. 1ppi等于多少dpi_史上最全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. caj文件浏览器_史上最全:提高律师工作效率必不可少的27款浏览器插件

    在律师工作中,浏览器使用率是百分之百,其实在浏览器使用过程中,一些小功能插件能够帮助浏览器实现功能扩展和性能提升. 本文将介绍最常用.最好用的Chrome 浏览器以及一些高效办公插件(网站一键导出PD ...

  6. 史上最全libconfig用法及配置详解

    一.libconfig是什么 Libconfig是一个结构化的配置文件库,它可以定义一些配置文件,例如test.cfg . 它比xml可读性更好,而且更简洁.而且不像xml,它是 type-aware ...

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

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

  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. Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)
  2. 数据库复习1——数据库体系结构和关系系统
  3. 如何解决分布式系统中的“幽灵复现”?-转载自 阿里技术 微信公众号
  4. C++学习笔记(五)--指针、NULL、引用
  5. html ascii编码方式,HTML 字符集 参考手册
  6. 硒测试可实现有效的测试自动化
  7. codeigniter view 试图里再引入view视图
  8. 使用mysqlsla 分析 mysql logs
  9. C++中默认选中预编译头#includestdafx.h作用
  10. 某互联网公司针对初级Java开发的几道Sql笔试题(看完保证不亏 )
  11. linux 模板 制作工具,OpenTBS 1.8.0 发布,生成 Office 的模板工具
  12. Java对象转换Map(工具类)
  13. 802.11n无线网卡驱动linux,Ubuntu 无线网卡驱动安装教程
  14. CCAI 2017 | 中国工程院院士李德毅:L3的挑战与量产
  15. The Shawshank Redemption-6
  16. PaddleOCR学习(一)PaddleOCR安装与测试
  17. google earth 开发(一)
  18. 互联网公司的软件开发流程
  19. 修复大师 v3.0 终结版 怎么用
  20. 关于山东职称评审论文发表

热门文章

  1. 优秀的弹窗插件 jquery.lightbox_me.js
  2. 重启VirtualBox里面的系统提示VT-x features locked or unavailable in MSR错误
  3. Android 对话框用法
  4. ZYNQ ZCU102视频编码开发
  5. Android-JNI开发系列《十二》总结JNI知识体系
  6. Linux fork与vfork的区别
  7. 无法打开包括文件: “QTcpSocket”: No such file or directory
  8. EGLSurface 和 OpenGL ES
  9. Ubuntu报错:E: The repository http://ppa.launchpad.net/fcitx-team does not have a Release file.
  10. Mac上安装fastboot等工具与烧写images