前端初级技能No.1 [切图]
“切图”是指通过测量设计稿,从设计稿中提取图片等方式为页面开发提供支持的过程。
整个“切图”过程主要分为以下五个主要步骤:
- 分析设计图;
- 测量元素;
- 提取图片;
- 保存图片;
- 图片优化与合并;
1.分析设计图
以前我做练习时,往往是拿起一份PSD设计稿,大致看上两眼就开始边敲代码边切了,后来踩了一些坑才意识到这样的做法效率低下。有时代码敲着敲着会突然发现,哎?这里有一个下拉菜单?或者有时发现,哎?这里是不是可以重用之前的代码?通常这样的后知后觉都令人追悔莫及,所以慢慢也要求自己事先要留个心眼。所以第一步“分析设计图”我认为还可以分为以下三个部分:
- 仔细浏览设计图,考虑网页的整体结构(在这里心中就可以预想页面将来的编辑方式,划分为几个区域?大体如何实现?);
- 仔细查找页面各部分是否有隐藏下拉菜单,hover效果等隐藏设计(好的设计师应对此提前在说明文档中注明);
- 观察页面结构,考虑代码重用的可能;
2.测量元素
切图主要测量的对象有:文字大小,图片,间距与颜色;这里以PS工具为例,基本上前三者都可以使用矩形工具(M)完成,后者主要使用吸管工具(I)。一般来说,在参考线,标尺具备的前提下,图片越放大,测量精度越高。
3.提取图片
所提取的图片大致可以分为直接在页面上呈现的内容型图片,和作为背景使用的修饰性图片,对于前者直接切下来保存就好,而对于后者则需要分离其前景图案,文字,之后再切下保存。对于比较特别的修饰性图片,可以只切其一部分,使用CSS的repeat属性进行重复以节约存储空间,提高页面加载速度;具体步骤如下:
- 隐藏文字只留背景;这里又分为两种情况,第一种是文字为独立图层,那么只需使该图层不可见即可,第二种为图片与文字融为一体,这种情况下基本的思路是平铺遮盖,但是根据背景性质不同分为可拉伸与不可拉伸两种状况,前者需使用矩形选框+自由变换拉伸遮盖,后者使用矩形选框+Alt+移动工具移动遮盖;
- 使用移动工具(V)选中所需图层(若有多个图层则复选后右键合并图层Ctrl+E);
- 在所选图层上右键“复制图层到新文件”;
- 裁切新文件画布大小;
这种方法的缺陷在于步骤太多,操作不便,而且所切图像新建画布有时太大,因此我通常使用另外一种方法,这种方法对视设计稿大小对机器性能有一定要求:
- 矩形选框选好目标对象;
- 合并可见图层(Ctrl+Shift+E);
- 复制所选对象(Ctrl+C),新建图层(Ctrl+N),粘贴所选对象(Ctrl+V);
这种方法的优点在于图片要多大切多大,省去了裁切画布的麻烦,而且快捷键操作效率高,缺点则在于要用矩形选框框住目标对象,而且文件较大时,合并所有可见图层较慢。
4.图片保存
保存需要考虑保存方式,图片格式,图片命名三个部分。
保存方式是指页面图片选定后如何选择图层保存的问题,是逐一保存?还是使用Sprite技术进行合并?,需要提前规划好,可以省去后面很多合并图片的时间;
图片格式则主要指要根据所需保存图片的类型选择相应的图片格式,我们通常用PNG格式用来保存有透明图像,用JPG格式保存颜色丰满图像,用GIF格式保存动图;
搞定前两步,最后一步便是对图片的命名,不要小看图像的命名,使用清晰,准确,描述性的名称命名图像(例如:“.header__banner”)可以节省后期图片变更时查找图片所耗费的时间。
5.图片优化与合并
图片优化与合并是两回事,优化是指对图片进行压缩,使其既满足用户视觉需要,文件大小又尽可能的小;而图片合并是指,使用“图片精灵”技术,将多张图片(通常是图标)合并为一张图片,以节省加载次数。
但这样做的则弊端在于,为了使用CSS背景定位,必须要在HTML中加入许多无语义的容器标签,但相较于页面加载时间的提升,这点损失也是微不足道的。
以上。
前端初级技能No.1 [切图]的更多相关文章
- 前端开发使用Photoshop切图详细步骤
切图的主要目的是从设计师提供的psd中获取网页制作所要的资源 一.界面设置 1. 新建文件,调整界面大小,背景设置为透明 2. 自动选择,把组切换为图层 3. 添加窗口内容,一共四项:图层.历史纪录. ...
- 前端菜鸟起飞之学会ps切图
由于之前只顾着追求效率,没有学习过PS,但其实这是前端开发人员需要学会的技能之一,曾经看过一个大佬的前端经验分享说他在招聘时遇到不会切图的会直接pass掉,可见前端开发人员学会切图是多么重要.通过观看 ...
- Photoshop如何实现UI自动切图?
切图严格来说并不是UI设计师的工作, 而是前端工程师的工作,指的是将UI设计师的设计(大部分为photoshop创建的PSD文件)转化为界面(网页或窗体等)所需要资源的过程.切图是衔接UI设计和应用程 ...
- 利用PS自动切图、支持svg且支持icoMoon——再也不用四处去转格式了
今天想导出svg格式的图片支持webFont,结果AI打不开了,文件好像损坏了,于是就想办法在PS里面导出. 网上搜索到一篇文章,腾讯的 http://isux.tencent.com/ps-phot ...
- 那些令人迷惑的名词:切图/H5/XML/REST
长时间以来对一些名词感到很困惑,不明白其具体指什么,在此记录一下. 一.切图 1.1 原先理解 从字面意思理解,切图是指将一张大的图切割成很多张小的图片.最早(视频教程网或者我要自学网)看到的视频也是 ...
- 使用PHP写了一个图片分割等份工具,便于前台页面切图时使用。
目的: 由于网站更新活动较频繁,其大多数以静态图片为主,设计人员在除了设计图后都要给前端制作人员再次切图从而达到页面加载图片缓慢的问题,为了减少工作量做了该工具. 功能: 上传一张图,将其分割成指定等 ...
- 前端工程师技能之photoshop巧用系列第三篇——切图篇
× 目录 [1]切图信息 [2]切图步骤 [3]实战 前面的话 前端工程师除了使用photoshop进行测量之外,更重要的是要使用该软件进行切图.本文是photoshop巧用系列的第三篇——切图篇 切 ...
- ps切图抠图详解-web前端(转)
网页设计在技术层面上,第一步是美工做出网页效果图,第二步就是网页前端进行网页切图.网页切图工具常用的有fireworks.PS,这里使用PS进行网页切图. 我们通过设计稿,得到我们想要的产出物(如.p ...
- 做一个会PS切图的前端开发
系列链接 做一个会使用PS的前端开发 做一个会PS切图的前端开发 切图方法分类 PhotoShop从CS版本演变到现在的CC版本,切图功能发生了比较大的变化,我们可以把PhotoShop CS版本时的 ...
随机推荐
- 深入分析Cocos2d-x 2.0中的“纹理”
对CCImage的绘制是通过CCTexture2D来实现的(OPENGL es)通过纹理绘制到某个面. (本文中所提到的方法在cocos2d2.0中部分有调整,请应用时候具体察看源码)1. 首先来了解 ...
- 170403、java 版cookie操作工具类
package com.rick.utils; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; imp ...
- Java中break、continue、return语句的使用区别
break.continue.return之间的区别与联系 在软件开发过程中,逻辑清晰是非常之重要的. 代码的规范也是非常重要的.往往细节决定成败.在编写代码的时候,一定要理解语言的作用以及使用的方法 ...
- maven (profiles)装载不同环境所需的配置文件
引子: maven与java的联系在今天的项目已经是不可分割的 ,但是不同的项目有各具特色的项目结构,不同的项目结构使用了不同的maven插件,想要了解一个项目的项目结构,或者自己构建一个具有成熟结构 ...
- hdu2094—看似拓扑实际上是一道思维题
HDU2094 产生冠军 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2094 题意:中文题,就不解释了.题意已经非常清楚了. 这道题的看起来像是一 ...
- MongoDB 使用 ObjectId 代替时间
An ObjectId is a 12-byte unique identifier consisting of: a 4-byte value representing the seconds si ...
- Dealing with a Stream-based Transport 处理一个基于流的传输 粘包 即使关闭nagle算法,也不能解决粘包问题
即使关闭nagle算法,也不能解决粘包问题 https://waylau.com/netty-4-user-guide/Getting%20Started/Dealing%20with%20a%20S ...
- How to Design a Good API and Why it Matters
前谷歌首席 Java 架构师谈如何设优秀的 API – 码农网 http://www.codeceo.com/article/google-java-good-api.html 2015-11-24 ...
- 设计模式之Prototype模式
通常我们会使用new 类名()的方法会去生成一个新的实例,但在开发过程中,有时候也会有"在不指定类名的前提下生成实例"的需求,那样,就只能根据现有实例来生成新的实例. 有三种情况, ...
- nodejs基础【持续更新中】
简介 Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-dr ...