Angular Material 攻略 04 Icon

Icon

网页系统中的Icon虽然说很简单,但是其中的学问还是有很多的,我们常用的Icon库有FontAwesome、Iconfont等,我们选择了Angular Material这个组件库,就介绍Material Icons吧。

对Icon感兴趣的同学可以看一下这里

Material Design 的 Icon

Material Design 的 Icon大致分成两种,一种是系统Icon,另一种是产品Icon。

系统Icon

系统的Icon一般以不用文字描述就可以告诉用户操作等意义为准则,比如保存

我们看一眼就知道这个是存储。这个图像的起源勾起了小学的回忆。辣时候还是软盘?。。有兴趣的可以搜一下。。

产品Icon

产品Icon顾名思义就是某些产品对应的Icon,比如腾讯的企鹅图标,新浪的大眼睛,这部分一般由专业的设计师团队来做。就不多讲了(怕露馅)

一套好的Icon对于前端来说至关重要,好的Icon甚至可以让用户在没有文字描述的情况下正确的去操作,而不好的Icon往往会给用户错误的引导。 好在Google爸爸也给出了一套对应的图标系统Material Icons,大概由1000个Icon,足够我们日常使用了。

Material Icons

作为Google爸爸推出的官方Icon库,用起来也是很便捷的。就拿刚刚的save图标来说吧。 我们先去 Material Icons,然后在搜索框中 输入 sava

然后我们点击这个图标会出现下载SVG,PNG或者ICON FONT三种方式

我们在之前已经引入过图标库了,所以我们直接看第三种 ICON FONT 如果不需要兼容IE9以下那就(IE毒瘤)

<i class="material-icons">save</i>
复制代码

直接在HTML中插入这句话就可以了

<div>点
<i class="material-icons">save</i>
保存    
</div>
复制代码

Angular Material的MatIcon

虽然说<i class="material-icons">save</i>的方法已经很容易的,但是追求组件开发的Angular Material怎么会允许这个Tag方式的呢,所以又造出了一个MatIcon

MatIcon

首先 老样子 我们需要在使用的地方引入它

import { MatIconModule } from '@angular/material';
@NgModule({...imports: [...,MatIconModule],...
})
export class AppModule {}
复制代码

然后HTML了

<div>点
<!--<i class="material-icons">save</i>--><mat-icon>save</mat-icon>
保存
</div>
复制代码

看下效果

和之前还是一样,但是语意化了多了吧。

关于Angular Material的颜色

先放官方链接 建议配色的选择为两种主要颜色(primary color)跟次要颜色(secondary color),用来区分主要的功能颜色及强调可以选择的画面,另外在表单相关的组件上还加上了错误讯息(error message)的颜色,而在Angular Material的样式中将这三种颜色名称分别叫做primary、accent和warn。 在HTML中加上

<div>默认颜色<mat-icon>message</mat-icon>
</div><div>
primary色<mat-icon color="primary">message</mat-icon>
</div><div>
accent色<mat-icon color="accent">message</mat-icon>
</div><div>warn色<mat-icon color="warn">message</mat-icon>
</div>复制代码

看下效果

当然 这种颜色是可以通过CSS进行覆盖的,但是如果没有对设计和Material Design有较高对理解,不建议这么做,颜色之间对相互搭配,不是那么好做对。

使用其他对图标

Material Icons中对图标虽然很多,但是架不住需求啊,怎么办呢,俩办法 第一 自己公司有一套,自己画的,直接用SVG。 拿angular自己的图标举个栗子 先去下载https://angular.cn/presskit,下载单色的logo,(彩色怎么改色,真是) 然后放到src/asset/imges里

默认静态资源和网站是在一个服务器上,emm跨域自己搞定。这里不细说 先去app.component.ts 中注入需要的服务

import { MatIconRegistry } from '@angular/material';
import { DomSanitizer } from '@angular/platform-browser';
复制代码

MatIconRegisterys是用来扩充SVG icon的,DomSanitizer是用来标记信任路径的,因为angular默认开启XSS过滤,不去标记信任会GG。 然后再去对应的module中注入HttpClientModule,因为我们要下载这个SVG。

import { HttpClientModule } from '@angular/common/http';@NgModule({...imports: [...,HttpClientModule],...
})
export class AppModule {}
复制代码

