纪念基于JavaScript 实现的后台桌面 UI 设计

目录

前言

C/S 到 B/S

ASP Builder 的诞生

关于 Craneoffice.net

开发环境配置

后台界面的 UI 区域要素

桌面系统的想法和设计

搜索引擎

导航面板

快捷访问

二级导航

小组件及其它

   设置桌面壁纸

小时钟

附件小程序

计算器界面设计

日历与任务

系统设置

天气小组件

任务栏

开始菜单 

操作界面设计

查询界面设计 

写在结尾

 

 


前言

     2000年以前一直从事的是 C/S 应用程序的设计开发,UI自然也是重要的组成部分,曾痴迷于Mac OS 的界面,也曾被微软推出 Windows XP 时风格的变化所惊艳。记得开发的一个药品管理项目,因自己不满意 Windows  NT 的风格,擅自做主使用 Windows 底层API 修改窗口系统风格为Mac,以致于后来严重影响了交付时间。现在感觉,设计再优秀的界面也有审美疲劳的一天,也有众口难调的一面,因为时代需要进步,保持新鲜感是我们不断改进的动力。

C/S 到 B/S

    第一次承接 B/S 的项目很突然,了解了业务需求后,甲方对技术也提出了需求,要求使用 ASP 技术,当时没有任何的开发经验,大脑一片空白,于是买了一本叫《HTML 从入门到精通》的书开始学习起来。

    由于受C/S开发界面的设计模式影响根深蒂固,开发WEB页面的UI也走了不少弯路,比如总试图使用全部的绝对定位,寻找丰富的控件库、存储状态值的显示等,更别提使用CSS了,基本都是使用 style 属性进行赋值。

ASP Builder 的诞生

   本人非常推崇与着迷 Borland Delphi 的 RAD 设计理念,因此当基本了解了 ASP 工作原理的时候,萌生开发第一个自己的开发工具 ASP Builder 的想法诞生了,通过设计数据表,快速生成目标服务器脚本、网页UI及客户端脚本。正式运行后,开发效率的确取得了显著的提升,但这还是没有脱离C/S的“阴影”。不过现在纵观 小程序、VUE 的一些模式,仍然能够找到曾经 ASP 的身影,只能说万变不离其宗吧,设计模式和业务逻辑更是我们要关心的。

关于 Craneoffice.net

   自从从 ASP 到 ASP.NET ,那一系列的改变让我对 .net 的领域研究从此一发不可收拾。Craneoffice 最早是与合伙人创立的工作组的名称,是研发新技术产品的部门,后期虽经历数次公司的变迁,Craneoffice一直未变,如今因为业务需要,最终成立了自己的软件工作室,谐音“科润”,也算圆了自己的梦吧。

   如今 Craneoffice.net 已经成为了公司核心框架,当然,你也可理解为祖传代码。其中,JavaScript + Css 一直是做为 WEB UI 的一个基础的存在,当然这里有感情的成份、需求的要求和一种开发习惯。

开发环境配置

   操作系统:Windows DataCenter Server 2019

   数据库:Microsoft SQL Server 2016

   架构及其它: .net 4.7.1  / VS2019  Asp.net   C#   / JavaScript Jquery  Css 

   OFFICE:  2016 

后台界面的 UI 区域要素

   后台系统一般包括登录界面和办公界面(即后台)两大部分,办公界面按单屏幕划分,比较主流的设计包括如下几个部分:

   (1)左上角 Logo 及系统的标题

   (2)右上角登录提示信息或常用菜单

   (3)左侧功能菜单(可能根据权限的控制进行不同的显示)

   (4)右侧业务操作区(一系列的增、删、改、查、统计分析等)

   (5)底部版权信息栏

      简易的布局如下图所示:

桌面系统的想法和设计

    我们原来设计的登录后的首页,一般会显示一个简单的欢迎页面,或添加一些提醒信息、任务信息等,且功能、样式和背景图基本是固定模式。因此,想设计一款类似操作系统桌面的,具有通用性又兼具个性化设置的功能,实用且不过于复杂。下面我们将讲解一下桌面系统的功能设计:

搜索引擎

   该设计是为了实现系统平台所提供的文档、功能、业务数据、多媒体信息等的搜索,以简化操作深度,比如我们有一个培训视频模块,我们不但可以根据关键字,按照功能菜单标题、视频内容标题、作者等进行搜索,还能够按照视频中的讲解内容进行搜索并定位相关片断,以供使用者参考。举例搜索如下界面:

