【封裝UI組件庫系列】封裝Icon圖標組件

封裝UI組件庫系列第三篇·封裝Icon圖標組件

🌟前言

🌟封裝Icon

1.創建Icon組件

?2.引用svg圖標庫

第一步

?第二步

?第三步

3.二次封裝

4.封裝自定義屬性

?🌟總結


🌟前言

在前端開發中,大家可能已經用過各種各樣的UI組件庫了,現在市面上熱門的有Element-uiAnt Design等等,這些即插即用的組件庫確實大大提升了開發效率,避免了很多的重復勞動,但這些組件庫再怎么完善,又怎么能滿足得了我們可愛的產品經理呢?所以工作中難免會需要開發公司內部的UI組件庫,或者基于已有組件庫進行二開。

【封裝UI組件庫系列】文章,將從0開始--》搭建項目--》封裝八大經典功能組件--》打包組件庫--》將組件庫發布至npm--》使用自己封裝的組件庫。技術方面使用的是Vue3 + Vite + Sass 來完成一個模仿Element Plus的組件庫。最終完成效果如下:

從零開始封裝UI組件庫效果演示

🌟封裝Icon

1.創建Icon組件

刪除components中的內容,新建Icon/Icon.vue?創建組件模板:

接下來在mian.js中引入并注冊自定義組件:

?2.引用svg圖標庫

因為我們不可能去一個個畫這些圖標,所以需要使用到現成的圖標庫,我這里選擇的是fortawesome圖標庫。

第一步

先安裝fortawesome核心包:

pnpm add @fortawesome/fontawesome-svg-core

免費圖標包:

pnpm add @fortawesome/free-solid-svg-icons

?Vue3版本插件:

pnpm add @fortawesome/vue-fontawesome

?第二步

在mian.js中引入注冊

?第三步

在Icon組件中使用:

3.二次封裝

因為Icon組件我們是在fortawesome的基礎上進行二次封裝,所以還是比較簡單,但實際開發中,其實會有比較多的,需要二開的情況存在,這里fortawesome提供的屬性也是比較多的,如下:

屬性名作用類型是否必須默認值
icon設置圖標String
size圖標大小String
rotation旋轉[String, Number]
flip翻轉[String, Number]
beatbeat動畫Boolean
beat-fadebeat-fade動畫Boolean
bouncebounce動畫Boolean
fadefade動畫Boolean
shakeshake動畫Boolean
spinspin動畫Boolean
spin-reversespin-reverse動畫Boolean
spin-pulsespin-pulse動畫Boolean

那這些已有的屬性我們就繼承過去,然后也來定義一個屬性練練手,因為前面一篇文章中我們已經定義了主題色,及各種類型色,那這里就來定義一個?type控制Icon類型。

新建style/components/icon.scss用來定義Icon組件樣式。

先定義一些繼承樣式并記得在樣式入口文件引入:

新建src/components/icon/props.js??這個文件用來定義屬性:

先定義一個 icon 屬性

因為icon是fortawesome自帶的屬性,所以我們可以接收一下,然后直接傳遞給fortawesome:

這時在IconView.vue文件使用 <visual-Icon icon="user-secret"></visual-Icon>?:

同理,我們可以在props.js 定義其他fortawesome支持的屬性并傳值:

// 該文件負責定義組件的屬性 props
export default {// 圖標icon: {type: String,required: true},// 大小size: {type: String},// 旋轉rotation: {type: [Number, String]},// 翻轉flip: {type: [Number, String]},// 下面是動畫效果相關的屬性beat: Boolean,bounce: Boolean,fade: Boolean,shake: Boolean,spin: Boolean,'beat-fade': Boolean,'spin-reverse': Boolean,'spin-pulse': Boolean,// 下面是自定義屬性type: String,
}

效果如下:

4.封裝自定義屬性

上面這些都是自帶的,接下來我們再來自定義一個type屬性,用來控制圖標顏色:

那怎么動態設置樣式呢?

這時候可以看到都已經掛上了對應的樣式類 :

?

接下來就是設置樣式:

這里使用的是樣式類覆蓋的方法。這也是后面會大量使用的一種控制樣式的方法。

接下來在調用一下看看效果:

如此,本篇關于Icon組件的封裝就結束了,還是比較簡單,后面篇封裝的功能會逐漸增加功能與難度。

?🌟總結

?【封裝UI組件庫系列】文章會持續更新,將帶著大家從0開始--》搭建項目--》封裝八大經典功能組件--》打包組件庫--》將組件庫發布至npm--》最后使用自己封裝的組件庫。如果文中出現有瑕疵的地方各位通過評論或者私信聯系我,我們一起進步!該系列文章建議從第一篇開始看,系列專欄地址:從零開始封裝UI組件庫完整篇

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166629.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166629.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166629.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

VUE項目部署過程中遇到的錯誤:POST http://124.60.11.183:9090/test/login 405 (Not Allowed)

我當初報了這個405錯誤&#xff0c;再網上查了半天&#xff0c;他們都說什么是nginx部署不支持post訪問靜態資源。 但后面我發現我是因為另一個原因才導致的無法訪問。 我再vue中有使用devServer:{ proxy:{} }進行路由轉發。 但是&#xff01;&#xff01; 在這個配置只…

接口測試學習路線

接口測試分為兩種&#xff1a; 測試外部接口&#xff1a;系統和外部系統之間的接口 如&#xff1a;電商網站&#xff1a;支付寶支付 測試內部接口&#xff1a;系統內部的模塊之間的聯調&#xff0c;或者子系統之間的數據交互 測試重點&#xff1a;測試接口參數傳遞的正確性&…

node與 pnpm、node-sass 等工具的版本兼容關系

1. node & pnpm 2. node & node-sass 3. node-sass & sass-loader sass-loader依賴于node-sass&#xff0c;以下是部分版本號對應

Zookeeper 集群中是怎樣選舉leader的

zookeeper集群中服務器被劃分為以下四種狀態&#xff1a; LOOKING&#xff1a;尋找Leader狀態。處于該狀態的服務器會認為集群中沒有Leader&#xff0c;需要進行Leader選舉&#xff1b;FOLLOWING&#xff1a;跟隨著狀態&#xff0c;說明當前服務器角色為Follower&#xff1b;LE…

Jmeter基礎和概念

JMeter 介紹&#xff1a; 一個非常優秀的開源的性能測試工具。 優點&#xff1a;你用著用著就會發現它的重多優點&#xff0c;當然不足點也會呈現出來。 從性能工具的原理劃分&#xff1a; Jmeter工具和其他性能工具在原理上完全一致&#xff0c;工具包含4個部分&#xff1a; …

綠色能源守護者:光伏運維無人機

隨著我國太陽能光伏產業被納入戰略性新興產業&#xff0c;光伏發電成為實現“雙碳”目標的關鍵之一。在政策支持下&#xff0c;光伏產業維持高速發展&#xff0c;為迎接“碳達峰、碳中和”大勢注入了強大動力。在這一背景下&#xff0c;復亞智能與安徽一家光伏企業合作&#xf…

LeetCode78. Subsets

文章目錄 一、題目二、題解 一、題目 Given an integer array nums of unique elements, return all possible subsets (the power set). The solution set must not contain duplicate subsets. Return the solution in any order. Example 1: Input: nums [1,2,3] Outpu…

size和shape的區別與聯系

對于Numpy數據類型 shape和size都是屬于Numpy的屬性 arr.shape 將返回一個包含兩個元素的元組&#xff0c;例如 (m, n)&#xff0c;其中 m 表示數組的行數&#xff0c;n 表示數組的列數。arr.size 將返回數組中元素的總數。 舉例: 輸入&#xff1a; import numpy as np# 創…

JavaScript之DOM操作

第一章 API介紹 ?API是一種事先定義好的函數&#xff0c;用來提供應用程序與開發人員基于某軟件或硬件得以訪問的一組例程&#xff0c;而又無需訪問源碼&#xff0c;或理解內部工作機制的細節。 ?Web API接口&#xff1a;瀏覽器提供的一系列操作瀏覽器功能和頁面元素的API(BO…

【Linux】Linux的常用基本指令

