首页 > 对WEB前端的几段思考(一)——界面设计和性能优化(整理中)

对WEB前端的几段思考(一)——界面设计和性能优化(整理中)

    尽管我并非艺术出生,既没有任何设计基础,又没有较高艺术涵养,也深谙在短时间内创造一定艺术造诣并非易事,但是既然当初选择从事网站前端开发,我的目光不能仅停留在前端代码上。作为一名志向在前端领域发展的人员,能够创作出协调和谐的界面,和熟悉前后台交互一样重要。

 

  为控制成本,在网站素材(婚纱摄影图片和网站文字)未准备好时,网站上都是些测试数据,不堪入目。因此我的处女作暂且还没投入使用,实为一大遗憾。在网站投入使用之后,必定附上网址,让大家一睹为快。

 

一,色彩的联想

 

  每种色彩带给用户不同的心理感受,因此,在设计页面时,绝对不能忽视每一种颜色带给客户的信息。主调色的选取,直接影响网站设计的整体风格。更重要的一点,色彩是向外界传递品牌识别的一个重要元素,大公司一直以来都坚持使用相同的色彩,例如银白色的苹果和绿色的360,在公众中创造强烈的视觉冲击。

 

红色:活力,具有强烈的感情色彩。和白色等浅色搭配,富有视觉冲击力。

黄色、橙色:欢快活泼,温暖幸福。

绿色:和谐舒心,环保健康。可用作平衡其他颜色,是设计的整体感觉更扎实。

“插图”

蓝色:宁静深邃,是最流行的色彩。企业网站界面多选深蓝,更显内涵。

紫色:高贵而神秘,暗紫中带白,更显优美和柔和。浅紫色代表浪漫,暗紫代表奢华。

 

黑色:深沉而神秘,体现前卫,能与众多色彩构成良好对比协调。

白色:纯洁明快干净。没有过多色彩修饰,不易于分散用户的注意力。

 

  设计界面之前,我查看部分婚纱摄影楼网站,绝大多数的网站以白色为背景,红色,红紫色等鲜明、喜庆、温暖的颜色作为点缀。白色背景能够让人联想到洁白的婚纱,凸显爱情的纯洁美好。简洁的内容和布局,降低用户注意力分散的可能,使用户更目光集中在摄影作品上。

可是采用白色背景有唯一个弊端,就是使得有部分内容和背景混杂一起,效果单一,毫无层次感。

  我选取一个紫红色为主调,白色高光方框点缀的背景,background-position属性设置为Fixed,使得主容器内容随滚动条或鼠标滚动时,背景固定,产生一种内容浮动的想、错觉。白色或浅紫色的边框或字体和深颜色的背景形成视觉冲击,使内容极具层次感,选择高光的背景,网页很光亮。

      

      

  

同时紫色为主调,凸显婚纱摄影楼的高贵大气,浪漫高端。

 

 

二,配色

  1,单色系配色:色彩选取比较容易,选定某一色彩为主,其他颜色采用它的渐变色即可,方法较为稳重。我得出以下规律:由深到浅:正文>标题>背景,强调或图形颜色采用介于正文和标题的颜色

  2,互补色配色:例如白色和绿色,紫色和粉色等等

互补颜色具有天生动感,将标题颜色换成互补色,可增添几分活力。

     "插入"

  选取主掉色和配色后,在日后的开发设计中,我应该注意,不管是主页面还是内部的子页面,都要保持一直的视觉效果。一致的良好的设计理念,除了给用户留下更深刻印象外,还有助于用户在操作时不会犹豫,从而快速熟悉网站,学会使用网站。

 

 

三,样式

 

    样式能够表达完整的设计意图,创意设计同样通过样式传递给用户。

  有一下几点值得注意:

 

  1,规范样式文件。

    样式文件可以分为两种形式:开发态和运行态。目的的不同,两种形态会有不同的表现形式。开发态为了维护和管理方便,可以将不同作用的样式进行拆分,比如:

  全局样式(global.css),结构布局样式(layout.css),色彩样式(color.css),文字样式(text.css),和重置样式(reset.css).

  在生产运行环境中,基于性能考虑,可以将样式文件合并压缩,减少与服务器交互的时间和次数。

 

  2,重置样式。

    浏览器针对每种标签都有默认的样式,我们需要在使用之前清理干净。对于一些样式框架,我们需要一个reset.css文件重置样式。“附件”

 

  3,为样式加上清晰的注释。

    注释是给维护人员看的,再好的网站也离不开日后的维护,即便开发的是你,维护的又是你,在每个文件头标明它的作用,作者等基本信息,并且每个段落样式标注索引。

 

  4,合并图像。

    基于性能考虑,合并图像能够减少HTTP的请求数量,节省带宽并加快页面的加载速度。一个页面上如果包含大量图片,装载这个页面时就要多次向服务器发送请求,HTTP请求会耗费网络带宽,图片只能一张张显示。

