16个UI设计小规则,但是却能产生巨大影响

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版,欢迎购买。点击进入详情

文章目录

  • 1.使用空间对相关元素进行分组
  • 2.保持一致
  • 3.确保外观相似的元素功能相似
  • 4.创建清晰的视觉层次
  • 5.删除不必要的样式
  • 6.有目的地使用颜色
  • 7.确保界面元素的对比度为 3:1
  • 8.确保文本的对比度为 4.5:1
  • 9.不要仅仅依靠颜色作为指标
  • 10.使用单一无衬线字体
  • 11.使用小写字母较高的字体
  • 12.限制大写字母的使用
  • 13.仅使用常规和粗体字体粗细
  • 14.避免纯黑色文本
  • 15.左对齐文本
  • 16.正文至少使用 1.5 倍的行高

1.使用空间对相关元素进行分组

将信息分解为较小的相关元素组有助于构建和组织界面。这使得人们更快、更容易地理解和记忆。

您可以使用以下方法对相关元素进行分组:

  • 将相关元素放在同一个容器中
  • 空间相关元素紧密相连
  • 使相关元素看起来相似
  • 将相关元素对齐在一条连续线上

使用容器是对界面元素进行分组的最强视觉提示,但它可能会增加不必要的混乱。寻找机会使用其他分组方法,它们通常更微妙,可以帮助简化设计。

特别是使用空间是对相关元素进行分组的一种非常有效且简单的方法。您还可以组合分组方法来帮助更清晰地显示分组。

在我们的示例中,内容之间缺乏空间使设计看起来混乱且难以理解。增加间距有助于清晰地对内容进行分组,使其更有条理且更易于理解。
在这里插入图片描述

2.保持一致

UI 设计的一致性意味着相似的元素看起来和工作方式相似。无论是在您的产品中还是与其他成熟的产品相比,这都应该是正确的。这种可预测的功能提高了可用性并减少了错误,因为人们不需要不断学习事物的工作原理。

在我们的示例中,图标样式不一致,因为有些已填充,有些则未填充。这可能会让一些人感到困惑,因为填充的图标通常表明某个元素已被选中。使用 2pt 笔画粗细和圆角勾画所有图标可提高一致性,并为每个图标提供相似的视觉粗细。
在这里插入图片描述
文本标签也添加到图标中,以帮助确保人们能够理解它们的含义,尤其是那些使用屏幕阅读器(使用语音或盲文向看不到它的人描述界面的软件)的人。
在这里插入图片描述

3.确保外观相似的元素功能相似

如果元素看起来相似,人们就会期望它们以相似的方式工作。因此,请尽量确保对具有相同功能的元素使用一致的视觉处理。相反,尝试确保具有不同功能的元素看起来不同。

在我们的示例中,图标容器具有与“立即预订”按钮类似的视觉风格。这使得它们看起来具有互动性,尽管实际上并非如此。从图标中删除蓝色和按钮样式有助于避免它们被误认为是交互元素。
在这里插入图片描述

4.创建清晰的视觉层次

并非界面中的所有信息都具有相同的重要性。旨在通过使更重要的元素看起来更突出来按重要性顺序呈现信息。

清晰的重要性顺序或视觉层次结构可以帮助人们快速浏览信息并专注于感兴趣的领域。它还通过创造秩序感来提高美感。您可以使用大小、颜色、对比度、间距、位置和深度的变化来创建清晰的视觉层次结构。

这是一个没有清晰视觉层次结构的网站英雄横幅的示例,后面是一个按重要性顺序清晰呈现元素的横幅。
在这里插入图片描述
在这里插入图片描述
测试视觉层次是否清晰的一种快速简单的方法是使用斜视测试。只需眯起眼睛看看你的设计。或者,您可以远离屏幕或模糊您的设计。您仍然应该能够分辨出最重要的元素是什么,并认识到界面的用途。