然后我们加入这个SVG图标

    this.matIconRegistry.addSvgIconInNamespace('custom-svg','angular',this.domSanitizer.bypassSecurityTrustResourceUrl('assets/imges/angular.svg'));
复制代码

  • namespace:icon的namespace,方便用来分类不同的icons,也能够避免名称冲突
  • iconName:给这个icon起名
  • url(奏是那个value):一个安全的图片来源 然后我们去试一下我们自定义的Icon,用法是
<mat-icon svgIcon="namespace:iconName"></mat-icon>
复制代码

来个实例

<div><mat-icon svgIcon="custom-svg:angular"></mat-icon><mat-icon svgIcon="custom-svg:angular" color="primary"></mat-icon><mat-icon svgIcon="custom-svg:angular" color="accent"></mat-icon><mat-icon svgIcon="custom-svg:angular" color="warn"></mat-icon>
</div>复制代码

在MatIcon中使用其他Icon Font

除了用自己的图标库,还有辣么多好用的图标库,咋用呢? 拿FontAwesome举个栗子,毕竟用的人多 第五版还没摸透,拿第四版,用的人最多的版本

<link href="https://cdn.bootcss.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
复制代码

然后像刚才那样引入

    this.matIconRegistry.registerFontClassAlias('fontawesome', 'fa');
复制代码

  • alias:原来icon font class的别名,例如FontAwesome都会在class里面加上fa之后才加上fa-*,这里要设定的就是fa的别名。
  • className:原来icon font的主要class,以FontAwesome来说也就是fa

用法

 <mat-icon fontSet="alias" fontIcon="className"></mat-icon>
复制代码

示例

<mat-icon fontSet="fontawesome" fontIcon="fa-thumbs-up"></mat-icon><mat-icon fontSet="fontawesome" fontIcon="fa-thumbs-up" color="primary"></mat-icon><mat-icon fontSet="fontawesome" fontIcon="fa-thumbs-up" color="accent"></mat-icon><mat-icon fontSet="fontawesome" fontIcon="fa-thumbs-up" color="warn"></mat-icon>
复制代码

一些常用特效也是可以直接用的,比如 旋转

  <mat-icon fontSet="fontawesome" fontIcon="fa-spin"><mat-icon fontSet="fontawesome" fontIcon="fa-thumbs-up"></mat-icon></mat-icon>
复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391222.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【9303】平面分割

Time Limit: 10 second Memory Limit: 2 MB 问题描述 同一平面内有n&#xff08;n≤500&#xff09;条直线&#xff0c;已知其中p&#xff08;p≥2&#xff09;条直线相交与同一点&#xff0c;则这n条直线最多能将平面分割成多少个不同的区域&#xff1f; Input 两个整数n&am…

简述yolo1-yolo3_使用YOLO框架进行对象检测的综合指南-第一部分

简述yolo1-yolo3重点 (Top highlight)目录&#xff1a; (Table Of Contents:) Introduction 介绍 Why YOLO? 为什么选择YOLO&#xff1f; How does it work? 它是如何工作的&#xff1f; Intersection over Union (IoU) 联合路口(IoU) Non-max suppression 非最大抑制 Networ…

django:资源网站汇总

Django REST framework官网 http://www.sinodocs.cn/ django中文网 https://www.django.cn/ 转载于:https://www.cnblogs.com/gcgc/p/11542068.html

Kubernetes 入门(4)集群配置

1. 集群配置 报错&#xff1a; message: ‘runtime network not ready: NetworkReadyfalse reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized’ 原因&#xff1a;cni未被初始化&#xff08;CNI 是 Container Network In…

【例9.8】合唱队形

【例9.8】合唱队形 链接&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1264 时间限制: 1000 ms 内存限制: 65536 KB【题目描述】 N位同学站成一排&#xff0c;音乐老师要请其中的(N-K)位同学出列&#xff0c;使得剩下的K位同学排成合唱队形。 合唱队形是…

scrum流程 规划 冲刺_Scrum –困难的部分2:更快地冲刺

scrum流程 规划 冲刺In the first part, I presented my favorite list of Scrums hard parts and how to work around them. In the second part, I offer you a colorful bouquet of workarounds as well. Have fun!在第一部分中 &#xff0c;我介绍了我最喜欢的Scrum困难部分…

JAVA基础知识|lambda与stream