使用CSS背景定位(background-position)的方法即可获取合并图片中的相关图像。

 

  5,Hack

    兼容性,是我最薄弱的一点,如果要实现对众多浏览器的兼用,就需要或多或少的使用一些hack技术。。。。

 

四,简洁性

 

  系统的功能随着开发越来越多,我们会陷入系统的技术支持、bug修复的漩涡中,没有精力去改善实际用户最常用的功能,如导航设置,基本组件的位置。

 

  功能上需要简洁,操作流程、视觉效果上也需要简洁。混杂的图片显示,大篇幅的文字,影响用户体验度。简洁的界面具有一下优点:

    ①简洁的设计,更易于导航,减少冗余信息,就是降低分散用户注意力可能性,使得网站内容更加突出,能够让用户更快找到所需的内容。

    ②使得网站的目的性明确,精细准确表达想表达的意思,不会有令人烦躁的内容影响视觉体验,用户更加容易进入意境。

 

  因此在设计上,我特别注意一下几点:

    ①有效利用网站空间

      和谐的排版并有效地将空间拉开,不尽让用户在视觉上更舒服,还能体现元素与元素之间的层次。

    ②将重要内容放在显眼位置

    ③削减无光内容,从导航入手。

  《大巧不工》一书提到的导航7+2原则;

 

    “插图”

 

    套用二八定律法则,对于简洁的网站或应用,80%的有用部分来自20%的功能——即,只有20%具有奉献价值,我们应该强化20%基本功能。

 

    我过去企图用丰富的动画效果,绚丽的色彩搭配充斥用户眼球的想法是多么天真、单纯。通过堆砌功能,填充网站空白位置的想法最终只会得到一个评价:平庸、臃肿,需要学习。

 

    例如,我们在设计导航时候,不应该把所有功能罗列出来。而是应该思考用户需要的功能,从用户角度去设计,用户没有过多时间选择思考。“这个是否需要,是否有更简洁的实现方法。”这个想法,是从UCD上得到启发,和这如今流行的设计原则不谋而合:

 

UCD——以用户为中心的设计原则

  1,关注信息醒目 2,更换网银,新网银转账简单 3,网页上只有喜欢内容

  以上例子代表用户有三特性:懒惰,有想法,喜新厌旧。

 

  在这样一个用户需求日益变化,而互联网资源及其丰富的时代,如何才能吸引用户,如何才能创造价值?设计时遵循以用户为中心的设计原则是不错的思路。

以用户为中心的设计(User -Centered Design ,UCD),是以用户为中心进行产品的设计、开发和维护,一切都从用户的感受与需求出发,而不是让用户适应产品。

产品的设计不仅仅是将元素摆在页面上,无论是做视觉还是交互,深入理解需求之下的用户需要,才能使产品真正推向市场。

 

  出于这方面的考虑,我设计除了设计一般的导航,位于公司名下之外,我还增设“便捷导航”(垂直导航)

    “补充”

 

  “简洁是一种思想,我们需要更高层次去理解它,不求最多,但求最好。”

 

 

  在开发一个新产品时,我不经意调查其他产品,了解竞争对手怎么做。经行设计开发时,我还思考是否采用同样的实现方式。一般情况下,我也会遵循惯常的方法,一种特定的内容展示有一定表现方式,这些方式为用户所接受,用户对这种方式不感到陌生,因而就更加容易被用户所接受。

 

    “补充”

 

  我的网站无论是界面设计,亦或是代码质量,不可能一步到位,步步成功,需要持续地改进设计,精简代码。

 

 

