界面耻辱纪念堂--可视元素03

更多的迹象表明,关于在程序里使用新的动态界面元素,微软的态度是不确定的,其中一个是仅仅需要对比一下Office97 里的“Coolbars”和“标准工具条”。Coolbar 按钮直到用户指针通过的时候才成为按钮(否则是平的)。

工具条按钮,像在Office97 工具条里的一样,不需要用户交互;他们可以直接认出按钮控件。是我们发现了微软的争论,还是微软不小心的设计?

很不幸,WebZip 借鉴了 许多类似EMERAC 的Office97 特性,包括在对话框中不适当地使用动态工具条按钮(按钮直到指针通过时才成为按钮),而不是使用标准工具条按钮。

下面的插图证明使用动态按钮的基本问题:用户无法凭扫一眼来断定界面元素真的是一个控件,相反,如果用户没有在附带的图像上移动,就不能断定它是否一个控件。在插图中,上面的两个图像是 WebZip 的附带图像:

它们没有提供功能。当然,这个程序使用动态按钮,新用户一旦学到图像会在指针通过时变为按钮,会理所当然地认为附带图像也有这个特性。

插图中下面的图像暗示使用动态控件另外的问题:静态图像实际上也可能是控件,但是,由于它们在指针通过时没有动态行为,会被认为不是控件。那个“Scroll Down”(向下滚动)按钮不“浮动”,指针也不变成手形(在WebZip 的其他地方是这样),并且那个“Download Now”按钮,用一个环行三角表示,在响应指针移动时并不变化)。

另外,使用动态按钮的问题还有,不使用鼠标进行输入时存在很严重的限制。有意义的键盘访问键不能分配给这种控件,而且它们不支持声音输入。再有,我们发现在有意义的标题按钮(例如,上面图像的"New"、"Open"按钮,和下面图像的"Download Now"按钮)的场所使用含义模糊的图像是很差的设计。我们对 WebZip 的建议是:

开始注意GUI 中的U(用户)

WebZip 使用了一个很像这个独特网站的导航栏。当然我们可以看到一个复杂的网站需
要这样一个导航栏,但是在一个相对简单的桌面应用程序里使用有些驴唇不对马嘴(在我们
看来,他们仅仅是努力模仿一个站点的外观 ,实际上是另一回事.)。

我们把这个例子列举在这里,因为它说明了两个视觉问题:第一个问题是,这个导航栏
可以滚动,但设计者隐藏了这个事实。设计者选择自己设计的而不是标准的滚动条,熟悉这
种滚动条的用户很少。

设计自己的控件时,有一个你要遵循的好准则:

使用操作系统提供的控件。用户已经对它们非常熟悉,真正懂得它们的用途和操作方法。
当我们最后意识到这个导航栏是可以滚动的,我们选这个例子的第二个原因就变得很清
晰了:WebZip 为新用户提供了一个“Quick Start”选择,这个选择使用了一个向导风格的
界面来清晰地说明如何使用这个程序。不幸的是,这个选择是导航栏的最后一项,直到用户
知道如何使用这个定制的滚动控件才为用户所见。

这儿是另外一个规则:

让面向新用户的特性可见和可访问

不要将程序的可用特性隐藏起来。

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

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

相关文章

Monorepo pnpm 模式管理多个 web 项目

Monorepo pnpm 模式管理多个 web 项目 Monorepo pnpm 模式管理多个 web 项目项目地址git flow 工作流程pnpm workspace.npmrc初始化项目架构引入Husky规范git提交配置eslint和prettiereslint 配置prettier 配置 配置lint-staged创建项目创建shared项目全局安装 vue在 packages …

新兴的安全职业挑战

我们经常与安全专业人士交谈,他们希望在努力提升职业发展的同时提高自己的价值并克服组织内部的挑战。在这些谈话中,花费大量时间讨论公司未来将面临的安全问题并不罕见。 安全领导者希望为问题制定计划并获得领导层对其计划的支持。这通常意味着实施修…

025 elasticsearch索引管理-Java原生客户端

文章目录 pom.xml1创建索引2.创建索引并设置settings信息3.创建索引并设置mapping信息4.删除索引库5.给未设置mapping的索引设置mapping elasticsearch版本7.10.2,要求java客户端与之相匹配,推荐Springboot版本是2.3以上版本 依赖配置使用的是JUnit 5&am…

oracle操作回退SQL

对表数据进行操作后,提交了事务,发现数据更新或者删除错了,这时候还是有方法可以数据回退的 进行数据回退操作,将数据回退到xxxx分钟,也就是update操作之前: 在回退之前,先查询xx分钟的数据&…

MYSQL-windows安装配置两个或多个版本MYSQL

