Material Design 中较优的表单设计方案及实现方式

什么是 Material Design?

Material Design 是由 Google 提出的一套设计语言,主要用于移动应用的设计。它的目的是为了在各个平台上,以一种层次清晰、流畅自然、物理感强的方式呈现用户界面。

Material Design 的特性包括:

  • 官方提供的调色板和字体,让设计人员能够快速选择颜色和字体,统一的配色方案也让应用更具整体感;
  • 通过呈现“虚拟纸张”的形式,使得用户体验更具现实感;
  • 通过合理使用大小、层次、颜色等视觉元素,生成合理、具有空间和层次感的界面。

Material Design 从元素级别(控件、布局)到全局层面都通用,可以在 Android、iOS、Web 等多个平台上使用。

为什么要使用 Material Design 的表单设计方案?

表单是用户输入数据最主要的交互方式之一,也是我们在前端开发中常常会用到的一类组件。如何设计一个好的表单,不仅能够获得用户的信任,更能够有效地提高用户的体验,这就涉及到表单设计的各个方面内容。

Material Design 的表单设计方案特点有:

  • 友好的交互方式:Material Design 表单设计方案考虑了用户的习惯和心理模型,提供了友好直观的交互方式。
  • 风格简洁、直观:Material Design 表单设计方案一直强调界面的简洁性、轻松感。设计风格以简明、轻盈、舒适为主要特点。
  • 对细节设计的重视:Material Design 以细节设计着称,包括控件的动画效果、颜色和图标摆放等等,都十分精致细腻。

Material Design 表单设计的核心要素

1. 输入控件与提示场景

Material Design 表单输入控件分为三种:

  • 文字输入框
  • 开关
  • 选择器

在提示场景中,开发人员可以使用以下提示文案:

  • 占位符(placeholder):在输入框中显示帮助文本,一般与输入框的标签一致
  • 标签(label):在输入框上显示标签,用于指定此输入框显示的内容
  • 帮助文本(helper text):输入框右下角的提示文本

2. 状态标志

Material Design 中的状态标志有以下几种:

  • 必填标志:当输入框必须输入时,需在标签中显式标明
  • 动态提示:可以实时反馈用户输入状态,如密码强度等
  • 错误提示:用户输入错误时,应在输入框外部给出提示

3. 色彩设计

Material Design 表单采用基于色彩的输入法,通过统一的配色方案来确保整个应用的视觉风格统一。

在颜色方面,常常会使用 主色、次要色、强调色 等,需要将这些颜色设置为全局变量,方便后期的调配和管理。

4. 布局设计

在表单的布局设计中,Material Design 的主要特点是:超过两个输入框后,自动排列到下一行,保持使用上的简化和整洁。

实现 Material Design 的表单设计方案

下面通过代码演示如何实现 Material Design 下表单设计的方案。

1. 文本输入框

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

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

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

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

2. 开关

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

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

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

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

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

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

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

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

3. 选择器

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

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

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

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

4. 表单布局

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

Material Design 表单设计的核心在于简单明了和层次分明,通过布局和元素配色等方面来确保整个表单的可读性。表单是前端开发中最经常使用的组件之一,在实现时,应考虑 Material Design 的核心设计,将代码实现得优雅和精致。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64e05b67f6b2d6eab3b6f738