让我们将斜视测试应用到我们的示例中。我们可以看到,有多个同样突出的元素在争夺注意力。与此同时,左下角的主要动作一点也不引人注目。
在这里插入图片描述
主要操作通常应该是界面上最突出的元素。给它一个高对比度的背景颜色和粗体字体有助于实现这一点。这也解决了低对比度按钮的可访问性问题,我们稍后会研究这个问题。
在这里插入图片描述
将斜视测试应用于更新的设计,主要动作显然是最突出的元素。
在这里插入图片描述
视觉层次现在更加清晰,但仍有改进的空间。例如,相对于其重要性级别,正文文本块仍然过于突出。我们很快就会学习一些快速排版指南,这将有助于纠正视觉层次结构。

5.删除不必要的样式

不必要的信息和视觉风格可能会分散注意力,并会增加认知负荷(使用界面所需的脑力)。避免不必要的线条、颜色、背景和动画,以创建更简单、更集中的界面。
在这里插入图片描述
在我们的示例中,图像周围的空白和边框增加了不必要的视觉复杂性。它们不需要传达信息或分组元素,因此我们可以安全地删除它们以简化设计。
在这里插入图片描述

6.有目的地使用颜色

谨慎且有目的地使用颜色。尽量避免纯粹为了装饰而使用颜色,因为它可能会造成混乱和分散注意力。从黑色和白色开始,并在传达意义的地方引入颜色。

一种简单而有效的方法是将品牌颜色应用于文本链接和按钮等交互元素。这有助于告诉人们什么是交互式的,什么是不可交互的。尽量避免在非交互元素上使用品牌颜色。

您不需要为所有交互元素添加颜色,因为有些元素已经具有表明它们是交互的视觉提示。例如,无论有或没有蓝色链接,以下示例中的卡片仍然具有交互性。
在这里插入图片描述在我们最初的示例中,蓝色标题可能看起来不错,但它使文本看起来具有交互性。为了避免混淆,我们从标题中删除了蓝色,因为它不具有交互性。

我们还从其他非交互元素(例如星级)中删除了蓝色。这使得查看什么是交互式的、什么不是交互式变得更加容易。
在这里插入图片描述

7.确保界面元素的对比度为 3:1

对比度是衡量两种颜色之间感知亮度差异的指标。它以 1:1 到 21:1 之间的比率表示。例如,黑色背景上的黑色文本具有最低的 1:1 对比度,而白色背景上的黑色文本具有最高的 21:1 对比度。有许多在线工具可以帮助您测量不同颜色之间的对比度。

为了帮助确保有视力障碍的人能够清楚地看到界面细节,目标是至少满足网页内容可访问性指南 (WCAG) 2.1 AA 级颜色对比度要求。这意味着用户界面元素(例如表单字段和按钮)需要至少具有 3:1 的对比度。

在我们的示例中,箭头图标对比度太低。向图标添加阴影并在图像的前三分之一处添加渐变叠加,可以为图标提供足够的 3:1 对比度,无论其所在的图像如何。
在这里插入图片描述
原始示例中的主按钮对比度也太低。我们之前在解决视觉层次结构时修复了它,但这里也值得一提。
在这里插入图片描述
低对比度按钮的风险在于视力不佳的人可能不会将其识别为按钮,因为他们看不到按钮形状。将按钮对比度提高到 3:1 以上可以使按钮易于使用,并且还有助于纠正视觉层次结构。

将箭头和按钮对比度增加到 3:1 以上的比例,得到以下设计。我们正在一点一点地实现这一目标,但仍有更多问题需要解决。
在这里插入图片描述

8.确保文本的对比度为 4.5:1

为了帮助确保视力障碍人士能够清晰阅读文本,需要满足以下 WCAG 2.1 AA 级对比度要求:

  • 小文本(18 像素及以下)需要的最低对比度为 4.5:1。
  • 大文本(超过 18 像素,粗体或超过 24 像素,常规粗细)需要至少 3:1 的对比度。

在我们的示例中,照片计数元素中的小文本对比度不足。我们通过增加灰色容器的不透明度并添加文本阴影来将对比度提高到 4.5:1 以上。
在这里插入图片描述
位置文本的对比度也太低。较细的字体使阅读变得更加困难。使用较深的灰色阴影有助于使文本更易于理解。我们将尽快对文本进行进一步更新以对其进行改进。
在这里插入图片描述

