移动开发之设计稿转换页面单位尺寸

在写这篇文章之前,我询问了在唯品会和腾讯的童鞋、以及公司里面前端大神(深哥),对于设计稿切图的详细方法,经过对比验证,得出设计稿转换页面单位尺寸方法步骤。我分别询问下面四个问题:

1. 设计稿的单位是什么,一般大小是什么?

2. 页面长度单位用什么,px、em、rem,还是混合,如果用rem,html的font-size是多少?

3. 设计稿转换成页面长度的方法?

4. 如果做媒体查询,合适的区间是什么?

PS:他们都已设置viewport

Q&A

--朱姐(腾讯)回答

1. 设计稿的单位是px,一般是750px。

2. px、rem混合着用,rem的html font-size用16px。

3. 750px的设计图以375px量长宽,例如设计图里有元素宽度是100px,那么得到宽度会是 100px/2/16px = 3.125rem。

4. 根据设备宽度不同,设置不同的html 的font-size,这个区间并没说明。

--滨神(唯品会)回答

1. 设计稿的单位是px,一般是 750px。

2. 限制用rem,rem的html font-size用312.5%(由于默认字体大小是16px,所以最终是16px * 312.5% = 50px)。

3. 750px的设计图以375px量长宽,例如设计图里有元素宽度是100px,那么得到宽度会是 100px/2/50px = 1rem。

4. 如果设置固定html font-size,那么就需要弄媒体查询;如果按不同设备宽度算出各自的font-size,就不用弄媒体查询。

--深哥(公司大神)回答

1. 设计稿的单位是px,一般是1080px。

2. 建议是全部使用rem及百分比的方式,rem的html font-size用100px。

3. 1080px的设计图以540px量长宽,例如设计图里有元素宽度是100px,那么得到宽度会是 100px/2/100px = 0.5rem。

4. 按不同设备宽度算出各自的font-size,如果需要兼容特殊设备(例如iPad),才要做媒体查询。如果在iPad上的效果偏大,就要修改小一点字体,一般是76px,就可以跟手机差不多保持一致的效果了。

--得出结论

1. 设计稿的单位是px(PhotoShop出来当然是这个)。

2. 没人页面长度用em。

3. 元素长宽量取是设计图里的1/2。

这三个结论还并不能得出一个好的方案。

假设

为了简化问题,做一个假设,假如世界上只有一种手机型号(恰好是iPhone6),那设计稿转换的方式是怎么样的?

(1). 有张750px的设计稿,iPhone6的设备宽度375,取375为量取大小。

(2). 那么设计稿里面100px,在iPhone6显示为100px / (750 /375 ) = 50px。

(3). 规定一个html font-size值 X(例如50px),那rem值就是 (50/X) rem (例如 50px/ 50px = 1rem)

这里面可以很明显看到,font-size值并没有规定要用哪个值,它只是一个基数,元素的像素大小并不会因为这个基数有变化(所以上面问了三个人有三个不同的值,这没问题的)。也由于我们以375量取大小,所以在iPhone6上效果是与设计稿一致的。另外不是rem也是可以的(第三步不做),直接用px, 更加简单。

假设破灭

世界上当然有很多乱七八糟的机型,那如何在上面的基础上做适配?

(1). 假如用的是px单位,又不做媒体查询做适配。那么可能在某些机型上偏大偏小,但是还能用。之所以可以这么干,是因为手机的设备宽度一般是在320-470之间,与375产生的偏差效果并不会很大,当然偏差越大差异越大。

(2). 假如用的是px单位,媒体查询做适配。虽然这么做能适配机型,让效果看起来都差不多,但是做起来应该很痛苦,每个固定长度的元素都要写一遍,这会是很要命的吧。

(3). 假如用的是rem单位,不动态计算font-size值,不做媒体查询。我靠,那这不是跟第一种情况一样。

(4). 假如用的是rem单位,动态计算font-size值。计算方式如下:

var baseSize = 50, // 基数
    baseWidth = 375, //量取值大小
    fontSize =  (document.documentElement.clientWidth / baseWidth * baseSize).toFixed(2) ; //这个就是动态font-size值

这里我有一点没有说是, 这个计算公式是viewport设置initial-scale=1的情况,如果是其他缩放比例,那就需要乘以这个缩放比例。

例如:https://m.taobao.com/(淘宝移动版)

其viewport:

<meta name="viewport" content="initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no">

其fontsize计算方式:

var baseSize = 75, // 基数
    baseWidth = 375, //量取值大小
    fontSize =  (document.documentElement.clientWidth / baseWidth * baseSize * 0.5 ).toFixed(2) ; 

这里面关键的是那个375的基础量取值,当取375时,页面效果在设备宽度为375就必须显示正常,这个是很关键的约定。

(5). 假如用的是rem单位,媒体查询做适配。 在各个媒体查询的区间设置适当的font-size,没什么特别的。

最终方案

根据上面的情况,我觉得转换的方式可以用下面步骤。

(1). 设计稿应有约定的大小(例750px),选取一个手机的设备宽度做量取大小值(例375)。

(2). 限制使用rem,选取一个font-size值作为的基数。

(3). 计算每个元素的rem值,进行界面开发。

(4). js计算当前设备宽度的fontSize,并设置回html元素上。(适配步骤)

(5). 媒体查询作为补救措施,特殊设备宽度设置特殊的font-size。(这步不是必须的)

注意

(1). px可以用,但是当心效果会偏大或偏小,元素可能还会往下掉。

(2). 界面开发时只针对iPhone6(375pt)一种机型,页面完成后,才做适配步骤。

(3). 设计师可能会输出标注图(750px)和@3x切图(1125px)两种图。用@3x切图的设计稿切图,在超清屏幕才能清晰;标注图可用来计算元素长宽;但是设计师可能为了简单,就只输出一种视觉图,就如文章开头说的750px、1080px。

(4). 使用sass或less可以让代码写得直观、简单。

例如:

padding: rem(5) rem(15) 0 rem(15);

这样尺寸都是对应的设计稿的尺寸,开发人员就不用关心里面的实现细节了。

总结

设计稿转换页面单位尺寸,简单做就是——先针对某个机型做,再做适配。 

 

本文为原创文章,转载请保留原出处,方便溯源,如有错误地方,谢谢指正。

本文地址 :http://www.cnblogs.com/lovesong/p/5439756.html

转载:http://www.cnblogs.com/lovesong/p/5439756.html

时间: 2024-07-30 11:43:14

移动开发之设计稿转换页面单位尺寸的相关文章

前端开发-前端怎样拿ps量设计稿的每个部分尺寸,点击其中的文字得到字体的属性和查看色系?

问题描述 前端怎样拿ps量设计稿的每个部分尺寸,点击其中的文字得到字体的属性和查看色系? 以前用的都是firework,这次换了photoshop完全不会用,像个无头苍蝇. 请求大家帮助 解决方案 点击左侧工具栏的T,在坐下放就会显示文字属性 解决方案二: PS旁边有个导航器,,,可以通过选区进行测量获取; 特定部分可以直接通过内置功能查看,比如字体是可以直接查看的 背景颜色

如何改进工作流让设计稿支持多个尺寸?

  最新的 Photoshop 是有跟 Sketch 一样的输出切图功能的(Generator),用 2x 的 PSD 输出 3x 的切图也可以.而且 Photoshop 配合 Slicy 输出切图比 Sketch 3 快捷很多. Sketch 相当棒,但目前(v3.1)还是有不少小问题,加上对中文支持不够好,在界面设计中还不能完全取代 Photoshop. 关于题目的问题,首先一份设计稿就不能适用于 iOS 各手机屏幕尺寸.以下是 Bjango 把目前各 iOS 手机屏幕还原为 1x 的对比图

