vc6.0mfc中单选按钮如何分组_按钮系列02-搞定按钮和选框的14个秘诀

090afbc14b3e32ad739326d3349f99ff.png

UI 界面当中,各种开关、按钮、选框控件是非常常见的组件,它们看起来不复杂,但是在实际使用的时候讲究非常之多,它们不仅关乎体验,而且涉及到一些界面逻辑问题。

英文中的 「Toggle」一词,对应的是带有短柄的拨动式开关,拨动它的时候,能够在两种不同的状态之间切换。

adb77a5ed165dd29df2b30afe86d21a7.png

至于 「单选按钮」(Radio Buttons)这一词则来自汽车收音机,在老式的汽车控制面板上有一排机械的可以存储预设电台的按钮,用户可以快速地按动按钮切换不同的电台。按下其中一个按钮,其他的按钮会弹起,这里的按钮是互斥的,多个按钮无法同时被激活。

复选框(Checkboxes)则通常有一个或者多个选项,供用户选择,复选框内的选项通常不是互斥的,用户可以选择一个也可以选择多个。

拨动开关(Toggle-Switch)则是最常见的一种按钮样式,点击即可切换状态。

3218b08207c7072be1216180ff5b14b7.png

选择按钮(Choice Chips)是单选按钮一种精简模式,它通常会包含有至少2个选项,用户可以选择其中的一个,选择按钮大多出现在移动端界面上。

多选按钮(Multi-select Chips)则是复选框的一种通用替代品,用户可以选择其中多个选项,而这种按钮也大多应用在移动端设备上。

各类选择控件已经在用户界面中存在了很长时间,所以用户对于它的功能、认知以及期望是清晰的。下面是一个非常简单的清单,列举出了绝大多数常见的选择控件的类型和使用场景:

e61768e2b64b44c71de13f81a27bb976.png

1、熟知按钮的不同显示状态

6269e2915799545a1a498a51fd4b4fb0.png

复选框和单选按钮有选中和未被选中两种状态,拨动开关则有开启和关闭两种状态。在实际的使用过程中,它们都有启用、禁用、悬停、聚焦、按下等不同状态,虽然这些状态看起来很多,但是这些状态涉及到实际交互的需求和不同场景,并且是实现可靠交互的基础。

2、别忘了「未定状态」

354b828e0c4eb02bb5cf250c5ad1d9a7.png

对于复选框,通常只存在选中和未选中两种状态。如果涉及到多层级、有父子结构的复选框体系的时候,可能会因为子复选框部分选中、部分未选中,而使得父复选框的状态介乎全选和未选择之间,这种「未定状态」容易被忽略。

3、不要错用了「拨动开关」

a8adc72a2414377ae87acfd35ff88380.png

在涉及到有层级结构选项的时候,不要使用拨动开关。它不仅在视觉上容易分散注意力,而且在使用的时候,容易导致误判。

4、当功能触发立即生效时,使用拨动开关

v2-589fa270652dde9f3031faa4ff24090d_b.jpg

拨动开关是标准的数字化的开关功能,当你使用拨动开关这种控件的时候,确保它所触发的功能能够立刻开启/关闭。如果不是这样的情况,那么最好使用单个复选框来替代拨动开关。

5、避免非常规的控件样式

5e7cccc9f7f20e36fae5a006af91a957.png

和整个平台的常规样式差异过大的按钮样式,很容易带来额外的认知负担。比如圆形的复选框就很容易和传统的单选按钮混淆。

6、在列表中使用便于用户扫读的排版

f947ee0549aecfb0cc3c0b566f8dd2bc.png

靠左对齐的复选框+标签的样式是效果最好的。这确保了用户可以最快理解并完成操作,减少错误出现。将复选框靠右对齐其实也可以,在移动端上展示其实也有优势——单手操作的时候更容易被选中,也不会因为点击勾选的时候手指会遮盖到标签内容,不过标签文本和复选框不能相隔太远。

7、如果纵向空间不够请使用按钮替代选框

aabe5a04b7a4a20f8a345015b579eb40.png

使用选框控件的问题在于它和对应标签是分离开的,在垂直控件有限的情况下,横向排版会非常局促,这个时候用按钮来替代选框会好很多。

8、尽可能使用单选按钮而不是下拉菜单

