Ionic Framework 入门教程:安装配置与布局详解

Viewed 0

Ionic Framework 学习(一)

安装

首先,确保已安装 Node.js。接着,在新建文件夹中打开命令行,执行以下命令全局安装 Ionic:

npm install -g ionic

安装完成后,使用以下命令创建一个新应用并运行:

ionic start myApp tabs
cd myApp
ionic serve

Packages & CDN

集成 Angular

要集成 Angular,运行:

npm install @ionic/angular@latest --save

使用 CDN

在 HTML 文件的 <head> 标签内添加以下代码,以通过 CDN 使用 Ionic:

<script src="https://unpkg.com/@ionic/core@latest/dist/ionic.js"></script>
<link href="https://unpkg.com/@ionic/core@latest/css/ionic.bundle.css" rel="stylesheet">

使用 Ionicons

在页面末尾附近、</body> 标签之前添加以下脚本:

<script src="https://unpkg.com/ionicons@latest/dist/ionicons.js"></script>

环境配置

检查 Node.js、npm 和 Git 的版本以确保环境正确配置。运行以下命令:

node --version
npm --version
git --version

iOS 设置

开发 iOS 应用需要 Xcode IDE,可从 App Store 免费下载。此外,安装以下实用工具以部署到模拟器和设备:

npm install -g ios-sim
npm install -g ios-deploy

Android 设置

Android 应用使用 Java 编译,并依赖 Gradle 构建工具。安装 Android Studio 并完成 SDK 设置。在 Android Studio 中,进入 SDK Components Setup 屏幕安装 SDK。然后,通过 Tools » AVD Manager 创建 Android 虚拟设备(AVD),选择合适的设备定义和系统映像。

Building 构建

创建项目

使用 ionic start 命令创建项目,其中 myApp 是项目名,tabs 是启动器模板。其他模板包括 sidemenublank

ionic start myApp tabs

查看可用模板:

ionic start --list

项目结构

项目生成后,结构包括配置文件、源代码目录等。使用 ionic generate 命令生成新功能,如页面。如果遇到 "Could not find an NgModule" 错误,可进入 src/app 目录下操作,或使用 --skip-import 选项跳过 NgModule 导入。

Layout 布局

结构体

Ionic 提供多种布局方式,包括页眉/页脚、标签、菜单和拆分窗格。以下是一些示例代码:

页眉和页脚布局

页眉布局示例:

<ion-app>
  <ion-header>
    <ion-toolbar>
      <ion-title>Header</ion-title>
    </ion-toolbar>
  </ion-header>
  <ion-content padding>
    <h1>Main Content</h1>
  </ion-content>
</ion-app>

页脚布局示例:

<ion-app>
  <ion-content padding>
    <h1>Main Content</h1>
  </ion-content>
  <ion-footer>
    <ion-toolbar>
      <ion-title>Footer</ion-title>
    </ion-toolbar>
  </ion-footer>
</ion-app>

标签布局

标签布局允许在底部导航:

<ion-app>
  <ion-tabs>
    <ion-tab tab="home">
      <h1>Home Content</h1>
    </ion-tab>
    <ion-tab tab="settings">
      <h1>Settings Content</h1>
    </ion-tab>
    <ion-tab-bar slot="bottom">
      <ion-tab-button tab="home">
        <ion-label>Home</ion-label>
        <ion-icon name="home"></ion-icon>
      </ion-tab-button>
      <ion-tab-button tab="settings">
        <ion-label>Settings</ion-label>
        <ion-icon name="settings"></ion-icon>
      </ion-tab-button>
    </ion-tab-bar>
  </ion-tabs>
</ion-app>

菜单布局

菜单布局提供侧边导航:

<ion-app>
  <ion-menu>
    <ion-header>
      <ion-toolbar color="primary">
        <ion-title>Menu</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content>
      <ion-list>
        <ion-list-header>Navigate</ion-list-header>
        <ion-menu-toggle auto-hide="false">
          <ion-item button>
            <ion-icon slot="start" name='home'></ion-icon>
            <ion-label>Home</ion-label>
          </ion-item>
        </ion-menu-toggle>
      </ion-list>
    </ion-content>
  </ion-menu>
  <ion-page class="ion-page" main>
    <ion-header>
      <ion-toolbar>
        <ion-buttons slot="start">
          <ion-menu-toggle>
            <ion-button>
              <ion-icon slot="icon-only" name="menu"></ion-icon>
            </ion-button>
          </ion-menu-toggle>
        </ion-buttons>
        <ion-title>Header</ion-title>
      </ion-toolbar>
    </ion-header>
    <ion-content padding>
      <h1>Main Content</h1>
      <p>Click the icon in the top left to toggle the menu.</p>
    </ion-content>
  </ion-page>
  <ion-menu-controller></ion-menu-controller>