五,动态交互

 

  交互之美从何体现?有人说,现于交互之流程,特效之绚丽,然而这些美只体现在表面,真正美的脚本设计应该体现在良好的结构和清晰的层级,以及脚本的可维护性与可扩展性上,脚本的“内在美”,也就是结构美比“外在美”更加重要。

《大巧不工》一书提到“事件驱动的设计方式其实就是以用户为中心设计的一种表现形式,他把设计的关注点放在用户的行为上,用户需要什么,用户会做有哪些行为等角度去分析,而不是从框架具有那些功能或者浏览器具备那些功能的角度去分析。这是一种以用户为中心的思想。”

 

  1,不能过分依赖脚本。

    没有人能保证自己设计的站点在没有JavaScript的情况下能够正常使用,处于某些原因(比如杀毒软件禁用脚本,用户浏览器安全级别设置过高)网站还能够退而求其次,没有动态的样式,但是能够正常使用。在脚本收到影响的情况下,应该做出友好的提示。

我们需要认真思考,某些功能是否可以不通过脚本或者通过部分脚本就能实现,保证网站的可访问性,带给用户更好的交互体验。“”

 

  2,前端需要分层。

    众所周知,JavaScript是一种提高站点可用性的最好解决方案。对于HTML决定页面包含那些元素,CSS决定那些元素应该怎么展现,JavaScript决定元素将其具有哪些行为,这是一个独立的思维。对于前端设计来说,将JavaScript代码从HTML中剥离出来是有意义的。

前端从概念上可以分为三个层次:结构(HTML),样式(CSS),行为(JavaScript)。这三种层次相互独立,互不影响,意义在于:

  ·脚本代码更加简洁、规范、,逻辑结构更加清晰,便于代码维护。

  ·独立的脚本代码更容易测试和调试。

  ·行为层次的独立增加了脚本代码复用的可能。

  实现行为层次的独立,有一些基本原则:

    (1)JavaScript代码只出现在.js文件中。

    (2)在HTML中,不会出现onload、onclick等元素,所有行为都使用绑定的方法来实现,而不是内联属性来设置。

    (3)只关注行为,不能在JavaScript中定义CSS样式

  这些JavaScript的新思维为前端复杂的脚本设计提供了良好的理论基础与实践指导。

 

  我为我的处女作选择了一把锋利的“刀”——jQuery,它是如今流行的JavaScript库之一,具备简洁,可扩展等优点。

 

  3,使用ready方法来进行初始化。

    这一点有点细,之所以让它作为一大点,是因为很多人和我一样,一直依赖jQuery提供的ready方法,却不知道所以然,其实它真的很重要。过往在页面已经加载完成时调用某方法,是通过设置body标签的onload时间,但是onload时间需要页面元素完全加载完成才会被调用,但是如果网页比较大(有大量图片和多媒体元素),则有可能出现初始化逻辑没有运行,用户就开始操作,从而造成体验方面的问题。

jQuery提供ready的方法可以让开发人员在DOM初始化完成后就开始执行初始化逻辑,从而有效避免这些问题。

 

    当然有时候,我们需要按照onload事件(当文件加载完成后触发)来延迟加载内容,从而优化性能。我们先要看看哪些内容是页面呈现时所必须首先加载的(比如导航和文章内容),那些内容是可以稍后加载的(比如动态操作、网页特效等),通过onload来分割。在页面中实现的拖放和动画的JavaScript就可以在onload事件后加载,因为网页上拖放元素是在初始化呈现之后才发生的,有些资源甚至可以在相关时间(点击事件等)触发的时候再加载。

 

  4,提高可读性

  要使代码更加精简,并且易于维护,可读性高意味着容易维护。如果简洁代码,设计高效率的算法,是我一直不懈追求的目标

 

 -----------------------------------------------------------------------------------------------------------------------------------------------------

 

  外联JavaScript和CSS文件

    第三点样式和第五点动态交互都要注意合理地利用缓存。使用外部的JavaScript和CSS。谈到性能问题的时候,很多人都会问一个问题,JavaScript和CSS到底是要放在外部文件中,还是应该放在页面中呢?

    多数情况,使用外部文件可以有效提页面的加载速度,原因很简单:外部的JavaScript和CSS文件都能在浏览器中产生缓存,同时可以减少HTML文档的大小,而如果将JavaScript和CSS代码内置在HTML中,则每次请求的时候都会随HTML文档重新下载。在用户访问站点中的多个页面时,这种方式带来的性能提高更加显著,因为同一站点往往使用相同的脚本和样式表,这些缓存外部文件就会带来更高程度的体验提高。

