UI设计师的第一次前端项目实战

为什么一个UI设计师要学习前端语言?

因为那一像素的恩怨情仇!作为一个UI最大的心愿,当然是看到自己的作品能够被开发者们完美的复制出来。

可是,每次项目实装,总会遇到开发者们各种理由:这里就这样吧、差一像素而已、差0.x像素而已啦,不影响整体效果啦......等等的“借口”几乎每个项目都会出现。

作为一个UI,基本的傲娇还是必须要有的,总觉得不就一像素嘛,你写一个 margin:1px;不就能行了吗?用得着找这么多理由吗?真的怀疑你们开发者的水平!

然后开发者怒怼:YOU CAN YOU UP !!

结局就是,我彻底蔫儿了!因为我不行,我想上了上不了。每次都是开发者赢,我想不明白这其中的困难点在哪里。

直到上一个项目,我作为一个产品的角色参与,在写了整个项目的画面定义书(PRD)之后,我深深体会到了,原来自己是多么无知,实装中需要应对的问题,不是PS里面上移一像素那么简单的,因为要考虑各种平台(电脑、iOS、Android、Pad),各种浏览器(Chrome、Safari、IE、Firefox、以及手机的QQ浏览器、UC浏览器等等),各种适配缩放问题。

于是我决定学习一门语言,前端对于我来说是最好的选择。

零零散散的学习一个月之后,公司来了一个比较基础的项目。页面很简单,就是一些图片,拼拼凑凑而已,两位老师(宋老师和陈老师平时对我的学习很关注,所以她俩就是我的老师)鼓励我尝试实战,然后我在犹豫几分钟之后就应下了这门差事。毕竟切图对我来说可谓轻车熟路嘛!然后跌宕起伏的三日就来了......

正文

没错,这里才是正文。惊喜不惊喜?

项目第一日

UI设计师傲娇情怀作祟,第一日的作业,完全按照自己认为的那样写,不就拼拼凑凑嘛,于是整个样式表用了各种大量固定值:

.share-box img{
     float: right;
     margin: 7px 5px;
     margin-bottom: 30px;
 }
.main-staff-box{
   margin: 0 auto 30px auto;
   width: 1100px;
   height: 423px;
   position: relative;
   z-index: 999;
}

(老司机们一看就知道会发生什么恐怖的事情了吧?)

就这样,洋洋洒洒写了500多行代码。第一天加班到晚上10:30,差点赶不上最后一趟地铁。可是,写完第一个页面之后,心里是很高兴的,因为比对PC版的设计稿,还原度95%以上

心里老佩服自己了!感觉可牛逼了。哇塞!乐开了花!忍不住向大家展示我的学习成果,于是拍照发朋友圈,收到了热评,很多人为我点赞。(项目未发布,就展示了部分画面,涉嫌侵犯保密协义,后来被总监批评了。大家引以为戒!)

前端也不过如此嘛!

但是......没错,好戏不长。

项目第二日

我的代码提交到git上的,然后恬不知耻想在两位老师那里获取好评,迫不及待的让她们帮忙review我的代码。然后得到的反馈大致是这样的:

1、打开浏览器:哇塞!真不错,没发现什么问题呢!
2、缩放:这里有些小问题呢!
3、再缩放:这TM什么鬼???

借用宋老师一句名言:

前面没有按规范写的一行代码,后面需要100行代码来补这个锅。

所以,项目第二日和第三日都在补第一日的锅,还逼得两位师傅一起上阵,她俩任何一个人一天能完成的项目,变成了3个人3天才做完......

第一次前端项目实战的收获

一、打破了UI式思维方式

短短三日,让我重新认识了开发者们的不易,打破了我以前UI式的思维方式,不是给张图,margin/padding挤一挤就可以交差了的。从此以后仰视开发者们!

虽说UI做效果图的时候也会考虑多平台,多终端的设计稿,现在看来有些纸上谈兵了,没有从开发着角度去设计,真正实现的方式不是Ctrl+T拉伸缩放那么简单。

作为一个效率型敏捷开发公司的UI设计师,设计稿在满足客户需求的前提下,应当具备考虑更多的开发者便利的设计思维。

达到一种效果有很多种办法,我们应该尽量选择大家都能简化工作的办法。

二、学会很多新的前端知识

1、学会了使用flex-box基础知识

