看到这个词是因为模态对话框。现在,我知道了模态/非模态对话框的意思,但不知道模态本身是什么意思,上百度查了下,说是什么固有振动频率,这和模态对话框的模态是一个意思吗?
说白了,我就是不明白模态是什么意思,我的意思是,为什么不叫狗态对话框、固态对话框.etc?
看到这个词是因为模态对话框。现在,我知道了模态/非模态对话框的意思,但不知道模态本身是什么意思,上百度查了下,说是什么固有振动频率,这和模态对话框的模态是一个意思吗?
说白了,我就是不明白模态是什么意思,我的意思是,为什么不叫狗态对话框、固态对话框.etc?
Modal
这个词来自于Mode
,是后者的形容词形式,意思是“模态的、模式的”。
在用户接口(UI)设计领域,Mode
用来表示那些具有2种或多种不同状态的事物。当系统在这些状态之间转换时,在用户看来,操作没有什么不同,但操作所代表的意义却有很大差别。换句话说,Modes
这种设计方法简化了UI的接口,使得系统对用户更加友好。
举例来说,Mode
的最简单也是最常见的一个例子莫过于大写锁定键Caps Lock
了:当按下这个键之后,a-z
26个字母键的意义变成了大写字母A-Z
——虽然用户按的还是同样的26个键,但意义已经不同了(同理,Num Lock
也是如此)。
另一个著名的例子是vi
以及它的3种模式——命令模式、插入模式、末行模式。对照大写锁定键的例子就能很容易地知道这些模式在UI设计中的意义是什么。
现在你知道了,模式具有以下特性:(1) 系统或程序具有不同的模式 (2) 系统可以在这些模式之间转换 (3) 系统不能同时处于2种模式
将这个概念扩展到另一种用户接口,即图形用户接口
(GUI)上之后,其本质仍然没变:
窗口是GUI程序中与用户交互的接口(用户在窗口中输入,并从窗口上得到程序的输出)
窗口弹出模态对话框,切换到另一种模式(这里不限于对话框,实际上可以是任何模态窗口)
用户在该对话框上与程序交互,原模式(原窗口)暂时失效
用户输入完毕,对话框关闭,程序切换回原模式
模态这个词用的很广吧,固有震动频率这个应该是物理方面的。在编程这块我觉得应该是表示“固定/固有模式”的意思,模态对话框会强制打断用户,并要求优先与其发生交互,之后才能继续操作。
楼上的大佬们,解释的很清楚,很赞!
但我心里还是不免在想:就叫“弹出框”不好吗?“阻止框”、“阻塞框”、“阻断框”、“中断框”、“提示框”、“覆盖框”、“半覆盖框”、“特别状态框”不行吗?不行把所有的“框”改成“窗”、“窗口”在看看呢,这么多中文词挑不出来一个描述这种常见的场景吗?为啥非要用“模态框”这种见名不知义的翻译啊!!!
请看个人博客:「什么是模态框」
对于访问不了博客(使用gitpages+hexo,所以有时候可能需要翻墙访问)的朋友,下面是针对本问题修改的精简版答案,如果想要理解文章的全部思路,建议还是翻墙看原博客:
什么是「模态」?
与「对话框」,「面板」这些比较直白的词汇不同,「模态」这个词处处透漏着一种玄乎的感觉,很难直观的感受这个词的创造者想要通过这个词表达什么。
模态,英文词汇叫modal
字典解释:模式的,情态的,形式的。
再看看使用这个词汇组合出来的一些让人莫名其妙的专业词汇。
模态分析
模态矩阵
模态逻辑
模态框
完全一头雾水,而且看情况似乎是一个物理词汇引申到计算机领域的。我们可以猜想一下这个词汇的引入情景,或者说从英文词汇modal翻译成汉语的情形:
想要表达一种特定状态下的内容,那该怎么翻译比较好呢?我们知道「模型」这个词有「事物的特定抽象模式」的含义,而「状态」一词,可以表示「事物在某种情形下的表现」。这两者结合一下,「模态」这个词便呼之欲出了。它指的是某种特定的模式状态。(当然,实际的翻译和词汇创造肯定远远比上面描述的情况复杂,但核心思想是一致的,也即:如何信达雅的表示出一个事物的概念。)
这个时候再来看看上面那些专业词汇,就比较容易理解了,也就是说他们都有一种「研究某些特定状态下的事物」的意思。
什么是「模态框」
在上面的词汇基础上理解模态框的概念,它指的应当是「某种特定状态下的窗体」。
但什么是「特定状态下」?仍然有些难以理解。这是因为我们缺了「模态框」使用的语境,在相应的语境下才能让我们的理解完整。
「模态框」这个词是软件设计领域的词汇,可以先看看普通的软件使用流程:在使用软件的时候,我们一般都会按照自己的思路以及软件内在的逻辑一步步操作,比如我们在使用一个购物系统,我们会按照我们对这个软件的固有理解来执行自己脑中的流程:选购商品,加入购物车,下单付款等等。这些流程可以说是我们使用软件时的一种「正常状态」。
「模态框」这种『特定状态下的窗体』正是相对于上面叙述的这种『正常状态』来说的。模态框是处于一种特定状态下的窗体,它会把我们从正常状态中中断出来,将关注点放在这个特定状态的处理上。可以看看模态框的实际表现:当模态框出现的时候,它会屏蔽掉所有其他操作,用户可关注的范围只限于当前的模态框内部,除非你特意去关闭这个模态框,结束这种中断,回到原先正常的流程中去。
上面所描述的就是模态框的核心思想。其实准确地说,模态框是一个UI设计领域的概念,维基百科的定义是:
当然模态框这种设计理念,暗含着一种强制性的思路。它强制用户的关注点从正常思维流中抽出来,来关注模态框内的内容,有些强制思考的意味。这种设计理念一般用在比较危险的操作的提示上,比如要删除某些资源等。其实对模态框的批评多种多样,主要是批评这种强制性的设计思路,以及它是否应被更好的方案代替等等,更有些观点宣称模态框是「邪恶的」。关于这些批评,可以参考下面一些资料:
Why are modal dialog boxes evil?
Never Use a Warning When you Mean Undo
「非模态」
有模态的概念,当然也有非模态的概念,关于非模态的概念,想必根据上面「模态」的定义,你应该有一些猜测了,本答案就不多说了。