Material(包括Material Icon)在Angular2中的使用详解


Posted in Javascript onFebruary 11, 2018

1.引入material npm包

npm install @angular/material @angular/cdk

2.新建一个ebiz-material.module.ts方便管理引入material的module

ng g module ebiz-material -app=ebiz-ui

3.在app的根module中引入ebiz-material.module.ts

import { EbizMaterialModule } from './ebiz-material/ebiz-material.module';
@NgModule({
  imports: [..., EbizMaterialModule],
  declarations: [
    ...
  ],
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})

使用material组件

1.首先在ebiz-material.module.ts中引入material组件的module,例如我们要用到checkbox

(https://material.angular.io/components/checkbox/overview),那就引入MatCheckboxModule,引入之后再exports。

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatCheckboxModule } from '@angular/material';
@NgModule({
 imports: [CommonModule, MatCheckboxModule],
 declarations: [],
 exports: [ MatCheckboxModule ]
})
export class EbizMaterialModule { }

2.在html文件中使用组件

<mat-checkbox [(ngModel)]="checked">Check me!</mat-checkbox>

使用material-icon

1.引入material-icon

npm install material-design-icons

如果下载失败(我是install失败了,也不去管它了,能用就行),可以到 github上 下载下来,然后取出iconfont文件夹放到自己的项目目录下,并且在需要用到图标的css(scss)中引入,一般情况我们会放在style.scss中全局去使用。

@font-face {
 font-family: 'Material Icons';
 font-style: normal;
 font-weight: 400;
 src: url(assets/iconfont/MaterialIcons-Regular.eot); /* For IE6-8 */
 src: local('Material Icons'),
    local('MaterialIcons-Regular'),
    url(assets/iconfont/MaterialIcons-Regular.woff2) format('woff2'),
    url(assets/iconfont/MaterialIcons-Regular.woff) format('woff'),
    url(assets/iconfont/MaterialIcons-Regular.ttf) format('truetype');
}
/* meterial icon的设定 */
.material-icons {
 font-family: 'Material Icons';
 font-weight: normal;
 font-style: normal;
 font-size: 24px; /* Preferred icon size */
 display: inline-block;
 line-height: 1;
 text-transform: none;
 letter-spacing: normal;
 word-wrap: normal;
 white-space: nowrap;
 direction: ltr;
 /* Support for all WebKit browsers. */
 -webkit-font-smoothing: antialiased;
 /* Support for Safari and Chrome. */
 text-rendering: optimizeLegibility;
 /* Support for Firefox. */
 -moz-osx-font-smoothing: grayscale;
 /* Support for IE. */
 font-feature-settings: 'liga';
}

2.在html的适当位置放上图标

<i class="material-icon">iconName<i>

使用material内置theme以及自定义theme

1.material中的组件会根据theme的不同,会有不一样的样式呈现,但是这些样式的不同只局限于material组件内部,不会影响自定义组件的样式。

2.styles.css文件名改为styles.scss,并且在angular-cli.json文件中修改为

"styles": [
    "styles.scss"
   ],

3.在style.scss文件中引入material预建主题(总共4个)

@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; 
 @import '~@angular/material/prebuilt-themes/indigo-pink.css'; 
 @import '~@angular/material/prebuilt-themes/pink-bluegrey.css'; 
 @import '~@angular/material/prebuilt-themes/purple-green.css';

4.如果觉得这些主题不适合,可以自定义主题,在styles.scss同级目录下新建一个theme.scss,并写上自定义主题的内容(https://material.angular.io/guide/theming)

@import '~@angular/material/theming';
@include mat-core();
$my-app-primary: mat-palette($mat-blue); 
$my-app-accent: mat-palette($mat-teal, A200, A100, A400); 
$my-app-warn: mat-palette($mat-red); 
$my-app-theme: mat-light-theme($my-app-primary, $my-app-accent, $my-app-warn);
@include angular-material-theme($my-app-theme);

5.在步骤3中用到了一些颜色,例如$mat-blue,可以参考这里

6.如果想要对某个组件进行主题特制,可以参考这里

7.在styles.scss中引入自定义主题

@import './theme';

总结

以上所述是小编给大家介绍的Material(包括Material Icon)在Angular2中的使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Bootstrap每天必学之标签与徽章
Nov 27 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
如何学JavaScript?前辈的经验之谈
Dec 28 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
关于Ajax的原理以及代码封装详解
Sep 08 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 Javascript
vue-form表单验证是否为空值的实例详解
Oct 29 Javascript
js实现提交前对列表数据的增删改查
Jan 16 Javascript
JavaScript代码简化技巧实例解析
Sep 09 Javascript
javascript条件式访问属性和箭头函数介绍
Nov 17 Javascript
AngularJS实现多级下拉框
Mar 25 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
Feb 11 #Javascript
Vue实现点击后文字变色切换方法
Feb 11 #Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 #Javascript
vue刷新和tab切换实例
Feb 11 #Javascript
详解如何在vue项目中引入elementUI组件
Feb 11 #Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 #Javascript
vue页面跳转后返回原页面初始位置方法
Feb 11 #Javascript
You might like
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
第一个无线电台是由谁发明的
2021/03/01 无线电
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
JS关键字变色实现思路及代码
2013/02/21 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
JavaScript对Json的增删改属性详解
2016/06/02 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
[46:27]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第一局
2016/03/02 DOTA
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
Python实现随机选择元素功能
2017/09/14 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
利用PyTorch实现VGG16教程
2020/06/24 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
中学生差生评语
2014/01/30 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
个人学习党的群众路线教育实践活动心得体会
2014/11/05 职场文书
教师个人成长总结
2015/02/11 职场文书
西安导游词
2015/02/12 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android