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 相关文章推荐
javascript制作loading动画效果 loading效果
Jan 14 Javascript
js实现的简单radio背景颜色选择器代码
Aug 18 Javascript
node.js实现端口转发
Apr 14 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
AngularJS中的API(接口)简单实现
Jul 28 Javascript
TableSort.js表格排序插件使用方法详解
Feb 10 Javascript
自制简易打赏功能的实例
Sep 02 Javascript
微信小程序input框中加入小图标的实现方法
Jun 19 Javascript
React router动态加载组件之适配器模式的应用详解
Sep 12 Javascript
解决layui弹出层layer的area过大被遮挡的问题
Sep 21 Javascript
解决vue的router组件component在import时不能使用变量问题
Jul 26 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 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
第五节 克隆 [5]
2006/10/09 PHP
解析php file_exists无效的解决办法
2013/06/26 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
2015/11/09 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
PHP在弹框中获取foreach中遍历的id值并传递给地址栏
2017/06/13 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
javascript中的new使用
2010/03/20 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
在vue中通过axios异步使用echarts的方法
2018/01/13 Javascript
React+Antd+Redux实现待办事件的方法
2019/03/14 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
javascript 数组(list)添加/删除的实现
2020/12/17 Javascript
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python调用百度语音REST API
2018/08/30 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Python数据类型之List列表实例详解
2019/05/08 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
python实现经纬度采样的示例代码
2020/12/10 Python
Lacoste澳大利亚官网:服装、鞋类及配饰
2018/11/14 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
五一服装活动方案
2014/01/11 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
2014年人事部工作总结
2014/12/03 职场文书
总结Python使用过程中的bug
2021/06/18 Python