9.不要仅仅依靠颜色作为指标

色盲有多种不同类型,主要影响男性。通常,色盲的人很难区分红色和绿色,但有些人根本看不到任何颜色。

为了确保色盲人士可以访问界面,您不能仅依靠颜色来传达含义或区分视觉元素。您需要使用额外的视觉提示来区分界面元素。

在我们的示例中,“评论”文本使用蓝色来指示它是一个链接。如果删除颜色,链接文本看起来与其他文本相同,因此色盲者无法辨别它是链接。链接文本下划线可以清楚地将其与没有颜色的其他文本区分开来。
在这里插入图片描述

10.使用单一无衬线字体

字体是一组具有相似风格或美感的相关字体。Helvetica 是字体的一个示例。字体是字体的变体,例如粗细或大小。例如,Helvetica 粗体和 Helvetica 常规是 Helvetica 字体中的两种不同字体。

使用单一无衬线字体进行界面设计是最安全的,因为它们通常是最易读、中性和简单的。

在我们的示例中,标题使用详细的衬线字体,这有点难以阅读,并且可能会分散某些人的注意力。它的个性可能与此房产租赁应用程序中的某些照片不匹配。使用无衬线字体简化它可以帮助提高可用性和美观性。
在这里插入图片描述
在这里插入图片描述

11.使用小写字母较高的字体

寻找具有较高小写字母和较大字母间距的字体,因为它们通常在小尺寸下更清晰。字体中小写字母的高度称为 x 高度。
在这里插入图片描述
我们的示例使用 Gill Sans 字体,它的 x 高度相对较低。将字体更改为 x 高度较大的字体(例如 Lato)有助于提高可读性。
在这里插入图片描述
这是我们的示例在字体从 Gill Sans 更新为 Lato 后的样子。
在这里插入图片描述

12.限制大写字母的使用

除非你对别人大喊大叫,否则没有太多正当理由使用大写字母。声音很大而且难以阅读。

当你阅读时,你会看单词的形状,而不是看每个字母。形状可以帮助您更快地识别单词。大写单词都具有相同的矩形形状。这迫使您逐一阅读每个字母。
在这里插入图片描述
在我们的示例中,位置文本使用大写。将其更改为句子大小写,其中仅第一个单词和专有名词(人名、地名或事物的名称)大写,有助于提高可读性。
在这里插入图片描述
在这里插入图片描述

13.仅使用常规和粗体字体粗细

仅仅因为字体中有很多可用的字体粗细,并不意味着您需要在设计中使用所有它们。使用大量不同的字体粗细可能会增加界面的噪音和混乱。这也使得一致使用每种字体粗细变得更加困难。

仅使用常规和粗体字体粗细来保持您的设计系统简单明了。
在这里插入图片描述
快速使用技巧:

  • 对标题使用粗体字重以强调它们。
  • 对于其他较小的文本使用常规字体粗细。
  • 如果您决定使用非常细或粗的字体粗细,请为标题和较大的文本保留它们,因为它们在较小的尺寸下可能难以阅读。

在我们的示例中,位置文本使用较轻的字体粗细。尽管我们已将对比度提高到所需的 4.5:1 对比度以上,但细小的字符对于某些人来说仍然难以阅读。将字体粗细增加到常规有助于提高可读性并简化设计。
在这里插入图片描述在这里插入图片描述

14.避免纯黑色文本

对于 UI 设计,通常避免使用纯黑色是最安全的,因为它与白色的对比度非常高。这种高对比度会导致阅读文本时眼睛疲劳。

黑色的颜色亮度为 0%,白色的颜色亮度为 100%。颜色亮度的巨大差异使我们的眼睛更加努力地工作。最安全的做法是避免使用纯黑色和白色,而选择深灰色。

在我们的示例中,纯黑色用于多个元素。将其更改为深灰色有助于提高可读性。之前在查看视觉层次结构时,我们注意到属性描述文本过于突出。为了确保界面元素按重要性顺序呈现,我们对属性描述文本使用浅灰色以降低其显着性。
在这里插入图片描述

