「站在上帝的角度」谈谈Element组件结构-Icon

简介: 「站在上帝的角度」谈谈Element组件结构-Icon

👋 前言


  • 用户就是上帝,站在上帝的角度也就是站在使用者的角度去看待组件。
  • 用过不少优秀的UI库,用的时候美滋滋,轮到自己搭组件库的时候往往会去参考别人的源码。
  • 看完源码后恍然大悟 噢!原来可以这样写,但心里难免会有疑惑别人是怎么想出来这种解决思路的?🤳
  • 这一系列文章主要是面向未理解或者有疑惑的同学所以讲的比较基础,就让我们站在用户的角度去思考结构,看看换一种思路去写代码是不是有变化?


关于Icon组件


🙇 为什么我们会用到Icon


👨‍💼 作为用户

  • 一个很简单的例子,如果一个按钮是有图案并且颜色鲜艳的,另外一个按钮只是单调的一个方块,哪一个看上去会更舒服呢?
  • 一个页面中不仅仅只有图片和文字组成,还应该有各种各样的icon搭配而成。


👨‍💻 作为组件库使用者

  • 我们可以看到很多的组件库都有Icon,相信每个组件库的第一个组件都应该是Icon
  • 当我们将组件库的Icon组件放到我们的页面我们想要的效果是什么?
  • 一个个好看能代表组件库风格的图标。
  • 可以添加类名使用。
  • 图标足够多可以选择。


搭建组件


接下来可能用尽可能少的代码搭配element的源码进行结构说明,配合element Icon源码食用更加美味喔


准备图标

  • 要设计一个上图这种的Icon可以说是很简单,我们只需要引入我们的所有图标样式即可,有一些可能是svg也有的是通过伪类获取。
  • 总结起来总共也只有3个要点
  • 首先我们要准备一套图标,可以由自己的设计师设计也可以去网上找。
  • 给这些图标都统一前缀并设置不同的后缀名称。
  • icon组件中通过不同的图标名称来分别渲染不同组件。
  • 我们可以在iconfont库中来选择一些设计师已经设计好的图标。

  • 可以自己一个个选择也可以直接用现成的一整套图标,接下来我就用一整套现成的来演示。
  • 首先进入一套图标的选择页面,可以看到他只有一个个的加入购物车,我们可以打开f12输入这段代码。
var span = document.querySelectorAll('.icon-cover');
for (var i = 0, len = span.length; i < len; i++) {
     console.log(span[i].querySelector('span').click());
}

  • 可以看到我们选择了这180个图标进入了购物车,点击添加至项目。

  • 这样这些我们就可以设置前缀名称了,点击项目设置,给他们都加一个前缀名。

  • 完成后我们将这些图标全部下载到本地。


资源引入

  • 刚刚下载后会有很多文件我们只需要用到这四个就可以了。

  • 在自己的项目中引入iconfont.css,记得在iconfont.css的开头引用图标的时候要设定相对于的相对路径,每个人的项目因人而异。
@font-face {
  font-family: "iconfont"; /* Project id 2692054 */
  src: url('fonts/iconfont.woff2') format('woff2'),
       url('fonts/iconfont.woff') format('woff'),
       url('fonts/iconfont.ttf') format('truetype');
  font-weight: normal;
  font-display: auto;
  font-style: normal;
}
  • 这样一来其实我们项目中直接加上这个类名就可以了,他会找到相对应的类名来获取伪元素,更多样式说明可以看到element 样式


更多需求

  • 这样一个icon组件就已经做好了,只要我们通过样式来找到相应的图标就可以啦。
  • 当然elementIcon对个别的图标也做了动画处理,比如这个loading图标。

  • 其实也就是给这个类名加上一个循环播放的动画而已。
.el-icon-loading {
  animation: rotating 2s linear infinite;
}
  • 好了这次的组件结构就分享到这里啦,更多的实现可以参考传送门进行学习~


👋 写在最后


  • 总的来说Icon组件相对于其他组件基本上不用操作什么,只需要我们把图标库引入就可以啦。
  • 对于组件库的搭建我也在慢慢的摸索,讲的都是我自己得出来的分享所以说可能对于大佬来说会比较基础,但我相信我的不断输出可以帮助到一些有疑惑的同学。
  • 如果您觉得这篇文章有帮助到您的的话不妨🍉关注+点赞+收藏+评论+转发🍉支持一下哟~~😛
相关文章
|
安全
在钉钉中,Stream 模式审批回调怎么弄?
在钉钉中,Stream 模式审批回调怎么弄?
744 1
|
6月前
|
人工智能 搜索推荐 大数据
2025年电商API发展趋势:智能化与个性化
2025年,电商API在人工智能与大数据推动下加速智能化、个性化发展。从智能库存预警到情境感知推荐,技术驱动效率跃升与体验升级。预计个性化API调用占比达75%,智能决策渗透率超90%,开发成本下降60%。电商API正从“功能连接器”进化为“智能服务中枢”,重构用户体验与商业生态。
235 0
|
10月前
|
自然语言处理 搜索推荐 前端开发
大模型联网搜索的短板与突破之路
本文作者详细分析了当前大模型在联网搜索功能中存在的几个主要问题,并提供了具体的案例和解决方案。
1748 8
大模型联网搜索的短板与突破之路
|
IDE 搜索推荐 Devops
无法停止服务、无法终止 PID 4100 的进程
无法停止服务、无法终止 PID 4100 的进程
329 0
|
安全 Java Shell
Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx
Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx
2021 0
ThreeJs模拟工厂生产过程二
这篇文章详细介绍了如何使用Three.js创建一个模拟工厂车间的3D模型,包括绘制地面和墙面的具体步骤,并特别关注于如何创建带有门的墙面以增加车间的真实性。
439 5
|
存储 安全 NoSQL
Cookie、Session、Token 解析
Cookie、Session、Token 解析
866 1
|
前端开发 JavaScript Linux
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
若依修改之后,无法访问前端项目如何解决,只能访问后端的接口,我的接口8083,端不显示咋解决?在vue.config.js文件中的映射路径要跟后端匹配,到软件商店里找到Ngnix配置代理,设80不用加
|
XML 前端开发 测试技术
安卓架构模式:MVC、MVP、MVVM及更多
【4月更文挑战第13天】本文探讨了安卓应用开发中的常见架构模式,包括MVC、MVP和MVVM,以及VIPER和Clean Architecture。MVC分离关注点,易于理解,但安卓不直接支持。MVP通过呈现器实现更清晰的分层和便于单元测试。MVVM利用数据绑定简化UI逻辑,适合声明式编程。开发者应根据项目需求、团队技能和维护周期选择合适架构,随着工具和框架的进步,未来将提供更多模块化、可测试性和敏捷性的解决方案。
686 7

热门文章

最新文章