模态(modal)是什么意思?

看到这个词是因为模态对话框。现在,我知道了模态/非模态对话框的意思,但不知道模态本身是什么意思,上百度查了下,说是什么固有振动频率,这和模态对话框的模态是一个意思吗?
说白了,我就是不明白模态是什么意思,我的意思是,为什么不叫狗态对话框、固态对话框.etc?

阅读 26.5k
5 个回答

请看个人博客:「什么是模态框」

对于访问不了博客(使用gitpages+hexo,所以有时候可能需要翻墙访问)的朋友,下面是针对本问题修改的精简版答案,如果想要理解文章的全部思路,建议还是翻墙看原博客:

什么是「模态」?

与「对话框」,「面板」这些比较直白的词汇不同,「模态」这个词处处透漏着一种玄乎的感觉,很难直观的感受这个词的创造者想要通过这个词表达什么。

模态,英文词汇叫modal

字典解释:模式的,情态的,形式的。

再看看使用这个词汇组合出来的一些让人莫名其妙的专业词汇。

  • 模态分析

  • 模态矩阵

  • 模态逻辑

  • 模态框

完全一头雾水,而且看情况似乎是一个物理词汇引申到计算机领域的。我们可以猜想一下这个词汇的引入情景,或者说从英文词汇modal翻译成汉语的情形:

想要表达一种特定状态下的内容,那该怎么翻译比较好呢?我们知道「模型」这个词有「事物的特定抽象模式」的含义,而「状态」一词,可以表示「事物在某种情形下的表现」。这两者结合一下,「模态」这个词便呼之欲出了。它指的是某种特定的模式状态。(当然,实际的翻译和词汇创造肯定远远比上面描述的情况复杂,但核心思想是一致的,也即:如何信达雅的表示出一个事物的概念。)

这个时候再来看看上面那些专业词汇,就比较容易理解了,也就是说他们都有一种「研究某些特定状态下的事物」的意思。

什么是「模态框」

在上面的词汇基础上理解模态框的概念,它指的应当是「某种特定状态下的窗体」。

但什么是「特定状态下」?仍然有些难以理解。这是因为我们缺了「模态框」使用的语境,在相应的语境下才能让我们的理解完整。

「模态框」这个词是软件设计领域的词汇,可以先看看普通的软件使用流程:在使用软件的时候,我们一般都会按照自己的思路以及软件内在的逻辑一步步操作,比如我们在使用一个购物系统,我们会按照我们对这个软件的固有理解来执行自己脑中的流程:选购商品,加入购物车,下单付款等等。这些流程可以说是我们使用软件时的一种「正常状态」

「模态框」这种『特定状态下的窗体』正是相对于上面叙述的这种『正常状态』来说的。模态框是处于一种特定状态下的窗体,它会把我们从正常状态中中断出来,将关注点放在这个特定状态的处理上。可以看看模态框的实际表现:当模态框出现的时候,它会屏蔽掉所有其他操作,用户可关注的范围只限于当前的模态框内部,除非你特意去关闭这个模态框,结束这种中断,回到原先正常的流程中去。

上面所描述的就是模态框的核心思想。其实准确地说,模态框是一个UI设计领域的概念,维基百科的定义是:

model window

In user interface design, a modal window is a graphical control element subordinate to an application's main window which creates a mode where the main window can't be used. The modal window is a child window that requires users to interact with it before it can return to operating the parent application, thus preventing the workflow on the application main window.

在 UI 设计中,模态窗口是附属于主窗口的图形控制元素,它创建了一种状态模式,在这种状态模式下,主窗口无法被直接访问。当模态框出现之后,如果用户想要再回到主窗口操作,就必须先与模态框自身进行交互,也就是通过这样的形式中断了应用程序主窗口的正常工作流。

Modal windows are commonly used in GUI systems to command user awareness and to display emergency states, although they have been argued to be ineffective for that use. Modal windows are prone to produce mode errors.

在GUI系统中,模态窗口通常用于提醒用户以及展示一些危险的操作状态,尽管有争论说这种提醒方式是无效的,因为模态框会倾向于让用户产生固定模式错误。

当然模态框这种设计理念,暗含着一种强制性的思路。它强制用户的关注点从正常思维流中抽出来,来关注模态框内的内容,有些强制思考的意味。这种设计理念一般用在比较危险的操作的提示上,比如要删除某些资源等。其实对模态框的批评多种多样,主要是批评这种强制性的设计思路,以及它是否应被更好的方案代替等等,更有些观点宣称模态框是「邪恶的」。关于这些批评,可以参考下面一些资料:

「非模态」

有模态的概念,当然也有非模态的概念,关于非模态的概念,想必根据上面「模态」的定义,你应该有一些猜测了,本答案就不多说了。

Modal这个词来自于Mode,是后者的形容词形式,意思是“模态的、模式的”。

在用户接口(UI)设计领域,Mode用来表示那些具有2种或多种不同状态的事物。当系统在这些状态之间转换时,在用户看来,操作没有什么不同,但操作所代表的意义却有很大差别。换句话说,Modes这种设计方法简化了UI的接口,使得系统对用户更加友好。

举例来说,Mode的最简单也是最常见的一个例子莫过于大写锁定键Caps Lock了:当按下这个键之后,a-z26个字母键的意义变成了大写字母A-Z——虽然用户按的还是同样的26个键,但意义已经不同了(同理,Num Lock也是如此)。

另一个著名的例子是vi以及它的3种模式——命令模式、插入模式、末行模式。对照大写锁定键的例子就能很容易地知道这些模式在UI设计中的意义是什么。

现在你知道了,模式具有以下特性:(1) 系统或程序具有不同的模式 (2) 系统可以在这些模式之间转换 (3) 系统不能同时处于2种模式

将这个概念扩展到另一种用户接口,即图形用户接口(GUI)上之后,其本质仍然没变:

  1. 窗口是GUI程序中与用户交互的接口(用户在窗口中输入,并从窗口上得到程序的输出)

  2. 窗口弹出模态对话框,切换到另一种模式(这里不限于对话框,实际上可以是任何模态窗口)

  3. 用户在该对话框上与程序交互,原模式(原窗口)暂时失效

  4. 用户输入完毕,对话框关闭,程序切换回原模式

模态这个词用的很广吧,固有震动频率这个应该是物理方面的。在编程这块我觉得应该是表示“固定/固有模式”的意思,模态对话框会强制打断用户,并要求优先与其发生交互,之后才能继续操作。

新手上路,请多包涵

楼上的大佬们,解释的很清楚,很赞!
但我心里还是不免在想:就叫“弹出框”不好吗?“阻止框”、“阻塞框”、“阻断框”、“中断框”、“提示框”、“覆盖框”、“半覆盖框”、“特别状态框”不行吗?不行把所有的“框”改成“窗”、“窗口”在看看呢,这么多中文词挑不出来一个描述这种常见的场景吗?为啥非要用“模态框”这种见名不知义的翻译啊!!!

新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