当然,有时候,例如Yahoo!主页,它在一次对话中拥有较少(可能只有一次)的浏览量,内置代码更加合适,内置JavaScript和CSS对于终端用户来说会加快响应时间。

把样式表放在文档内部和将脚本放在样式后面加载会加快网页加载速度,

 

 -----------------------------------------------------------------------------------------------------------------------------------------------------

 

  剔除无关通讯量

    剔除没用到的脚本和样式,一个网站经过长时间维护,站中往往会遗留大量无用的JavaScript和CSS,或者网站上为了使用某个控件而使用的脚本框架。多余的脚本和样式自然会影响站点的性能,这时,使用性能测试工具来分析,比如Page Speed自动检测页面上未使用的样式和脚本,再结合具体情况进行精简。

 

 

 -----------------------------------------------------------------------------------------------------------------------------------------------------

 

5.重构

 

  重构一般理解为在编程领域中为了改善代码的质量而经行的工作。但是,我更想将重构理解为“改进”,就是在网站最初版本推行时,认真审度每一个组件的设置和样式,结合用户反馈的信息(不过是网站上传后内部交流得出的小意见而已),反复揣摩那些不足,如何改进,改进到什么程度?在设计一开始,我为自己制定一下几个原则:

 

  (1)交互更人性化。

    例如,要设计邮件系统,当用户在收件箱中选择某一右键经行删除操作时,它不应该像平常那样弹出警告窗口“你确定要删除吗?”,而是提示“该会话已移至‘已删除邮件’”,并且提供一个撤销功能。一方面所有操作都不会被打断,另一方面又能预防用户误操作时将重要的邮件删除,提供一个人性化的“撤销”功能。

 

  (2)收集好的样式,吸取好的设计。

一些好的设计里面能够指引一种模式,体现未来社会潮流,给我们不错的提示和启发。有了参照物,我们在编写样式代码的时候就更得心应手。一些大公司的交互设计比较有说服力,例如分页模式,购物车模式和标签云模式。

 

  (3)加多点创意。

  “补充 ”

  尽管如此,创新不应该无止境、无方向的,创新的目标是什么?脱离了产品的基本功能、违背可用性的基本原则的创新都是毫无意义的。比如,你想完成一个新创意,这个创意需通过大量的脚本运算实现,并且这段代码大约是70~80K,这样的创意是否要实施呢?答案显然是否定。这样的创意违背了可用性。脚本过大就目前的网络状况来看,70~80K的脚本严重拖慢网站的加载速度。同时,脚本的运算加重了浏览器的负担,客户配置越低,用户体验度相应越低。

 

    总结,构建一个网站无论是界面设计,亦或是代码质量,不可能一步到位,步步成功,需要持续地学习,积累,整理。总结。构建过后,也并非一劳永逸,怎么才能让网站设计更加人性化,代码更加强健,要靠日后长时间而又高效的维护。

 

 

 

 -----------------------------------------------------------------------------------------------------------------------------------------------------

 

 

 

在我编程进步路上,我前端成长的路上,感谢所有学术指导性网站,感谢我所阅读过的书刊的作者们,感谢你们的一路陪伴,我会加倍努力,坚持下去,做得更好。

 

  下集预报,从处女作出发,我对WEB前端的几段思考(二)——分页和json数据处理

 

 

转载于:https://www.cnblogs.com/0603ljx/p/3580256.html