我整理了flex布局的一些基础知识 flex布局 ,有兴趣的可以前往。
在这里分享几个非常有用的布局:
基本布局

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>flex box</title>
  <style media="screen">
    * {-webkit-box-sizing: border-box; box-sizing: border-box;}
    .container div{ background-color: red; border: 1px solid #333; }
    .div1{width: 70px; height: 70px;}
    .div2{width: 50px; height: 50px;}
    .div3{width: 60px; height: 60px;}
    .container{width: 299px;  height: 300px; background-color: #f0f0f0;}
  </style>
</head>
<body>
  <div class="container">
    <div class="div1">盒1</div>
    <div class="div2">盒2</div>
    <div class="div3">盒3</div>
  </div>
</body>
</html>
div+css.png
  • 等间距分布
.container{
    justify-content: space-evenly;        /*每个项目间隔相等。所以,项目之间的间隔与边框的间隔一样大*/                  
}
justify-content
  • 两端对齐
.container{
    justify-content: space-between;        /*两边的项目贴边对齐,中间的均匀分布*/                  
}
justify-content: space-between
  • 垂直、水平居中
.container div{ 
      display: flex;      /* 让盒子里面的文字垂直、水平居中*/
      justify-content: center;
      align-items: center;
    }
.container{
      display: flex;      /* 让三个子盒子基于父盒子垂直水平居中*/
      justify-content: center;
      align-items: center;
    }
align.png
2.切实体会到了响应式布局中“%”单位的实际使用方法,以及“%”和“px”布局的差异化。

在项目开始的时候,宋老师就说了不要用px作为单位,我不以为然,心想我平时作图不就用px作为单位吗,而且看了那么多教程都用的px作单位,尤其第一天作业完成之后,px效果依然很好啊!

这让我付出了比较沉重的代价来修复它所带来的后果。贴一下修改后的代码:

.main-staff-box {
    position: absolute;
    z-index: 999;
    top: 2%;
    width: 100%;
    max-width: 1100px;
    height: 100%;
    padding-top: 3%;
    display: flex;
    flex-direction: column;
    align-items: center;
}

3.有了多屏幕适配的实战经验

此次项目虽然只有一个页面,但是需要适配Chrome、Safari、Firefox、IE11;手机需要适配iPhone5、iPhone7、iPhone7 plus、iPhone X 、iPad、iPad Pro还要适配他们横屏显示。

由于页面比较小的原因,PC还没出现太大的问题,主要问题在于手机端,每个手机的显示方式都不太一样,Chrome的模拟器模拟的情况和真机测试差别很大。对于一个没有实战经验的小白来说,这真的非常痛苦。

不止这些,PC上还有缩放不一致的问题,压缩到一定程度布局就会崩溃,要知道,不是所有用户的屏幕尺寸都是1920x1080的,就算是都是这么大的,浏览器的窗口有可能只开了一半的大小。

解决这些问题就是用了多个媒体查询来修补不同屏幕的误差问题,比如下面的代码:


@media screen and (min-width: 782px) and (max-width: 1099px) {
    .staff-bgimg {
        min-height: 400px;
    }
    .staff-contant-box {
        padding: 0.5%
    }
    .story-box {
        padding-bottom: 5%;
    }
    .sub-box {
        padding:5%;
    }
    .inforb {
        padding-top: 2%;
    }
}

@media screen and (min-width: 1100px) {
    .story-box {
        height: auto;
        padding-bottom: 5%;
    }
    .infor-box {
        height: auto;
        padding-top: 3.5em;
        padding-bottom: 5em;
    }
    .infor-contant {
        padding-top: 4%;
    }
    .inforb {
        padding-top: 2%;
    }
}

还尝试使用了“em” “vh”这两个单位,有的时候不同的单位就能解决很多布局问题了。

  • em

em单位是和字体大小有关:

如果 元素自身没有设置字体大小,那么元素自身上的所有属性值如“boder、width、height、padding、margin、line-height”等值,我们都可以按 父元素字体大小 下面的公式来计算

1 ÷ 父元素的font-size × 需要转换的像素值 = em值

如果 元素设置了字体大小,那么字体大小的转换 依旧按父元素字体大小公式计算,也就是下面的:

1 ÷ 父元素的font-size × 需要转换的像素值 = em值

如果 元素设置了字体大小此元素的其他属性,如“border、width、height、padding、margin、line-height”计算就需要按照下面的公式来计算:

1 ÷ 元素自身的font-size × 需要转换的像素值 = em值
  • vh

CSS中相对长度单位,表示相对视口高度(Viewport Height)。

1vh = 1% * 视口高度

视口比例长度定义了相对于视口的长度大小,这是文档的可见部分。

三、理解了为什么这一像素那么难

这一像素在不同屏幕上的显示不相等。在这个屏幕上一像素对齐了,可能就会影响到其他屏幕的布局。所以UI设计师在设计的时候应该考虑到一些布局上的细节,比如可以尝试试用100% 作单位来做设计图。

还有一个体会就是,CSS很多知识点就算你知道,没有在实际项目中使用过,你就不会知道它存在的意义到底是什么!

四、尝试了使用命令行提交代码到github

命令行我之前了解过,但是没有实际的在项目中使用,这次两位老师修改我的代码,都是通过GitHub来管理,感觉非常厉害。这里整理下本次项目使用到的部分命令,后面专门整理一个github的命令相关的笔记。

git add (file_name)                //把你的文件添加到git的追踪目录下 (你也可以用git add .来添加所有的文件)

git status                         //用来查看你现在的分支状况(是否有修改,有哪些修改,修改了哪些文件)

git commit -m 'your message'       //这一步是把你的本地修改保存起来。在这个基础上你切其他分支的话,刚修改的内容都不会丢失

git push origin (current branch name)   //把你本地的修改push到远程这个同名分支上去。

git pull                           //取回远程仓库的变化,并与本地分支合并

git pull origin master             //从master拉取


在这里非常感谢两位老师帮我补这个锅!没有她们帮忙,这个项目不能按时交付。

在这里贴一下客户对此次项目的反馈吧:

全体的にとてもいいです。ありがとうございます。

还是非常开心的!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容