菜单

核心组件

相关源文件

Ionic的核心组件是Ionic框架的基础构建块,提供了一套全面的可重用UI元素。这些组件是使用Stencil.js构建的符合标准的Web组件,使其独立于框架,同时为Angular、React和Vue提供专门的集成。本页概述了组件系统,并介绍了Ionic框架中可用的主要组件类别。

有关底层组件系统架构的信息,请参阅组件系统。有关框架集成详细信息,请参阅框架集成

组件架构

Ionic的核心组件是使用Stencil.js编译器构建的Web组件,它创建了跨所有现代浏览器工作的标准兼容自定义元素。

来源

组件实现模式

每个Ionic组件都遵循一种一致的实现模式,该模式利用了Stencil.js的装饰器和生命周期钩子。

来源

组件类别

Ionic的核心组件根据其功能和用途分为几个类别。

表单组件

表单组件处理用户输入和表单交互,为从用户那里收集数据提供了一致的界面。

组件描述主要功能
ion-input文本输入控件标签位置、辅助/错误文本、防抖、清除按钮
ion-select下拉列表选择各种界面(警报、弹出框、操作表、模态框)
ion-checkbox布尔值选择标签位置、不确定状态
ion-radio选项选择单选按钮组、自定义对齐
ion-toggle开/关切换自定义标签、触觉反馈
ion-range滑块控件单/双旋钮、引脚显示、刻度
ion-datetime日期/时间选择器日历视图、滚轮选择
ion-searchbar搜索输入防抖、清除按钮、取消按钮
ion-textarea多行文本输入自动增长、计数器

来源

导航组件提供了在应用程序的不同视图和部分之间移动的结构。

组件描述主要功能
ion-tabs基于标签的导航标签自定义、懒加载
ion-nav基于堆栈的导航视图过渡、滑动操作
ion-router基于URL的路由与框架路由集成
ion-menu侧边菜单导航各种类型(覆盖层、揭示、推送)
ion-split-pane响应式布局基于断点的可见性
ion-segment分段控件可滚动分段、分段按钮

来源

Overlay Components (覆盖组件)

覆盖层组件显示在主内容上方,向用户呈现额外信息或选项。

组件描述主要功能
ion-modal全屏或半屏覆盖层底部表格视图、断点
ion-popover上下文弹出窗口定位、箭头自定义
ion-alert系统警报对话框输入、多个按钮
ion-action-sheet操作菜单按钮选项、可取消
ion-loading加载指示器加载动画自定义、背景
ion-toast通知消息位置、按钮、持续时间

来源

UI 组件

UI组件提供用于显示内容和处理用户交互的视觉元素。

组件描述主要功能
ion-button按钮控件各种样式(实心、轮廓、透明)
ion-card内容容器头部、标题、内容区域
ion-list列表项容器头部、分隔线、滑动项
ion-item列表项详细箭头、线条、插槽
ion-badge状态指示器各种颜色、小文本显示
ion-chip紧凑型复杂实体可删除、图标、头像
ion-avatar圆形图像固定尺寸、一致的样式
ion-iconSVG图标大型图标库、自定义SVG

来源

布局组件

布局组件有助于构建应用程序的界面和组织内容。

组件描述主要功能
ion-gridFlexbox网格系统响应式断点
ion-row网格行对齐、分布
ion-col网格列大小、偏移、推/拉
ion-content可滚动容器全屏、滚动事件
ion-header固定顶部区域可折叠、淡入效果
ion-footer固定底部区域透明背景选项
ion-toolbar顶部/底部栏按钮插槽、标题居中
ion-title区域标题大标题支持、折叠
ion-accordion可折叠区域切换自定义、动画

来源

组件API结构

每个组件都公开了具有Props、Events、Methods、CSS Custom Properties和Shadow Parts的一致API结构。

通用API模式

来源

示例组件API:Input

ion-input组件演示了典型的API结构。

  • Propscolorplaceholdervaluedisabled等。
  • EventsionInputionChangeionFocusionBlur
  • MethodssetFocus()getInputElement()
  • CSS Variables--background--color--padding-top等。
  • Shadow Partscontainerlabelinputhelper-texterror-text等。
  • Slotslabelstartend

来源

框架集成

Ionic Core Components 旨在通过专门的集成包与多种框架协同工作。

这些框架适配器会将 Ionic 的 Web Components 转换成框架原生的组件。

框架集成包实现特性
Angular@ionic/angular指令、模块值访问器、表单集成
React@ionic/react组件包装器React Router 集成、Hooks
Vue@ionic/vueVue 组件代理Vue Router 集成、v-model 支持

来源

组件定制

Ionic 组件通过 CSS 变量高度可定制,为整个组件库提供了统一的主题方法。

常见定制点

  • 颜色主题:使用 color 属性配合 Ionic 的颜色系统。
  • CSS 变量:每个组件都暴露了特定的 CSS 变量。
  • 模式适配:组件响应 iosmd 模式。
  • 插槽:使用命名插槽进行内容放置。
  • Shadow Parts:对内部元素进行直接样式设置。

自定义输入的示例

来源

组件测试

Ionic Core Components 包含单元测试和手动测试,以确保功能和平台兼容性。

测试类型

  1. 单元测试:使用 Stencil 的测试工具测试组件方法、属性和渲染。
  2. 视觉测试:手动测试页面以验证视觉外观和交互。
  3. E2E 测试:组件交互的端到端测试。

示例测试文件

来源

总结

Ionic Core Components 提供了一套全面的 UI 元素,构成了 Ionic Framework 的基础。它们使用 Stencil.js 构建为 Web Components,提供了统一的 API、广泛的自定义选项以及适用于 Angular、React 和 Vue 的框架集成。组件分为几类,包括表单控件、导航元素、覆盖层、UI 组件和布局结构,为开发者提供了完整的工具集,用于构建在 iOS 和 Android 上都具有原生感觉的跨平台应用程序。