更多相关:

  •   同学们大家好,我是小伊同学,上一节我们介绍了一些常用API,今天我们接着来学习一组API,那就是获取用户身份信息的API。  在微信小程序中,我们往往需要获取用户的身份信息,比如昵称、头像、性别、地区等。要得到这些信息,就需要我们调用获取用户信息的api了。在小程序中,微信非常重视对用户隐私的保护,因此有很多关于获取用户信息的...

  • UTRAN接口的通用协议模型如下图: 通俗地讲,通讯网络由终端(terminal)、连接(links)、网络节点(nodes)组成, links将nodes 关联起来。源终端(MO)发送的消息是怎样才能到目的终端(MT)呢? 消息经过links 和nodes,直至到达MT,其中关键是nodes怎么路由(route)消息到最终...

  •        Linux是一个多用户的操作系统,用户要使用该系统,首先必须登录系统,使用完系统后,必须退出系统。用户登录系统时,为了使系统能够识别自己,必须输入用户名和密码,经系统验证无误后方能进入系统。在系统安装过程中可以创建两种帐号:        1、root--超级用户帐号,使用这个帐号可以在系统中做任何事情。      ...

  • 1.用户基本概述 1.1.什么是用户? 用户指的是能够正常登录Linux或Windows系统(可以理解为你租了房⼦,能够正常入驻) F:那Linux与Windows系统的用户有什么区别? Q:本质都是登陆系统,只不过Linux⽀持多个用户 同时登陆。 F:难道Windows就不算多用户操作系统吗? Q:其实不是,在Windows...

  • 背景信息 用户通过Telnet登录设备时,设备上必须配置验证方式,否则用户无法成功登录设备。设备支持不认证、密码认证和AAA认证三种用户界面的验证方式,其中AAA认证方式安全性最高。 采用AAA本地认证方式实现用户通过Telnet登录设备的身份认证,设备上需要开启Telnet服务,将用户界面(以VTY用户界面为例)的验证方式设...

  • 举例:   如果您要加载富文本框内容的DOM id是detail 那么就这么写scss样式 #detail {font-size: 14px;text-align: center;&>>>p {font-size: 14px;text-align: justify;line-height: 26px;color: #666;m...

  • 一、基础知识 1.整体架构 以响应式设计为理念,css组件、js插件+jquery、基础布局组件和12栅格系统搭建。 1.1响应式设计:结合media query查询,适应更多设备,自动适应用户的设备环境,不必为每个终端做一个特定的版本。 2.css12栅格系统 将容器平分12份,行(row)必须包含在.container中,只有列(...

  • CSS样式表 CSS作用是美化HTML网页。 /*注释*/    —— 注释语法 样式表的基本概念1-1        样式表分类 (1)   内联样式表 和html联合显示,控制精确,但是可重用性差,冗余多。 例:内联样式表

    (2)   内嵌样式表 作为一个独立区域内嵌...

  • 原文:【百度地图API1.1】修改文本标注的样式百度地图API1.0中文本标注的样式写法为: label.getDom().style.borderColor = "#808080"; label.getDom().style.color = "#333"; label.getDom().style.cursor = "pointe...

  • 前言  做前端已有不短的时间了,在css这片领域越走越久、越走越远,回过头来看看,有很多技能知识掌握了就不会再忘了,比如无图片实现三角形、ie下如何实现半透明效果等等;但有些东西却需要在项目实战中不断地碰壁、总结,再碰壁、再总结,慢慢地去找到适合自己的方法,然后遵循这样的方法,去开发,以收到事半功倍的效果。本篇文章就属于后者,因为是...

  • 最近梳理了一下卷积神经网络设计相关的论文(这个repo现在只列出了最重要的一些论文,后面会持续补充):Neural network architecture design​github.com1. Handcrafted1.1 Efficient[1608.08021] PVANET: Deep but Lightweight Neu...

  • delphi用的fastreport比较多 所以。net中也研究一下用法,这个打印控件还是很简单的 只要手动设计一下写少许代码就可以打印了 甚至可以写成通用代码 以后就可以不用写代码 安装demo会同时安一个设计器  打开设计器 通过设计器设计模板 新建数据源 新建数据集    查询单表全部内容,选中完成即可,现在我们要做一个带...

  • 简介: 本文翻译自《iOS7 by Tutorials》一书的第一章“Designing for iOS 7”,主要从程序员角度介绍了iOS7的新设计理念,堪称神作!本文翻译仅作学习交流之用,版权归原作者所有,有删减。非专业翻译人士粗糙之处在所难免,想体会原文精髓的朋友请到Raywenderlich商店支持正版。 —————— by...

  • 背景 做过需求之后,很少使用 UML 画概要设计,这几天尝试的用了几个工具,最总还是选择了 VisualStudio。 Edraw 详细信息很难编辑,如:签名。 Viso 添加成员太麻烦了。 VisualStudio 图形不支持着色。 备注 使用 VisualStudio 可以直接将概要设计的成果用在详细设计中。   转载于...