</ion-app>

拆分窗格布局

拆分窗格在较大屏幕上显示菜单和内容:

<ion-app>
  <ion-split-pane when="sm">
    <ion-menu>
      <!-- 菜单内容同上 -->
    </ion-menu>
    <ion-page class="ion-page" main>
      <!-- 页面内容同上 -->
    </ion-page>
  </ion-split-pane>
</ion-app>

响应式网格

网格默认占用100%宽度。使用 fixed 属性根据屏幕大小设置宽度,具体断点包括 XS、SM、MD、LG、XL,对应不同宽度。网格属性如 no-padding 可移除填充,fixed 设置最大宽度。默认断点定义列大小、偏移、推送和拉取前缀。

CSS 实用工具

Ionic 提供丰富的 CSS 类用于文本对齐、转换、浮动、显示和间距。例如:

  • 文本对齐:.ion-text-left.ion-text-center 等。
  • 文本转换:.ion-text-uppercase.ion-text-lowercase 等。
  • 浮动元素:.ion-float-left.ion-float-right 等。
  • 显示元素:.ion-hide 用于隐藏。
  • 填充和外边距:类如 .ion-padding.ion-margin 及其变体,可控制内边距和外边距。

响应式类允许在不同屏幕尺寸下应用这些样式,例如 .ion-text-sm-center 在 SM 断点居中对齐。

CSS 变量

全局变量

src/theme/variables.scss 中设置全局变量,如背景颜色和字体:

:root {
  --ion-background-color: #ff3700;
  --ion-font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", "Roboto", sans-serif;
}
.md {
  --ion-text-color: #222;
}

组件变量

为特定组件设置 CSS 变量,例如:

ion-button {
  --color: #222;
}
.fancy-button {
  --background: #00ff00;
}

通过 JavaScript 设置和获取变量

使用 JavaScript 动态设置变量:

const el = document.querySelector('.fancy-button');
el.style.setProperty('--background', '#36454f');

获取变量值:

const color = el.style.getPropertyValue('--charcoal');

在 CSS 中引用变量:

.fancy-button {
  --background: var(--charcoal, #36454f);
}

颜色生成

颜色属性

Ionic 提供预定义颜色,如 primarysecondarysuccess 等,用于按钮等组件:

<ion-button>Default</ion-button>
<ion-button color="primary">Primary</ion-button>
<ion-button color="secondary">Secondary</ion-button>
<ion-button color="tertiary">Tertiary</ion-button>
<ion-button color="success">Success</ion-button>
<ion-button color="warning">Warning</ion-button>
<ion-button color="danger">Danger</ion-button>
<ion-button color="light">Light</ion-button>
<ion-button color="medium">Medium</ion-button>
<ion-button color="dark">Dark</ion-button>

分层颜色

颜色由多个变量定义,包括基色、对比色、阴影和色调。例如,主颜色的变量:

  • --ion-color-primary:基色
  • --ion-color-primary-contrast:对比色
  • --ion-color-primary-shade:阴影色
  • --ion-color-primary-tint:色调色

自定义颜色

要更改默认颜色,设置所有相关变量:

:root {
  --ion-color-secondary: #006600;
  --ion-color-secondary-rgb: 0,102,0;
  --ion-color-secondary-contrast: #ffffff;
  --ion-color-secondary-contrast-rgb: 255,255,255;
  --ion-color-secondary-shade: #005a00;
  --ion-color-secondary-tint: #1a751a;
}

添加新颜色

定义新颜色类:

.ion-color-favorite {
  --ion-color-base: #69bb7b;
  --ion-color-base-rgb: 105,187,123;
  --ion-color-contrast: #ffffff;
  --ion-color-contrast-rgb: 255,255,255;
  --ion-color-shade: #5ca56c;
  --ion-color-tint: #78c288;
}

使用自定义颜色:

<ion-button color="favorite">Favorite</ion-button>
0 Answers