15.左对齐文本

英语的读法是从左到右,向下,呈 F 形。因此,最好保持文本左对齐以获得最佳可读性。对于长正文文本,最安全的做法是避免居中对齐或两端对齐文本。阅读起来比较困难,尤其是对于那些有认知障碍的人来说。

居中对齐适用于标题和短文本,因为它们可以快速阅读。然而,居中对齐会使较长的正文文本难以阅读,因为每行的起点不断变化。你的眼睛需要更加努力地找到每条线的起点。
在这里插入图片描述
在我们的示例中,属性描述文本居中对齐。左对齐文本可提高可读性,并且与上面的左对齐文本保持一致。
在这里插入图片描述

16.正文至少使用 1.5 倍的行高

行高是两行文本之间的垂直距离。行与行之间的空格有助于防止人们重新阅读同一行文本。它看起来和阅读起来都更舒适。

为了可访问性和可读性,特别是对于长正文文本,请确保行高至少为 1.5 (150%)。将行高保持在 1.5 到 2 之间通常效果很好。
在这里插入图片描述
在我们的示例中,行高仅为 1 (100%)。将其增加到 1.6 (160%) 有助于提高可读性。
在这里插入图片描述

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

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

相关文章

漫步者开放式耳机怎么样?南卡、漫步者开放式耳机哪个好?

现在开放式耳机的市场越来越混杂,我们作为消费者在挑选的时候,一定要找准需求点才能把踩坑几率降到最低。实在不会挑选的也不要紧,我最近入了2款目前市面最畅销的百元款开放式耳机:南卡OE CC和漫步者comfo fit,亲身上耳…

resnet 图像分类的项目

1. 项目文件 文件下载资源:resnet 图像分类的项目代码 本章利用reset34 作图像分类,包括计算训练集和测试集的loss、accuracy曲线,对训练好的网络在训练集测试集上求混淆矩阵 data 文件为训练集测试集,图像按照文件夹摆放inferenc…

55.MQ高级特性

目录 一、RabbitMQ部署指南。 1)单机部署。 1.1.下载镜像 1.2.安装MQ 2)安装DelayExchange插件。 2.1.下载插件 2.2.上传插件 2.3.安装插件 2.4.使用插件。 3)集群部署。 3.1.集群分类 3.2.获取cookie 3.3.准备集群配置 3.4.启…

MATLAB将动画演示以及将过程保存为gif动态图片

平时想要做一个动画图片来演示,本人一般有两种方法: 一种是截很多张图之后,将这些图片合成为一张gif动画; 另一种就是录屏再制作成gif,我一般是录下视频之后,使用QQ影音,里面的影音工具箱有一个…

2021年度大题:灰太狼的密码

分析:本题主要使用的是素数进行输出,然后难点是如何按照题目要求格式输出。 思路: 第一:我们可以先让素数存给一个一维数组,至于存多少个素数,是矩阵n*n个,控制数量用计数器count即可&#xf…

汽车电子 -- CAN文件格式ASC

Vector提供了两种记录数据格式的格式规范:BLF和ASC。 先讲讲ASC。 参看:图文详解CAN Log文件 - ASC文件格式 一、ASC文件格式 在Vector提供的 CAN_LOG_TRIGGER_ASC_Format.pdf 提取码:ltjv 文件中,规定了CANoe/CANalyzer ASC记…

<Linux>(极简关键、省时省力)《Linux操作系统原理分析之linux存储管理(3)》(19)

《Linux操作系统原理分析之linux存储管理(3)》(19) 6 Linux存储管理6.4 Linux 的分段和分页结构6.4.1Linux 的分段结构6.4.2 Linux 的三级分页结构6.4.3 内核页表和进程页表 6 Linux存储管理 6.4 Linux 的分段和分页结构 本节主…

微服务实战系列之Redis

