当前位置:   article > 正文

Angular Material 攻略 03 angular Material Design 安装

angular/material mobile

Material Design

Material Design是由Google推出的一套视觉设计语言,从设计准则、动画、配色等方面做出了详尽的规定, 但是Material Design只是一套设计准则和bootstrap这类CSS框架相比,并没有直接的CSS可用。 目前有几个比较有名的实现 比如Google官方的Material Design Lite支持多平台的Material Components 还有Materialize等。

这些css框架可以让小公司和没有什么美感的程序员也能轻易设计出简单、大方、富有美感的网页。

Angular Material

Angular 是Google推出的主力前端框架, Material Design 是谷歌设计的方向,自然为angular量身打造了一套组件库Angular Material。相比于ngx-bootstrap、primeng或者国内的NG-ZORRO等 Angular Material的质量是最高的(勿喷)所以我就选择它作为本次教程的UI框架。

安装Angular Material

在01 我们已经跑起来了Hello Word ,不过太丑了。我们先把Angular Material装起来。

  1. npm install --save @angular/material @angular/cdk
  2. 复制代码

在国内的话,有时候网络状况比较差,可以先安装nrm来测试各个源 然后再安装

  1. npm i -g nrm
  2. 复制代码

然后测试

  1. nrm test
  2. 复制代码

我这里的结果是

  1. npm ---- 712ms
  2. cnpm --- 249ms
  3. * taobao - 211ms
  4. nj ----- Fetch Error
  5. rednpm - Fetch Error
  6. npmMirror 975ms
  7. edunpm - Fetch Error
  8. 复制代码

淘宝源最快那就选择淘宝

  1. nrm use taobao
  2. 复制代码

这时候出现

  1. Registry has been set to: https://registry.npm.taobao.org/
  2. 复制代码

我们就可以继续去安装Angular Material

加入项目中

  1. angular-tutorial\demo-angular\src\app\app.module.ts
  2. 复制代码

打开 AppModule 然后引入BrowserAnimationsModule

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3. import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
  4. import { AppRoutingModule } from './app-routing.module';
  5. import { AppComponent } from './app.component';
  6. @NgModule({
  7. declarations: [
  8. AppComponent
  9. ],
  10. imports: [
  11. BrowserModule,
  12. AppRoutingModule,
  13. BrowserAnimationsModule
  14. ],
  15. providers: [],
  16. bootstrap: [AppComponent]
  17. })
  18. export class AppModule { }
  19. 复制代码

或者不想写动画,或者因为动画的原因导致卡顿 直接关闭

  1. import { NoopAnimationsModule } from '@angular/platform-browser/animations';
  2. @NgModule({
  3. ...
  4. imports: [
  5. ...
  6. NoopAnimationsModule
  7. ],
  8. ...
  9. })
  10. export class AppModule { }
  11. 复制代码
@angular/animations兼容性

因为@angular/animations使用了WebAnimation API 所以如果想要支持较老版本的浏览器 需要引入web-animations.js 先去下载

  1. npm install --save web-animations-js
  2. 复制代码

然后引入 在src/pollyills.ts找到import 'web-animations-js' 取消掉注释

  1. /**
  2. * Required to support Web Animations `@angular/platform-browser/animations`.
  3. * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
  4. **/
  5. import 'web-animations-js'; // Run `npm install --save web-animations-js`.
  6. 复制代码

加入使用的组件

比如我们要使用Angular Material的button,我们就可以直接在AppModule直接引入

  1. import {BrowserModule} from '@angular/platform-browser';
  2. import {NgModule} from '@angular/core';
  3. import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
  4. import {AppRoutingModule} from './app-routing.module';
  5. import {AppComponent} from './app.component';
  6. import {MatButtonModule} from '@angular/material';
  7. @NgModule({
  8. declarations: [
  9. AppComponent
  10. ],
  11. imports: [
  12. BrowserModule,
  13. AppRoutingModule,
  14. BrowserAnimationsModule,
  15. MatButtonModule
  16. ],
  17. providers: [],
  18. bootstrap: [AppComponent]
  19. })
  20. export class AppModule {
  21. }
  22. 复制代码

然后在module下的Component就可以直接用了

  1. <button mat-raised-button color="primary">Primary</button>
  2. 复制代码
公共组件

在较为复杂的项目中,有时候我们会将常用的MatXXXModule先import进来然后再export出去,这样我们就可以在其他module只导入这个module就好了。 先用CLI生成shared-material module 然后去导入他

  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { MatButtonModule } from '@angular/material';
  4. @NgModule({
  5. imports: [MatButtonModule], // 先import
  6. exports: [MatButtonModule] // 再export
  7. })
  8. export class SharedMaterialModule {}
  9. 复制代码

在使用他的module中导入 比如在AppModule中

  1. import {BrowserModule} from '@angular/platform-browser';
  2. import {NgModule} from '@angular/core';
  3. import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
  4. import {AppRoutingModule} from './app-routing.module';
  5. import {AppComponent} from './app.component';
  6. import {SharedMaterialModule} from './shared-material/shared-material.module';
  7. @NgModule({
  8. declarations: [
  9. AppComponent
  10. ],
  11. imports: [
  12. BrowserModule,
  13. AppRoutingModule,
  14. BrowserAnimationsModule,
  15. SharedMaterialModule
  16. ],
  17. providers: [],
  18. bootstrap: [AppComponent]
  19. })
  20. export class AppModule {
  21. }
  22. 复制代码

如果在SharedMaterialModule中并没有Component使用外部的话可以直接export导出

  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { MatButtonModule } from '@angular/material';
  4. @NgModule({
  5. exports: [MatButtonModule] // 直接export
  6. })
  7. export class SharedMaterialModule {}
  8. 复制代码

关于ngmodule可以戳这里

自定义主题

前端的组件怎么能少得了样式呢,目前官方提供四种主题我们可以在

  1. @angular/material/prebuilt-themes/
  2. 复制代码

中查看,也可以直接在官网的右上角切换,查看效果 官方网址

先去style.scss中引入主题

  1. @import "~@angular/material/prebuilt-themes/indigo-pink.css";
  2. 复制代码

这样Angular Material的样式就算是补全了

支持手势

在PC端和移动端有些交互是不一样的,比如tooltipz在PC端只要鼠标滑过就会显示,但是在mobile上需要长按才出现,所以Angular Material一些组件(mat-slide-toggle,mat-slider,matTooltip)依靠HammerJS的支持了手势。为了获得完整的功能集这些组件,HammerJS必须加载到应用程序 先安装

  1. npm install --save hammerjs
  2. 复制代码

然后在angular CLI 中引入

  1. "scripts": [
  2. "./node_modules/hammerjs/hammer.min.js"
  3. ],
  4. 复制代码

或者直接在项目入口,比如main.ts中加入

  1. import 'hammerjs';
  2. 复制代码

Material Icons

直接在index.html加入

  1. <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
  2. rel="stylesheet">
  3. 复制代码

是不是够简单

提示

之前Angular Material的前缀是mdXxxx或md-xxxx的在Angular Material 5之后都统一改成matXxxx或mat-xxxx了,复制粘贴的时候注意一下,如果是老版本的写法就改一下

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号