为什么页面跟设计稿差距这么大?

  在互联网产品的研发流程中,页面的视觉还原是很重要的一个步骤,也往往是问题最多的一个环节.如果一些细节问题在这个环节没有被有效地发现并解决,那么后续流程中再去解决这些问题的成本就会呈指数上升. 那么今天我们就来梳理一下,看看前端工程师本身以及上下游的角色之间,都会容易遇到哪些常见的问题. 设计师 设计师是最贴近产品体验的人,但是术业有专攻,设计师往往更加注重视觉的表现,而容易犯一些美丽的错误: 1,以原生 APP 的体验类比 H5 页面设计 我们都知道,原生 APP 的体验非常流畅,界面也非常

页面构建工程师:理解UI设计师的意图还原设计稿

文章描述:页面构建工程师:对设计图的审稿能力很重要. 作为专业的页面构建工程师,除了在专业技能上有很高的要求以外,还需要具有一定的对设计图的审稿能力.审图,并非是意味着追求跟PSD一模一样,甚至耗费大量时间截屏跟PSD去"对像素".在我的理解中,审图是通过对UI设计稿的分析,充分理解UI设计师的意图,再结合UE的交互状态,从中做到真正的"还原设计稿". 事例一:有取有舍,方是领悟 比如,在这样一张设计稿中 设计师的意图: 这个话题列表的行高19px,每个单条话题下面

excel-把设计稿里的内容做成手机版的页面

问题描述 把设计稿里的内容做成手机版的页面 把设计稿里的内容做成手机版的页面,使用Excel里的图片,把排版做出来 解决方案 可以用axure做原型设计

一款APP从设计稿到切图过程全方位揭秘

  我本身是一名GUI设计师,所以我只站在GUI设计师的角度去把APP从项目启动到切片输出的过程写一写,相当于工作流程的介绍吧.公司不同,流程不尽相同,但是终究还是能有些帮助. 依旧声明:这里写的不是一种规范,只是一种工作方法,大家在具体工作中,一定要灵活运用.另外,技术的更新是非常快的,我写的这些可能某些东西已经和你们的工程师搭档所用的方法不一样了,所以,还是要灵活运用~ 这里我们只说IOS系统下的设计,至于Android,因为尺寸太多,涉及的东西比较乱,我整理好以后再说吧. 页面篇幅比较长,

【原】设计稿中字体pt与px之间的转化

通常,设计网页时,字体一般会使用像素(px)或者倍数(em).某一天开始重构页面,用PS打开设计师给过来的稿子,开始切图,在查看文字时,发现字体大小是用pt来设置的,⊙﹏⊙b汗,如下图: 为了解pt和px是如何转换的,百度后整理出来的资料如下: px就是表示pixel,像素,是屏幕上显示数据的最基本的点: pt就是point,是印刷行业常用单位,等于1/72英寸. 这样很明白,px是一个点,它不是自然界的长度单位,谁能说出一个"点"有多长多大么?可以画的很小,也可以很大.如果点很小,那

移动端页面单位rem

今天有个朋友在群里上传了一份案例,点进去研究了起来,发现了rem这个单位. 然后我就开始百度rem,搜到几篇好文章,跟大家分享一下, 以下代码,是在朋友所发案例中拷贝的 <!doctype html> <html lang="en"> <head>         <meta charset="UTF-8">         <title>Document</title> </head&g

一键分享SKETCH设计稿的EASY SHARE

  今天安利的这款Sketch插件超级棒,可以一键生成可在线预览的设计稿,再也不用创建一堆的暂存图片了,一个链接轻松搞定. 如今 Sketch 已经成为很多公司设计团队主力设计工具.特别是对于无线产品的设计师,Sketch 能让大家效率提升不少.可是在项目过程中设计稿预览一直是一件很讨厌的事情,它会让你桌面生成一堆的暂存图片,来往的邮件也会变得非常的繁琐. 为了尽量简化这些降低效率的操作,有人开发了一款名为「Easy Share」 的Sketch 插件.只需一次简单的点击就能帮你定制创建一个在线