前言 云淡天高,落木萧萧,一阵西北风掠过,似寒刀。冬天渐渐变得更名副其实了,“暖冬”的说法有点言过其实了。——碎碎念 微服务实战系列之Cache微服务实战系列之Nginx(技巧篇)微服务实战系列之Nginx微服务实…

多屏模式输入法可以正确切换屏幕展示原理剖析

背景 hi,粉丝朋友们: 近期有个学员问到了一个输入法相关问题。刚好梳理了一下输入法相关的在多屏模式的一个展示流程,这里做个记录,也相当于深入理解窗口相关的一篇干货blog。 如上面两幅图展示,输入法可以自由自在显…

谁登榜? 2023数据安全平台神兽企业

在数字经济的浪潮中,数据安全已成为企业发展的关键支撑。2023年8月,CSA大中华区启动数据安全平台神兽企业调研,得到了众多网络安全综合厂商、数据安全专业厂商、云服务提供商、用户单位的广泛关注和积极参与。 历时4个月,CSA大中…

Java 线程池到底是如何复用线程的

原理概述 其实 Java 线程池的实现原理很简单,说白了就是一个线程集合 workerSet 和一个阻塞队列 workQueue。 当用户向线程池提交一个任务时,线程池会先将任务放入 workQueue 中。workerSet 中的线程会不断的从 workQueue 中获取线程然后执行。当 work…

多人聊天Java

服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class Server{ public static ServerSocket server_socket; public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []ar…

性能调优入门

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一、性能定律和数理基础 1.三个定律法则 (1)帕累托法则 我它也被称为 80/20 法则、关键少数法则&#xff0c;或者八二法则。人们在生活中发现很多…

Ubuntur编译ROS报错:error PCL requires C++14 or above

ubuntu20.04 编译ROS包 报错&#xff1a; error&#xff1a; PCL requires C14 or above&#xff1a; 修改Cmakelists.txt文件&#xff1a; set&#xff08;CMAKE_CXX_STANDARD 14&#xff09; 再次编译成功.

用 Bytebase 做数据库 schema 迁移

数据库 schema 迁移指修改管理数据库结构的变更&#xff0c;包括为数据库添加视图或表、更改字段类型或定义新约束。Bytebase 提供了可视化 GUI 方便迁移数据库 schema&#xff0c;本教程将展示如何使用 Bytebase 为 schema 迁移配上 SQL 审核&#xff0c;自定义审批流&#xf…

改造python3中的http.server为简单的文件上传下载服务

改造 修改python3中的http.server.SimpleHTTPRequestHandler&#xff0c;实现简单的文件上传下载服务 simple_http_file_server.py&#xff1a; # !/usr/bin/env python3import datetime import email import html import http.server import io import mimetypes import os …

UDP协议实现群聊

服务端 package ydd;import java.io.*; import java.net.*; import java.util.ArrayList; public class A2{public static ServerSocket server_socket;public static ArrayList<Socket> socketListnew ArrayList<Socket>(); public static void main(String []a…

【C++】如何优雅地把二维数组初始化为0

2023年12月7日&#xff0c;周四上午 目录 为什么要初始化二维数组不优雅的初始化方式&#xff1a;使用两个for循环优雅的初始化方式一&#xff1a;使用初始化列表优雅的初始化方式二&#xff1a;使用memset函数 为什么要初始化二维数组 如果不初始化二维数组&#xff0c;那么…

点评项目——短信登陆模块

2023.12.6 短信登陆如果基于session来实现&#xff0c;会存在session共享问题&#xff1a;多台Tomcat不能共享session存储空间&#xff0c;这会导致当请求切换到不同服务器时出现数据丢失的问题。 早期的解决办法是让session提供一个数据拷贝的功能&#xff0c;即让各个Tomcat的…

【Python】流畅!一个非常好用的网络数据采集工具!

文章目录 前言一、注册二、初窥三 数据集四 自定义网站网络爬虫总结 前言 你是否曾为获取重要数据而感到困扰&#xff1f;是否因为数据封锁而无法获取所需信息&#xff1f;是否因为数据格式混乱而头疼&#xff1f;现在&#xff0c;所有这些问题都可以迎刃而解。让我为大家介绍…