菜单

模态框和背景遮罩组件

相关源文件

目的与范围

本文档描述了 Semantic UI 中的模态框(Modal)和遮罩(Dimmer)组件及其相互关系。模态框是出现在主内容上方的对话框窗口,而遮罩则在它们后面创建了一个变暗的覆盖层。两者结合起来,能够聚焦特定内容,并在用户关闭它们之前阻止与下方页面的交互。

本文档涵盖了这两个密切相关的组件的架构、功能、配置选项和交互模式。有关这些组件使用的过渡效果的信息,请参阅过渡组件

组件架构概述

Semantic UI 中的模态框和遮罩组件协同工作,但也可以独立运行。它们的架构遵循 Semantic UI 框架内的一致模式。

来源

初始化和交互流程

当模态框显示时,它会创建或使用现有的遮罩,并与过渡组件协调动画序列。

来源

模态框组件($.fn.modal())提供了一个灵活的对话系统,能够将用户的注意力集中在特定内容上,同时阻止与页面其他元素的交互。

DOM 结构

来源

重要设置

设置默认描述
transition'scale'显示/隐藏动画效果
duration500动画持续时间(毫秒)
dimmerSettings{}传递给遮罩的设置
closabletrue点击遮罩是否关闭模态框
autofocustrue显示时是否聚焦输入框
keyboardShortcutstrue是否使用 Escape 键关闭模态框
allowMultiplefalse是否允许多个模态框同时显示
detachabletrue模态框是否应分离并移动到遮罩
centeredtrue模态框是否居中显示
blurringfalse遮罩是否应模糊背景
invertedfalse遮罩是否应反转(例如,使用浅色背景)

来源

重要方法

方法描述
show()显示模态框
hide()隐藏模态框
toggle()切换模态框可见性
refresh()刷新模态框尺寸计算
showDimmer()显示遮罩
hideDimmer()隐藏遮罩
hideAll()隐藏所有可见的模态框
hideOthers()隐藏其他可见的模态框

来源

事件和回调

回调描述
onShow模态框开始显示时调用
onVisible模态框完全可见且动画完成时调用
onHide模态框开始隐藏时调用
onHidden模态框完全隐藏且动画完成时调用
onApprove点击“批准”按钮时调用
onDeny点击“拒绝”按钮时调用

来源

遮罩组件

遮罩组件($.fn.dimmer())提供了一个变暗的覆盖层,可以集中注意力在特定元素上或创建视觉层次。

DOM 结构

来源

重要设置

设置默认描述
opacity'auto' (0.85)遮罩的透明度
variation''例如“inverted”或“aligned”等变体
dimmerNamenull命名遮罩,用于选择特定的遮罩
closabletrue点击遮罩是否将其隐藏
useCSStrue是否使用 CSS 动画
transition'fade'使用的过渡效果
duration{ show: 500, hide: 500 }显示/隐藏动画的持续时间
onfalse触发遮罩显示的事件('hover', 'click')

来源

重要方法

方法描述
show(callback)显示遮罩
hide(callback)隐藏遮罩
toggle()切换遮罩可见性
set.variation(variation)设置遮罩的变体
set.active()设置遮罩为活动状态
set.disabled()禁用遮罩
set.enabled()启用遮罩

来源

模态框与遮罩的集成

模态框组件通过几个关键机制与遮罩组件集成:

  1. 初始化:初始化模态框时,它会创建或查找一个遮罩元素。
  2. 显示/隐藏协调:模态框与遮罩协调其自身的显示和隐藏。
  3. 设置传递:模态框通过 dimmerSettings 将设置传递给遮罩。
  4. 事件处理:模态框处理遮罩的关闭事件。

遮罩创建

初始化时,如果不存在遮罩,模态框会创建一个。

来源

模态框在其生命周期中会经历各种状态:

状态管理描述
loading初始加载状态,执行尺寸计算
active模态框可见
animating模态框正在显示或隐藏过程中
scrolling模态框内容可滚动(当高于视口时)
legacy使用旧版定位(兼容旧浏览器)
dimmed背景已变暗

来源

响应式行为

模态框会根据屏幕尺寸和内容自动调整其尺寸和位置。

  1. 移动端:全宽度显示,边距和内边距已调整。
  2. 平板端:固定宽度,居中显示。
  3. 桌面端:固定宽度,居中显示(比平板端更宽)。
  4. 大屏幕/宽屏:固定宽度更宽。

模态框会根据内容高度相对于视口的高度,在滚动模式和适配模式之间自动切换。

来源

性能考量

最佳性能的模态框使用建议

  1. 仅初始化一次,重复使用:只需初始化模态框一次,然后重复使用
  2. 避免动态加载内容:如果可能,将内容最初就包含在DOM中
  3. 谨慎使用过渡动画:对于频繁更新的模态框,考虑设置 transition: false
  4. 多个模态框:当使用多个模态框时,设置 allowMultiple: true 以防止冲突
  5. 图片内容:对于包含图片的模态框,考虑预加载以获得更流畅的过渡效果

来源

浏览器支持和回退

模态框(Modal)和遮罩层(Dimmer)组件包含了对不支持CSS过渡效果浏览器的回退方案

  1. 特性检测:检测对过渡效果的支持情况
  2. 遗留模式:对于旧版浏览器,使用定位(positioning)代替变换(transforms)
  3. JavaScript动画:当CSS过渡效果不支持时,回退到使用jQuery动画

来源