安装第一个mysql很简单,这里不再赘述。主要说说第二个怎么安装,服务怎么配置。 1. 从官网下载第二个MySQL并安装 一般都是免安装版了,下载解压到某个文件目录下(路径中尽量不要带空格或中文),再新建一个my.ini文件(或…

Reality Capture 软件安装 附下载链接

Reality Capture 软件安装 文章目录 Reality Capture 软件安装一、Reality Capture v1.4汉化版安装包下载并解压二、Epic Games Launcher安装三、设置路径并安装![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f077210990674d9fa9c10b52338b52fe.png)四、启动Epic Ga…

Chromium 如何查找V8 引擎中JavaScript 标准内置对象

JavaScript 标准内置对象 - JavaScript | MDN (mozilla.org) 一、JavaScript 标准内置对象 本章介绍和说明了 JavaScript 中所有的标准内置对象、以及它们的方法和属性。 这里的术语“全局对象”(或标准内置对象)不应与 global 对象混淆。这里的“全局…

OpenStack服务Swift重启失效(已解决)

案例分析Swift重启失效 1. 报错详情 在重新启动 VMware 虚拟机后,我们发现 OpenStack 的 Swift 服务出现了 503 Service Unavailable 错误。经过排查,问题根源在于 Swift 服务所使用的存储挂载是临时挂载,而非永久挂载。 Swift 服务依赖于…

985研一学习日记 - 2024.10.11

偶尔一碗热鸡汤:一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。 日常 1、6:00起床 √ 2、健身1h 今天练了肩部以及背,然后跑步半小时 3、LeetC…

Python环境搭建

Python环境搭建 1 安装Python 双击安装包 2 安装Pycharm 双击安装包,然后下一步 安装完成后重启电脑 3 破解Pycharm 启动Pycharm 破解 4 pycharm的基本配置 1.主题颜色 2. 文件语言编码 滚动鼠标滑轮ctrl,可以快速缩放文本字体大小。 控制台编码的格式&#x…

Qt - QMenu

QMenu 1、menu转string输出 //GlobalEnum.h #include <QObject> #include <QMetaEnum> class GlobalEnum : public QObject {Q_OBJECT public:EnumTest();enum Enum_Test{ZhangSan 0,WangWu,};Q_ENUM(Enum_Test) };#define EnumToString(e) \ QMetaEnum::fromTy…

Python异步编程:使用`asyncio.Semaphore`控制并发

Python异步编程&#xff1a;使用asyncio.Semaphore控制并发 1. 什么是asyncio.Semaphore&#xff1f;2. 为什么需要asyncio.Semaphore&#xff1f;3. 如何使用asyncio.Semaphore&#xff1f;3.1 基本用法3.2 信号量的工作原理3.3 动态调整信号量 4. 适用场景5. 总结 在Python的…

Qt初识_通过代码创建hello world

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Qt初识_通过代码创建hello world 收录于专栏【Qt开发】 本专栏旨在分享学习Qt的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1.通过按…

c语言库文件

c语言库文件 动态库动态库制作首先生成动态库文件名使用动态库编译动态库运行删除动态库1.sudo su 静态库静态库制作需要将源文件.c转换成二进制文件.o&#xff08;重定向文件&#xff09;将重定向文件打包成静态库文件使用静态库文件 静态库和动态库的区别 库文件的概念 我们将…

python-读写Excel:openpyxl-(1)基础操作之读写数据

目录 工作薄 创建/打开工作薄对象 获得默认sheet 工作表 创建工作表 删除工作表 获取表名 复制表 获取表对象 单元格 列号数字与字母转换 获取有效数据行和列 单元格对象获取 获取有效数据区域 获取指定行对象 value获取单元格数据值 修改及写入数据 插入或删…

C#里使用DataGridView来显示500万行数据

如果有500万行数据需要显示,大家肯定感觉很麻烦。 因为一次性地往列表里添加500万行数据,就需要很久的时间, 并且当滚动的时候就会更新比较慢。 有没有更好的方式呢? 其实可以采用虚拟列表的方式,也就是设置下面的方式: dataGridView1.VirtualMode = true; 这样列表…

老人桌面 1.3.5|专为老人设计的便捷实用桌面应用

老人桌面是一款专为老人设计的便捷实用桌面应用&#xff0c;具有超大字体设计&#xff0c;符合老人视力水平&#xff0c;撞色简洁的应用界面&#xff0c;拯救老人视觉体验。此外&#xff0c;还提供了常用的实用小工具&#xff0c;让老人能够轻松使用手机。 大小&#xff1a;5.…

vuefor循环动态展示图片不显示

问题代码如下 <div class"zjjc_list_bottom" v-for"(item, index) in zjjcList" :key"item.id"><img :src"./assets/left_blue_ (index 1) .png" alt""> </div> 理论来说是不会有问题&#xff0c;但…

An.如何在an中截取音频片段

如何在an中截取音频片段 在an动画制作过程中&#xff0c;部分片段需要插入音乐&#xff0c;如果想要插入一首歌曲的其中一小节&#xff0c;打开音频编辑软件操作就很麻烦&#xff0c;不妨直接在an中操作&#xff1a; 以这首节气歌为例&#xff0c;前奏太长需要剪掉前面的部分 …

图片/视频预览页面开发

使用到了vant-ui中的轮播组件、图片组件 数据结构示例&#xff1a; // type: 1图片 2视频 list: [{type: 1,url: adfdsfadsfasdf.png,},{type: 2,url: asdfasdfasdf.mp4,} ],item: {type: 1,url: adfdsfadsfasdf.png, },// utils/index.js/*** 图片/视频预览* param list* …