1.明确统一@x图的标准,以750x1334切下来的图 为@2x的标准
2.使用以屏幕宽度为基准的相对单位,为了适配,从设计稿到成品确定存在换算过程
3.为位图的容器设置宽高
适配后效果图:基本不会出现很不理想的情况
html
其实已750x1334设计出来的图,切下来,刚恰好就是2x图,缩小1倍就是1x,乘以1.5就是3x图前端
不是的 !!好比750px的iphone6 量出75px的物体,在375px的手机里确定只有35px。因此为了适配你必需转换成以屏幕宽度为标准的相对单位,因此换算过程确定是存在的,由于设计稿只是一个750的基准
。
@x图只针对于图片和图标,这种须要用到位图的地方详细原理请点击查看.其目标既是在等大的容器内装入像素更大的位图,从而补足像素点的缺失。
由于只有用到位图的地方才会出现像素缺失和像素丢失的情况,其余的元素都是系统绘制的矢量图形不受是不是高清屏幕的影响。react
若是@x图比实际须要小,那么图像就会模糊。android
若是@x图比实际须要大时会出现什么问题,其实这种状况也会出现问题只是问题不明显,会出现的问题就是图像失真,由于设备实际上没那么多像素点显示,就是丢失一些像素点。这种状况通常不易察觉,可是问题确定是存在的。这就是为何有些同志拿到大图了,却以为能够的缘由,由于只要他限制了图片的大小,他本身也看不出问题。
另外还有一点,就是web前端同志拿到的图片会过大,这个影响就比较大了。
因此不是用越大的图就越好。ios
@x图标准仍是按照上方的标准。若是发现ps切下来的@2x比设计稿里的大了,既是出现错误。
另外程序端仍是建议按设计稿给用到图片的地方设置宽高,这样防止换了大图后图片撑开的问题。web
rem是指相对于根元素的字体大小的单位。那么根据该原理:咱们只需能动态获取屏幕的dpr及宽度信息,并改变根元素的font-size,其他的全部页面元素也将会进行改变
。编程
<html data-dpr="1" style="font-size: 41.4px;"> </html>
详细原理请点击查看
可是该方案有个问题,rem单位很不直观。好比大小为80px的按钮, 按上面标准换算成rem为1.946rem[这就蛋疼了,你没法直观看出这个按钮多大,修改起来更是蛋疼。若是没有一套优雅的管理方案,后期修改基本靠感受或者画点时间计算下==],接下来和你们聊聊如何优雅的使用rem单位。小程序
假设对于一个iphone6的视觉稿,咱们定义它的基准值就是75 该基准值是根据你的定义变的
关于基准值有问题可见
这样咱们就能够按照设计稿的大小写进程序,从而便于维护和识别sass
//辅助函数 // 例如: .px2rem(height, 80); @mixin px2rem(@name, @px){ @{name}: @px / 75 * 1rem; }
原理与上面的rem相同,也来得更简单。由于vw原本就相对可视窗口宽度的百分比不受显示器分辨率的影响
。微信
须要注意有版本要求:android4.4以上版本;ios8以上版本 最新兼容性查看
另外也存在百分比在设计稿中转换到程序上的不直接问题
一样在定好设计稿后,能够书写sass函数来辅助编程
假设设计稿为750*1330 上的按钮大小为120px,那么能够这么书写
//.px2rem(width, 120); @mixin px2vw(@name, @px){ @{name}: @px / 750 * 1vw; }
图片这里由于h5端特殊,既要考虑流量,又要考虑清晰度,这里推荐仍是直接使用@2x图吧!别折腾了!
rpx为小程序本身的单位,会对设备进行适配
rpx与[750*1330]设计稿px的关系1px==1rpx,可是在iphone6上0.5px==1rpx 详见
Taro 方案的初心就是为了打造一个多端开发的解决方案。目前 Taro 代码能够支持转换到 微信/百度/支付宝/字节跳动小程序 、 H5 端 以及 移动端(React-Native)。Taro.js是京东出品的小程序框架,经使用除了不支持一些react语法外,基本无大槽点[这里不经要吐槽下腾讯官方的wepy,真是坑死人不偿命!请慎用慎用!]该框架直接服务到位,代码直接书写px单位[又不用记多一个rpx单位了😊],程序框架自动帮你转换😁,那么爽的吗? 就是这么爽!由于别人Taro的目标是write one, use everyWhere!!