07562ab08f7f74747fb27bb9838fb7f7.png

使用单选按钮能让选项始终可见,这样方便用户直观地比较和查看,从而减轻认知负荷,让表单内容更加清晰透明。

9、使用下拉菜单承载大量、相似的选项

a35a6242daa9b5160812c6934bbddb35.png

如果选项的数量超过6个,最好还是考虑将它置于下拉菜单中,因为用户无论如何都无法快速记住和对比全部的选项,这同样适用于大量的、相似的或者可预测的选项,比如 10%、20%、30%、等等。

10、单选按钮最好提供一个默认选项

453e885413cdd324465b51c5fd797f4d.png

通常,一旦选中了某一个单选按钮,用户就无法取消选择并且恢复原始状态。所以,可能会有用户不愿做出选择,这个时候应该提供一个「无」的选项。提供默认选项,并且按照逻辑顺序来排序,这样会更好。

11、使用清晰的文本标签内容

f47a98300d7de1bcfc516f50713c4e74.png

在文本标签内容当中,尽量不要使用否定的表达方式,这样可以规避误解,方便用户正确理解内容。

12、突出显示被选选项吸引用户注意力

7d8ce29ae1d02e16e8121a4dc6d1f012.png

从视觉上对于被选中的选项进行区分,这在数据表单中尤其重要。

13、支持批量选择和清除

032dba4371f0c60dda6007caf1661d7d.png

对于用户而言,一次选中和清除多个选项应该是一件简单轻松的事情,因此需要支持批量选中和清除的功能。

14、让可点击区域足够大

d40a0bba098885fe8bfcecf71ec5b839.png

相对够大的触发区域,是确保用户在移动端上交互的重要基础。让触发区域包含按钮、文本标签以及周围一部分的留白区域,能让交互轻松很多。根据菲茨定律,点击区域的大小对于交互的影响是非常直接的。复选框和单选按钮通常很小,单击的时候不容易被「瞄准」,尤其在移动端屏幕上。

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

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

相关文章

java某个类避免findbug检查_Findbug插件静态java代码扫描工具使用

本文转自http://blog.csdn.net/gaofuqi/article/details/22679609 感谢作者FindBugs 是由马里兰大学提供的一款开源 Java静态代码分析工具。FindBugs通过检查类文件或 JAR文件,将字节码与一组缺陷模式进行对比从而发现代码缺陷,完成静态代码分析。FindBu…

4乘4方格走的路线_苏州周边4个冷门自驾游路线景点推荐

1.崇明东滩崇明东滩湿地公园有两大看点,一是看候鸟迁徙,二是看日出和星空。东滩湿地滩涂辽阔,低头是大片的芦苇,抬头是满天斑斓的云彩,顺着木栈道走在公园内,如与大自然融为一体,可360度将美景收…

Spring体系结构详解

Spring 框架采用分层架构,根据不同的功能被划分成了多个模块,这些模块大体可分为 Data Access/Integration、Web、AOP、Aspects、Messaging、Instrumentation、Core Container 和 Test。 Spring的体系结构如下图所示 图中包含了 Spring 框架的所有模块…

java对外查询接口注意的地方_Java接口注意点

1、接口可以多实现:一个实现类可以同时实现多个接口package com.qf.demo02_interface;//定义一种规则:interface A{public void testA();//public void fun();}//定义另一种规则interface B{public void testB();public void fun();}//实现类&#xff0c…

Spring目录结构和基础JAR包介绍

目前 Spring 框架的最新版本是 5.1.8,本教程是基于 Spring 的稳定版本 3.2.13 进行讲解的。读者可以通过网址 http://repo.spring.io/simple/libs-release-local/org/springframework/spring/ 下载名称为 springframework-3.2.13.RELEASE-dist.zip 的压缩包。单击此…

自定义依赖注解无效_SpringValidation用注解代替代码参数校验解析

Spring Validation概念在原先的编码中,我们如果要验证前端传递的参数,一般是在接受到传递过来的参数后,手动在代码中做 if-else 判断,这种编码方式会带来大量冗余代码,十分的不优雅。因此,推出了用注解的方…

mysql开源许可_为什么开源数据库改变许可证?