猜你喜欢

  • Tailwind 中的动画设计技巧

    动画是前端页面设计中重要的一环,通过不同的动效可以让页面更加生动,吸引用户的注意力,增强用户体验感。Tailwind 是一个流行的前端 CSS 框架,提供了一些强大的动画工具,可以帮助开发者快速构建出...

    1 年前
  • 安装 Docker 的正确姿势

    Docker 是一种流行的容器化技术,它可以让开发者更轻松地构建、打包和运行应用程序。掌握 Docker 技能对于前端开发者来说非常重要,因为它可以帮助你在开发和测试中更有效地隔离环境、快速部署和扩展...

    1 年前
  • Enzyme+Jest 单元测试实践

    在前端开发中,单元测试是保证代码质量和可维护性的重要手段之一。在 React 生态中,Enzyme 和 Jest 是两个常用的单元测试工具,本文将结合实例介绍它们的使用方法和实践经验。

    1 年前
  • ES6 中的 ArrayBuffer 对象在实际开发中的应用场景

    ES6 增加了一些新的特性和对象,其中 ArrayBuffer 对象是非常有用的对象之一。它是在二进制数据交换方面的一项重要的新功能。在本文中,我们将了解 ArrayBuffer 对象在实际开发中的应...

    1 年前
  • JavaScript 中的新变化:解析 ES8

    最近几年,JavaScript 的发展越来越快,随着 ES6 和 ES7 的发布,JavaScript 已经成为了一种更加强大和灵活的编程语言。 ES8 是其中最新的一种 ECMAScript 版本,...

    1 年前
  • Mongoose 之使用 update 方法进行数据更新

    在使用 Mongoose 进行数据操作时,数据的更新是一个非常常见的操作。Mongoose 提供了多种更新方法,其中 update 方法是最常用的一种。本文将详细介绍 Mongoose 的 updat...

    1 年前
  • Angular 中的数组类型判断方法

    在 Angular 中,我们经常会使用到数组类型的数据。但是在处理数据时,我们常常需要对数据进行类型判断,特别是在对数组数据进行处理时,这个问题就更加突显了。在本文中,我们将介绍在 Angular 中...

    1 年前
  • 如何在 Jest 中测试 React Native 应用程序

    在 React Native 开发中,测试是非常重要的一环。Jest 是一个在 React Native 官方推荐的测试框架,它具有速度快,易于配置和编写测试用例等优点。

    1 年前
  • ES7 中的 String.prototype.trimStart/trimEnd 方法在字符串处理中的应用

    ES7 中的 String.prototype.trimStart/trimEnd 方法在字符串处理中的应用 在前端开发中,字符串处理是一个十分常见的操作。在 ES7 中,新增加了 String.pr...

    1 年前
  • 解决 Fastify 应用程序使用 Mongoose 调用 Async 函数时出现的错误

    在 Fastify 应用程序中使用 Mongoose 插件可能会遇到 Async 函数调用时出现的错误。本文将介绍该错误的出现原因,并提供解决方案。 错误出现原因 使用 Mongoose 插件时,我们...

    1 年前
  • Serverless 架构下的图像存储方案

    在 Serverless 架构下,图像存储是一个需要注意的问题,因为传统的文件服务器(如 Amazon S3)往往需要大量的管理工作和费用支出。为了解决这个问题,我们可以采用 Serverless 架...

    1 年前
  • CSS Reset 技术剖析:如何实现样式定义与清除

    什么是 CSS Reset CSS Reset 是一种前端技术,用于清除浏览器默认样式并统一样式定义。它的目的是让不同浏览器在渲染网页时表现更一致,避免布局错乱等问题。

    1 年前
  • Angular 中的 RxJS:从响应式思想到实际应用

    前言 RxJS 是一个开源的响应式编程库,可以让开发者使用可观测序列和处理异步数据流,从而解决异步编程的复杂性。它也是 Angular 框架的一部分,被广泛应用在 Angular 的开发中。

    1 年前
  • PWA 遇坑记(一)

    前言 PWA (Progressive Web Application) 是一种新型的 web 应用模式,可以实现像原生应用一样的体验。前端开发人员可以利用 service worker 等技术来使网...

    1 年前
  • SASS 中使用!important 指令的注意事项

    在使用 CSS 样式表时,经常会用到 !important 指令来强制某个样式的优先级别。而在 SASS 中也能使用这个指令,但需要注意的是,应该尽量避免在 SASS 中大量使用 !important...

    1 年前
  • Express.js 中使用 Multer 实现文件上传的最佳实践

    在 Web 开发中,文件上传是一个非常重要的功能需求。而在 Node.js 的 Web 开发中,要实现文件上传需要使用 Multer 中间件来处理文件上传的请求。本文将详细介绍在 Express.js...

    1 年前
  • 无障碍访问 | 如何利用无障碍模式提高用户访问体验

    随着互联网的普及,互联网服务已经成为人们生活中不可或缺的一部分。但是,许多网站和应用程序并不考虑到残障人群的需求,使得这部分用户无法顺畅地使用这些服务。为了增强Web服务的可访问性,无障碍访问已经成为...

    1 年前
  • ECMAScript 2021 中的 JavaScript Modules 封装与打包

    随着前端技术的不断发展,我们在开发中经常需要使用到许多第三方模块。但是在使用第三方模块时,我们也要解决模块的封装和打包问题。本文介绍如何使用 JavaScript Modules 封装和打包 ECMA...

    1 年前
  • ESLint 报错:'await' is only allowed within an async function

    在开发前端应用过程中,我们可能会用到 ES6 的一些特性,如 async/await。它们可以让代码更加简洁易懂,但在使用时需要注意一些细节,例如在不带 async 关键字的普通函数中不能使用 awa...

    1 年前
  • PM2 如何配置进程的资源分配

    在前端开发中,我们经常使用 PM2 进行进程管理和监控。但是,对于一些大型应用,单纯的启动和监控已经不足以满足我们的需求,我们还需要对进程的资源进行分配来保证应用的性能和稳定性。

    1 年前

相关推荐

    暂无文章