lambda与stream是java8中比较重要两个新特性&#xff0c;lambda表达式采用一种简洁的语法定义代码块&#xff0c;允许我们将行为传递到函数中。之前我们想将行为传递到函数中&#xff0c;仅有的选择是使用匿名内部类&#xff0c;现在我们可以使用lambda表达式替代匿名内部类。在…

数据库:存储过程_数据科学过程:摘要

数据库:存储过程Once you begin studying data science, you will hear something called ‘data science process’. This expression refers to a five stage process that usually data scientists perform when working on a project. In this post I will walk through ea…

901

901 转载于:https://www.cnblogs.com/Forever77/p/11542129.html

leetcode 137. 只出现一次的数字 II(位运算)

给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1&#xff1a; 输入&#xff1a;nums [2,2,3,2] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;nums [0,1,0,…

【p081】ISBN号码

Time Limit: 1 second Memory Limit: 50 MB 【问题描述】 每一本正式出版的图书都有一个ISBN号码与之对应&#xff0c;ISBN码包括9位数字、1位识别码和3位分隔符&#xff0c;其规定格式如“x-xxx-xxxxx-x”&#xff0c;其中符号“-”是分隔符&#xff08;键盘上的减号&#xff…

gitlab bash_如何编写Bash一线式以克隆和管理GitHub和GitLab存储库

gitlab bashFew things are more satisfying to me than one elegant line of Bash that automates hours of tedious work. 没有什么比让Bash自动完成数小时繁琐工作的Bash优雅系列令我满意的了。 As part of some recent explorations into automatically re-creating my la…

寒假学习笔记(4)

2018.2.11 类中的常成员 关键字const&#xff0c;在类定义中声明数据成员使用关键字限定&#xff0c;声明时不能初始化。初始化列表&#xff0c;类中的任何函数都不能对常数据成员赋值&#xff0c;包括构造函数。为构造函数添加初始化列表是对常数据成员进行初始化的唯一途径。…

svm和k-最近邻_使用K最近邻的电影推荐和评级预测

svm和k-最近邻Recommendation systems are becoming increasingly important in today’s hectic world. People are always in the lookout for products/services that are best suited for them. Therefore, the recommendation systems are important as they help them ma…

Oracle:时间字段模糊查询

需要查询某一天的数据&#xff0c;但是库里面存的是下图date类型 将Oracle中时间字段转化成字符串&#xff0c;然后进行字符串模糊查询 select * from CAINIAO_MONITOR_MSG t WHERE to_char(t.CREATE_TIME,yyyy-MM-dd) like 2019-09-12 转载于:https://www.cnblogs.com/gcgc/p/…

cogs2109 [NOIP2015] 运输计划

cogs2109 [NOIP2015] 运输计划 二分答案树上差分。 STO链剖巨佬们我不会&#xff08;太虚伪了吧 首先二分一个答案&#xff0c;下界为0,上界为max{路径长度}。 然后判断一个答案是否可行&#xff0c;这里用到树上差分。 &#xff08;阔以理解为前缀和&#xff1f;&#xff1f;&…

leetcode 690. 员工的重要性(dfs)

给定一个保存员工信息的数据结构&#xff0c;它包含了员工 唯一的 id &#xff0c;重要度 和 直系下属的 id 。 比如&#xff0c;员工 1 是员工 2 的领导&#xff0c;员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]] &#x…

组件分页_如何创建分页组件

组件分页The theme for week #17 of the Weekly Coding Challenge is:每周编码挑战第17周的主题是&#xff1a; 分页 (Pagination) A Pagination Component is used on websites where you have more content available than you want to display at one time to the user so …

web-项目管理

总结 目的是 1.可查询 2.方便团队管理 每个成员都可以看到任何东西 项目 需求 计划 bug 按模板来 1.问题描述 2.原因分析 3.解决方法 开发 提交代码 按模板来 1.问题描述 2.原因分析 3.解决方法 打包 更新说明文件.txt 按模板来 一、更新说明 1.问题描述 1&#xff09;计划号 2…

cnn对网络数据预处理_CNN中的数据预处理和网络构建

cnn对网络数据预处理In this article, we will go through the end-to-end pipeline of training convolution neural networks, i.e. organizing the data into directories, preprocessing, data augmentation, model building, etc.在本文中&#xff0c;我们将遍历训练卷积神…