这是一个深色模式的呈现,输入“杰克逊” 关键字,点击搜索后,结果页分三个色块区域:

1、黑色标题为统计结果信息和关闭功能;

2、中间为搜索内容区域,内容包括图标、标题、打开功能链接和添加到我的快捷访问;

      2.1 图标:可根据内容进行不同类型的显示,这里我们看到的是一个播放器图标,则代表是一              个视频结果内容;

      2.2 标题:我们看到标题中也并不包含“杰克逊”的关键字样,这证明视频内容可能包含该关键字

      2.3 打开功能、文章或快照链接:这里我们是将打开视频预览的链接;

      2.4 添加到我的快捷访问:类似WINDOWS里的快捷方式,再次返回桌面时,会有快捷访问功              能直接进行定位。

      2.5 导航条:使用传统的上下翻页链接实现,色块采用与主内容区渐变过渡的效果;

            有关渐变的关键的CSS代码如下:

.q_dbgrid_nav {color: White;background: linear-gradient(rgba(50,54,61,0.7),rgba(50,54,61,0.1));text-align: center;margin-top: -20px;padding: 10px;
}

      打开目标页面如下图:

 实现视频内容搜索,界面提供关键字上下文片断的 “猜你想听” 的推荐。下方显示视频的原文地址,这里我们是选择存储在腾讯云上。最下方是视频播放器,这是我们改造后的腾讯超级播放器后的效果,从视频中我们可以看到关键字讲解词。

导航面板

登录默认的桌面或关闭搜索引擎结果页面,系统会提供一个导航面板,如下图:

 导航面板主要包括:

 1、产品的版本信息。

 2、已支持或购买的产品信息,以图标的形式体现。

 3、其它功能链接:如开始菜单、快捷访问、如何使用桌面系统的功能链接,还设置了一个“下次           不再显示”的个性化功能。

快捷访问

如图我们点击刚才在搜索引擎里添加的功能,显示如下图:

可以看到培训链接已经添加快捷访问的 DIV 容器里,该容器的左上角为关闭按钮加功能标题的设计,窗口内部为 flex 布局,显示为图标及标题的列表。另外,在弹出该容器时,采用了其它背景对象虚化的滤镜技术,关键 JavaScript 代码如下:

function blurDesktop(v) {document.getElementById("searchbox").style.filter = 'blur('+v+'px)';document.getElementById("queryRsultBox").style.filter = 'blur(' + v + 'px)';
}

通过blur滤镜控制模糊程度,另外我们可以改进推送要模糊的元素到数组里进行遍历的方法,这里的代码仅供参考。

二级导航

点击图标设计如下图:

 左上角显示返回链接,图标复制主面板HTML片断,链接显示则复制开始菜单的HTML片断进行显示。关键 JavaScript 代码如下:

//遍历开始菜单里的list项目
for (var j = 0; j < lilist.length; j++) {if (lilist[j].getElementsByTagName('a')[0] == undefined) { continue; }var aobject = lilist[j].getElementsByTagName('a')[0].cloneNode(true);  //克隆HTML片段aobject.style.color = "black";//添加到二级控制面板链接列表a_list.appendChild(aobject);a_list.appendChild(document.createElement('br'));a_list.appendChild(document.createElement('br'));
}

小组件及其它

   小组件是一组提供实用且个性化设置的功能程序,如下图:

分左右两部分,右边部分为“步步高”式设计,依次为设置桌面壁纸、显示时钟、附件小程序、系统设置,下面主要讲解一下这几组功能:

   设置桌面壁纸

   该功能可实现更换桌面背景,并通过AJAX技术调用服务端静态方法保存到个人配置表中。显示如下图:

 如图设置容器左上解为关闭按钮及标题,内部嵌入DIV 加 FLEX 布局,列表显示为服务器端显示输出,这些默认的图片都是本人比较偏好的,所以感觉自己有点偏执与强势,如图我们选择 “春枝” 主题,并点设置,稍候更新如下图:

 这是自己一段封装的调用服务器静态WEB方法的 JavaScript 方法,仅供参考:

//参数serviceUrl为方法所在URL,为空则代表本页
//参数serverFuncName 为服务端WEB静态方法名称
//参数params 为JSON 参数列表字串形式
//参数 resultFuncName,srcobj,1为调用返回时调用的客户端方法,2为指定一个目标控件
//该方法用于调用服务器端方法后的客户端处理,首先返回调用成功的状态,参数2为服务器返回的对象数据
//参3为传递的目标控件值
function callServerFunction(serviceUrl,serverFuncName,params,resultFuncName,srcobj) {$.ajax({//要用post方式   type: "Post",//方法所在页面和方法名   url: (serviceUrl == "" ? (window.location.protocol + "//" + window.location.host + window.location.pathname) : serviceUrl) + "/" + serverFuncName,contentType: "application/json; charset=utf-8",data: params,dataType: "json",success: function (data) {//返回的数据用data.d获取内容   if (resultFuncName != null) {resultFuncName("success", data.d,srcobj);}},error: function (err) {if (resultFuncName != null) {resultFuncName("error", err);}}});
}
小时钟

这个功能很好理解,每点击一次小时钟的图标,可以进行显示和不显示的切换,同样这也是通过调用服务器方法实现的。

附件小程序

这个可以后续进行插件更新,目前提供了两个实用的小程序,计算器、日历与任务。

点击附件小程序图标如下图:

容器的设计模式具有通用性,和设置壁纸、快捷访问功能类似,如图的两款功能均用 JavaScript / CSS 实现。

计算器界面设计

日历与任务

日历也是我们经常用到的功能,而且可以设置任务提醒功能,这在系统登录或访问应用时都会在屏幕左上角区域用任务图标进行提示。该功能显示如下图:

界面的左侧显示日历,右侧显示任务设置面板,点击日历即可赋值在开始时间,再次点击将赋值到结束时间里,同时我们还可以设置提前提醒的时间量,最后点击保存设置即可完成任务的设置。该容器的标题部分还可以操作两个功能:我创建的任务、任务提醒。

比如我创建的任务,界面如下所示:

系统设置

点击系统设置图标,将唤起开始菜单里的系统设置功能,开始菜单也是用 JavaScript 和 CSS 编写的功能,类似手机的操作系统界面设计,可以在PC端显示,更适用于移动端。系统设置的菜单如下图所示:

设计风格采用相对简洁的形式,用图标分组相应的功能,菜单栏以横线分隔,设置或选中的项目以绿色小对勾的图标进行显示。 

天气小组件

天气小组件,显示了今天和明天的天气情况,简单实用,设计布局在左下角布局。该功能是使用 JavaScript 抓取的第三方天气信息,提取的时候会有加载提示,如果我们不需要显示该组件,还可以通过系统设置选择关闭显示。

任务栏

任务栏沿袭了区域要素的一些设计,左上角显示的是微信登录成功后的头像,和相关的任务图标。右上角显示一些欢迎信息和常用功能菜单,如下图所示:

在图中我们用鼠标移动贴近左侧区域20像素内,自动弹出显示功能菜单,导航到具体的业务。

某些任务图标是动态显示的,如图中红色的铃铛图标表示有任务提醒、绿色的播放器图标表示本页面有帮助视频可供学习。另外还有一些固定的任务图标,比如黄色的收藏图标。

如下图这是浅色模式下的任务提醒界面,点击任务栏红色铃铛图标即可显示详细任务信息。

 点击绿色播放图标,将显示帮助学习视频界面,同时结合 Ajax技术实现点赞、评论和收藏功能,如下图:

将鼠标移动任务栏的右上角,将自动弹出常用菜单,包括我的桌面、修改个人信息、我的消息、操作指南、手机认证、实名认证、修改账户信息、联系客服等功能,该菜单的弹出效果使用动态螺旋式效果,视频效果如下演示:

3dmenu

开始菜单 

开始菜单是结合包括右上角的常用功能菜单和左侧的业务功能菜单的总集合。界面采用类似移动端APP图标的形式呈现,如下图:

 其中业务功能菜单被集成到开始菜单里,点击则进入下一级菜单,风格与系统设置类似。

操作界面设计

操作平台的界面,我们会在系统设置里设置几种风格,比如经典、动感,后续还可以继续添加“皮肤”,原理就是编写不同的CSS文件和对应的深、浅色模式的附加CSS文件,具体可参考我的文章​ 《CSS控制界面风格及深浅色模式的一些思路》 ​,设置方式由JavaScript进行开始菜单的选择呈现,如下图我们显示的是经典且深色的模式: 

 下图是提交的时候一段警告的提示框,关于提示框的设计也是基于Layer组件的纯JavaScript改造,详情可参考我的文章《改造 layer 弹层移动版组件》。

查询界面设计 

 查询界面的设计一般包括条件输入控制面板(QueryPanel)和查询结果网格(DataGrid),如下图举例:

查询结果的设计风格没有采用网格线,鼠标移动到某条记录会深色背景显示,底部的导航条的背景色使用渐变色至完全透明。

写在结尾

这版桌面系统的设计,从个人角度讲,倾注了不少心血,后续还想引入主题风格,如下图的小清新风格,使菜单变得更加透明,去掉任务栏背景色等。

 

由于种种原因,对于产品的界面改造可能告一段落,颇有些心灰意冷之感,也许是太疲惫了。多年来凭借自己学习过美术的一些知识,一直兼顾着UI设计,难免由于个人的偏执而无法听取别人的意见,这也是我开博写第一篇文章的原因,总之,能设计出令人满意的作品、得到别人的认可是最大的安慰。

学习过不少语言,有些已经淡忘不再使用,但JavaScript对我来说,是一门神奇又灵活的脚本语言,多年来从未放弃。个人认为其写容易,写好不容易,很考验你的技术处理能力。

可能自己相对比较保守吧,在此纪念一下自己的完结之作,和对 JavaScript 的喜爱。不管有多大争议,我们还要继续前行,技术日新月异,热爱永恒不变。

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/176917.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【HeidiSql_01】python在heidisql当中创建新表的注意事项

python在heidisql当中创建新表的注意事项 假设你已经在python当中弄好了所有的结果&#xff0c;并且保存在df_all这个dataframe当中&#xff0c;然后要将其导入数据库当中并创建一张新的表进行保存。 # 构建数据库连接,将merged_df写回数据库 from sqlalchemy import create_e…

进口跨境商城源码:高效、安全、可扩展的电商平台解决方案

电子商务的兴起为跨境贸易提供了前所未有的机会和挑战。在这个全球化的时代&#xff0c;跨境电商平台成为许多企业进军国际市场的首选。然而&#xff0c;搭建一个高效、安全、可扩展的进口跨境商城并非易事。 1. 解决方案概述 我们推出的 "进口跨境商城源码" 提供了一…

小程序商城免费搭建之java商城 电子商务Spring Cloud+Spring Boot+二次开发+mybatis+MQ+VR全景+b2b2c

1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、Mybatis、Redis 3. 前端框架…

uniapp @click点击事件在新版chrome浏览器点击没反应

问题描述 做项目时&#xff0c;有一个弹出选择的组件&#xff0c;怎么点都不出来&#xff0c;最开始还以为是业务逻辑限制了不能点击。后来才发现别人的电脑可以点出来&#xff0c;老版本的浏览器也可以点出来&#xff0c;最后定位到是新版的chrome就不行了 这是我的浏览器版本…

【C++的OpenCV】第十四课-OpenCV基础强化(三):单通道Mat元素的访问之data和step属性

&#x1f389;&#x1f389;&#x1f389; 欢迎来到小白 p i a o 的学习空间&#xff01; \color{red}{欢迎来到小白piao的学习空间&#xff01;} 欢迎来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; &#x1f496; C\Python所有的入门技术皆在 我…

STM32F407的系统定时器

文章目录 系统定时器SysTick滴答定时器寄存器STK_CTRL 控制寄存器STK_LOAD 重载寄存器STK_VAL 当前值寄存器STK_CALRB 校准值寄存器 初始化 Systick 定时器SysTick_InitSysTick_CLKSourceConfig delay_us寄存器delay_us库函数delay_xms短时delay_ms长时SysTick_Config 系统定时…

HTML和CSS的基础-前端扫盲

想要写出一个网页&#xff0c;就需要学习前端开发&#xff08;写网页代码&#xff09;和后端开发&#xff08;服务器代码&#xff09;。 对于前端的要求&#xff0c;我们不需要了解很深&#xff0c;仅仅需要做到扫盲的程度就可以了。 写前端&#xff0c;主要用到的有&#xf…

〔001〕虚幻 UE5 发送 get、post 请求、读取 json 文件

✨ 目录 🎈 安装 varest 扩展🎈 开启 varest 扩展🎈 发送 get 请求🎈 发送 post 请求🎈 读取 json 文件🎈 安装 varest 扩展 打开 虚幻商城,搜索 varest 关键字进行检索, varest 是一个 api 调用插件,支持 http/https 请求,也支持 json 文件的读取,最关键是该…

JavaScript

一. JavaScript概述 1. ECMAScript和JavaScript的关系 1996年11月&#xff0c;JavaScript的创造者--Netscape公司&#xff0c;决定将JavaScript提交给国际标准化组织ECMA&#xff0c;希望这门语言能够成为国际标准。次年&#xff0c;ECMA发布262号标准文件&#xff08;ECMA-26…

水库大坝可视化智能远程监管方案,助力安全监测智能巡检

一、背景需求 水库大坝作为防洪度汛的重要设施&#xff0c;其安全问题直接关系到人民群众的生命财产安全。因此&#xff0c;必须加强对大坝水库的安全管理&#xff0c;对水库除险加固和运行管护要消除存量隐患&#xff0c;实现常态化管理&#xff0c;同时要配套完善重点小型水…

在Linux上编译gdal3.1.2指南

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> 以Ubuntu 18编译gdal3.1.2为例,编译gdal3.1.2需要先编译proj库和geos库(可选)。我选择的proj库版本为proj-7.1.0,编译proj-7.1.0需要先编译tiff库和sqlite3。我选择的sqlite3的版本为…

高性能消息中间件 - Kafka3.x(三)

文章目录 高性能消息中间件 - Kafka3.x&#xff08;三&#xff09;Kafka Broker ⭐Kafka Broker概念Zookeeper&#xff08;新版本可以不使用zk了&#xff09;⭐Zookeeper的作用 Kafka的选举1&#xff1a;Broker选举Leader⭐Broker核心参数⭐案例&#xff1a;服役新节点和退役旧…

SaaS可配置性设计要点

1 引言 考虑到系统SaaS需求&#xff0c;就成熟的SaaS应用而言&#xff0c;元数据服务是为用户提供定制和配置应用、满足其特定需求的主要手段。 可配置能力主要反映在这4个方面&#xff1a;1 程序外观&#xff1b;2 工作流程与业务规则&#xff1b;3 数据模型&#xff1b…

微信便利签怎么弄?微信中有便捷操作的便签小程序吗

微信在日常办公及生活中比较重要的作用就是&#xff1a;聊天、视频会议、语音会议等&#xff0c;这是大家认知中的微信。除了这些功能以外&#xff0c;微信中还有很多小程序&#xff0c;小程序也能够辅助大家日常的办公。 比如&#xff0c;工作中我们需要制定工作计划&#xf…

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置&#xff0c;然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…

一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)

本文主要讲述了一体化模型进行去噪、去雨、去模糊&#xff0c;也就是说&#xff0c;一个模型就可以完成上述三个任务。实现了良好的图像复原功能&#xff01; 先来看一下美女复原.jpg 具体的&#xff1a; 在图像恢复任务中&#xff0c;需要在恢复图像的过程中保持空间细节…

transformers-Generation with LLMs

https://huggingface.co/docs/transformers/main/en/llm_tutorialhttps://huggingface.co/docs/transformers/main/en/llm_tutorial停止条件是由模型决定的&#xff0c;模型应该能够学习何时输出一个序列结束&#xff08;EOS&#xff09;标记。如果不是这种情况&#xff0c;则在…

Mybatis—基础操作

mybatis入门后&#xff0c;继续学习mybatis基础操作。 目录 Mybatis基础操作准备工作删除操作日志输入预编译SQLSQL注入参数占位符 新增操作基本新增添加后返回主键 更新操作查询操作根据id查询数据封装条件查询条件查询 Mybatis基础操作 准备工作 根据下面页面原型及需求&am…

vlc打开网络流(如rtmp),并查看媒体信息(如编码格式等编码信息)

打开vlc 选择媒体&#xff0c;打开网络串流 输入rtmp地址&#xff0c;点击播放 选择工具-编解码信息 可以查看节目的编码信息什么的

SpringCloud 微服务全栈体系(九)

第九章 Docker 三、Dockerfile 自定义镜像 常见的镜像在 DockerHub 就能找到&#xff0c;但是我们自己写的项目就必须自己构建镜像了。 而要自定义镜像&#xff0c;就必须先了解镜像的结构才行。 1. 镜像结构 镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而…