CockroachDB 是一个开源的分布式数据库,最近改变了代码授权,放弃了 Apache 许可证。一、CockroachDB 的许可证变更CockroachDB 以前的许可证是 Apache,代码托管在 GitHub,任何人都可以访问。现在的许可证改成了"商业源码许可…

Spring 依赖注入的实现

依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念。 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的实例(例如,使用 new…

java 静态对象语法_04.Java 语法

计算机基础知识表达式(expression):Java中最基本的一个运算。比如一个加法运算表达式。12是一个表达式,ab也是。计算机内存的最小存储单元是字节(byte),一个字节就是一个8位二进制数,即8个bit。它的二进制表示范围从00000000~1111…

Spring实例化Bean

在面向对象的程序中,要想调用某个类的成员方法,就需要先实例化该类的对象。在 Spring 中,实例化 Bean 有三种方式,分别是构造器实例化、静态工厂方式实例化和实例工厂方式实例化。 构造器实例化 构造器实例化是指 Spring 容器通…

Spring基于XML装配Bean

Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式。Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配、基于 Annotation 的 Bean 装配和自动装配等。 Spring 基于 XML 的装配通常采用两种实现方式&…

苹果php环境,苹果电脑安装PHP环境步骤-PHP问题

苹果电脑装置PHP环境步骤:一、起首咱们需求装置Homebrew二、终端输出饬令// 创立目次,假如你不创立过该目次sudo mkdir /usr/local/varsudo chmod 777 /usr/local/var//修正成你本人的用户名以及组,假如你不创立过该目次sudo mkdir /usr/local/sbin/sudo chown -R :…

Spring基于Annotation装配Bean

在 Spring 中,尽管使用 XML 配置文件可以实现 Bean 的装配工作,但如果应用中 Bean 的数量较多,会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。 Java 从 JDK 5.0 以后,提供了 Annotation(注…

swiper鼠标hover停止自动轮播_swiper滑块组件

相信大家在平常购物的时候都会看到轮播图,轮播图里面播放的是热门商品的信息。在小程序里面我们可以通过swiper滑动视图容器组件来实现,让我们一起来看下swiper组件都有哪些属性:我们看到可以通过一些属性给视图容器增加一些指示点&#xff0…

Spring自动装配Bean

除了使用 XML 和 Annotation 的方式装配 Bean 以外,还有一种常用的装配方式——自动装配。自动装配就是指 Spring 容器可以自动装配(autowire)相互协作的 Bean 之间的关联关系,将一个 Bean 注入其他 Bean 的 Property 中。 要使用…

java鬼剑士觉醒,DNF新觉醒装扮,男鬼剑士帅气无比!

在DNF这个游戏中,时装作为游戏的一大氪点,相信这几天的奇迹缝纫机活动也让大家了解到了时装到底多么的烧钱!而也因为这次的活动,时装可以说达到了饱和状态了,估计短时间之内魔盒里不会再出现追忆时装了!虽然…

Spring JDK动态代理

JDK 动态代理是通过 JDK 中的 java.lang.reflect.Proxy 类实现的。下面通过具体的案例演示 JDK 动态代理的使用。 1. 创建项目 在 MyEclipse 中创建一个名称为 spring 的 Web 项目,将 Spring 支持和依赖的 JAR 包复制到 Web 项目的 WEB-INF/lib 目录中,…

澄海哪里学机器人编程_少年学机器人编程

​当今社会,唯有能者居之,说的是有技能在手的人可以立足于职场,格物斯坦表示:现代化的教育方式有很多,其中有一种机器人编程教育模式,青少年们学好了,以后中考、高考核就业比同龄人更有优势了。…

Spring CGLlB动态代理

JDK 动态代理使用起来非常简单,但是有一定的局限性,这是因为 JDK 动态代理必须要实现一个或多个接口,如果不希望实现接口,则可以使用 CGLIB 代理。 CGLIB(Code Generation Library)是一个高性能开源的代码…

更新fielddata为true_在pytorch中停止梯度流的若干办法,避免不必要模块的参数更新...

在pytorch中停止梯度流的若干办法,避免不必要模块的参数更新2020/4/11 FesianXu前言在现在的深度模型软件框架中,如TensorFlow和PyTorch等等,都是实现了自动求导机制的。在深度学习中,有时候我们需要对某些模块的梯度流进行精确地…