Linux常用基本指令 Linux指令的歷史背景前言說明一、 ls 列出文件中的所有內容常用選項 二、pwd 顯示當前所在目錄進程三、cd 將當前工作目錄改變到指定的目錄下常用樣例 四、touch 1. 更改文檔或目錄的日期時間 2. 新建一個不存在的文件常用選項 四、mkdir 1. 更改文檔或目錄的…

牛客劍指offer刷題回溯篇

文章目錄 矩陣中的路徑題目思路代碼實現 機器人的運動范圍題目思路代碼實現 矩陣中的路徑 題目 請設計一個函數&#xff0c;用來判斷在一個n乘m的矩陣中是否存在一條包含某長度為len的字符串所有字符的路徑。路徑可以從矩陣中的任意一個格子開始&#xff0c;每一步可以在矩陣…

TensorFlow實戰教程(二十五)-基于BiLSTM-CRF的醫學命名實體識別研究(下)模型構建

這篇文章寫得很冗余,但是我相信你如果真的看完,并且按照我的代碼和邏輯進行分析,對您以后的數據預處理和命名實體識別都有幫助,只有真正對這些復雜的文本進行NLP處理后,您才能適應更多的真實環境,堅持!畢竟我寫的時候也看了20多小時的視頻,又寫了20多個小時,別抱怨,加…

JS按順序逐個發送 請求

1.使用Promise鏈 當需要按順序逐個發送 POST 請求時&#xff0c;可以使用 Axios 庫的 Promise 鏈來實現。在每個 POST 請求成功后&#xff0c;可以觸發下一個請求。這里有一個簡單的示例&#xff1a; 首先&#xff0c;確保已經在 HTML 文件中引入了 Axios 庫&#xff1a; &l…

控制反轉(IoC)是什么?

文章目錄 控制反轉&#xff08;Inversion of Control&#xff0c;IoC&#xff09;傳統的程序設計中&#xff1a;應用程序控制程序流程控制反轉設計中&#xff1a;由框架或容器控制程序流程IoC 的作用 舉例生活例子軟件工程例子 控制反轉&#xff08;Inversion of Control&#…

組合不重復的3位數

編程要求 給出四個不同的數字&#xff0c;能夠組成多少個不重復的3位數&#xff0c;按照從小到大的順序輸出&#xff0c;每行一個。 測試用例 測試輸入 1 2 3 4 測試輸出 123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 …

算法:給出指定整數區間、期望值,得到最終結果

1&#xff0c;問題&#xff1a; 在游戲中&#xff0c;我們經常會遇到以下情況&#xff1a;打開寶箱&#xff0c;獲得x個卡牌碎片。 但通常策劃只會給一個既定的數值空間&#xff0c;和一個期望得到的值&#xff0c;然后讓我們去隨機。比如&#xff1a; 問題A&#xff1a;在1~…

問卷調查平臺選擇指南:哪個好用與如何選擇的實用指南

問卷調查由于其成本低、數據可量化的特點&#xff0c;常被用于工作和學習中。網絡的發展使得問卷調查的形式也越累越多樣化&#xff0c;不少人在做問卷調查的時候可能都會提出這樣一個問題——問卷調查平臺哪個好用&#xff1f;怎么選擇&#xff1f; 選擇問卷調查平臺&#xf…

ubuntu22.04 arrch64版在線安裝redis

腳本 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 echo "deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse" >…

可以ping通IP但是無法遠程連接-‘telnet‘ 不是內部或外部命令,也不是可運行的程序或批處理文件

起因 一開始遠程連接IP&#xff0c;報錯&#xff0c;懷疑是自己網絡原因&#xff0c;但是同事依舊無法連接 懷疑是自己防火墻的原因&#xff0c;查看關閉依舊無法連接 問題 兩個地址可以ping通排除防火墻緣故 懷疑端口&#xff0c;測試端口 然 解決方案 winR 輸入control…

常見立體幾何圖形的體積

文章目錄 abstract祖暅原理推論 棱錐和圓錐的體積用積分的方法推導棱臺和圓臺的體積圓臺體積公式 球體的體積球體的表面積 abstract 錐體和球體的體積公式主要通過積分的方法推導 這類公式的推導中學一般不要求,只要會應用公式在高等數學中由合適和方便的工具來推導這些公式而…