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.pswp.cn/news/391222.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391222.shtml
英文地址,請注明出處:http://en.pswp.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;我們將遍歷訓練卷積神…